1美团mtgsig
认识一大佬,告诉我,只要我们大眼一扫,搞不定,立马就放弃,这个我深有体会!
当你第一眼看到以下mtgsig的值之后,还有多少人会想着去搞定它呢?
2难点分析
- 全局搜不到mtgsig
- 值是json,key是很宽泛的值,无法进行搜索定位
- 生成这段值的代码是某种方式膨胀的,很难去读懂和调试
3办法
这种代码再去单步调试,简直就是噩梦,始终无法进行下去。
简洁的办法就是全盘复制下来,什么都不要改,就开始运行。
报什么错,补什么环境,比如
XMLHttpRequest is not defined, 直接补相关的环境
然后接着运行,直到全部都补完,直接运行不报错
紧接着是找入口函数
直接console.log(window),看有没有特殊的关键字或者对象。
反过来,在网页上全局搜索h5guard关键字,目的是看在哪里开始调用的。
全部复制到代码下面,继续调试,根据报错的行数,在浏览器中看需要补充什么或者要hardcode什么 ,直到没有报错信息,打印window.H5guard
init之后多出了一个sign方法,这个我们盲猜是header里面的 mtgsig生成的方法
调用这个方法,传入一个空对象window.H5guard.sign({})
果然看到了我们想要的内容。
接着去看页面调用这个传入的是什么。
点击接口的启动器,点击进入加密的前一个js文件,打上断点。
再次刷新页面,或者下滑获取更多数据,我们就很清晰地知道传入的参数是什么了
直接编写代码进行测试。
完成!
学以致用,共同进步