前言
只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!
网址: aHR0cHM6Ly9tZWlzaGkubWVpdHVhbi5jb20vaS8=
node环境肯定要有的
分析过程就不说了 其他人的文章都写的有大同小异
刷新页面 找到这个负责生成的js文件down下来
创建npm项目 安装依赖 npm init
jsdom不说了肯定要有的 npm install jsdom
搭建好如图 H5Guard.js一共6000多行代码(index.js忽略 RPC调用)
直接运行 开始补环境node H5Guard.js
最基础的架子 剩下的缺啥补啥就行了 从window拿或者自己构造
const { JSDOM } = require('jsdom');
const dom = new JSDOM(`<!DOCTYPE html></html>`, {
url: '填url'
});
window = dom.window
补完后来到网页看看后续要做的事 控制台可以打印一下这个方法 这个就是生成mtgsig的方法(分析别的文章都有 不在赘述) 调用sign方法即可生成 返回的是一个Promise
注意其中是有init和initWithKey方法的 应该是要先进行初始化的
先不使用init直接运行测试一下
const { H5guard } = window;
if (H5guard) {
const mtgsig = H5guard.sign({});
console.log(mtgsig);
} else {
console.log('H5guard 加载失败')
}
注意这里自己生成的a3是时间戳+字符串形式 而正常的只是字符串
可以生成 但是应该是要进行init的
找到启动器
照抄下来 运行没问题
const { H5guard } = window;
if (H5guard) {
H5guard.initWithKey({...});
const mtgsig = H5guard.sign({});
console.log(mtgsig);
} else {
console.log('H5guard 加载失败')
}
然后就剩下sign方法的入参了 直接说结果 找到这里在这里打断点然后浏览页面就会进入断点 就是文件最后面一大堆switch case的那个方法 圈出来的即为入参
然后就是测试了 我这里用的java和node rpc调用 node负责生成mtgsig java负责运行(为什么不用py 因为习惯用java了)
代码就不贴了 注意cookie和header能补全就补全
但是跑出来都是空数据 不知道什么情况还得分析
一些分析
mtgsig的a3的值和cookie中WEBDFPID的值是完全相同的 web指纹
可以看到直接生成的a3是时间戳+字符串形式 而正常的a3是字符串
重新换了个目标网址 发现是可以正常请求获取数据的
aHR0cHM6Ly9oNS53YWltYWkubWVpdHVhbi5jb20vd2FpbWFpL21pbmRleC9ob21lP3R5cGU9bWFpbl9wYWdl
如图
再用easyexcel导出 完美