1美团mtgsig

认识一大佬,告诉我,只要我们大眼一扫,搞不定,立马就放弃,这个我深有体会!

当你第一眼看到以下mtgsig的值之后,还有多少人会想着去搞定它呢?

打开网易新闻 查看更多图片

2难点分析

  1. 全局搜不到mtgsig
  2. 值是json,key是很宽泛的值,无法进行搜索定位
  3. 生成这段值的代码是某种方式膨胀的,很难去读懂和调试

打开网易新闻 查看更多图片

3办法

这种代码再去单步调试,简直就是噩梦,始终无法进行下去。

简洁的办法就是全盘复制下来,什么都不要改,就开始运行。

打开网易新闻 查看更多图片

报什么错,补什么环境,比如

XMLHttpRequest is not defined, 直接补相关的环境

打开网易新闻 查看更多图片

然后接着运行,直到全部都补完,直接运行不报错

打开网易新闻 查看更多图片

紧接着是找入口函数

直接console.log(window),看有没有特殊的关键字或者对象。

打开网易新闻 查看更多图片

反过来,在网页上全局搜索h5guard关键字,目的是看在哪里开始调用的。

打开网易新闻 查看更多图片

全部复制到代码下面,继续调试,根据报错的行数,在浏览器中看需要补充什么或者要hardcode什么 ,直到没有报错信息,打印window.H5guard

打开网易新闻 查看更多图片

init之后多出了一个sign方法,这个我们盲猜是header里面的 mtgsig生成的方法

调用这个方法,传入一个空对象window.H5guard.sign({})

打开网易新闻 查看更多图片

果然看到了我们想要的内容。

接着去看页面调用这个传入的是什么。

点击接口的启动器,点击进入加密的前一个js文件,打上断点。

打开网易新闻 查看更多图片

再次刷新页面,或者下滑获取更多数据,我们就很清晰地知道传入的参数是什么了

打开网易新闻 查看更多图片

直接编写代码进行测试。

打开网易新闻 查看更多图片

完成!

学以致用,共同进步