本次逆向站点
aHR0cHM6Ly93d3cubWFvbWFvenUuY29tLyMvYnVpbGQ=
反爬措施
打开该网站,点击下一页,网址没有出现任何变化,说明数据是通过ajax请求返回的。
打开控制台,点击下一页,抓包结果如下:
2.1 发现只有这一个请求出来,并且请求参数和响应结果都是经过加密的。故需要解决的问题如下:
找到原始的请求参数,并找到加密方法,把请求参数加密的过程还原出来;
找到对响应数据解密的关键函数,把响应结果还原成明文数据。
破解过程
请求参数加密的还原
1.1 全局搜索关键字 `encrypt(`, 搜素结果如下图所示:
1.2 点击进入这两个js文件中,重新搜索 `encrypt(` 这个关键字,只有四个地方包含这个关键字。在每个地方都打上断点之后,重新点击下一页。断点生效在如下入所示的位置:
左边的横线不知道什么情况,可能是谷歌更新的问题吧,不过问题不大,不影响断点生效。
1.3 如图所示,`a`的值就是加密前的请求参数。并在控制太输出 `o.default.aes_encrypt(JSON.stringify(a))` 结果如下:
说明这个位置就是请求参数加密的位置。
1.4 把鼠标放在如下图所示的位置,并点击进入函数中:
1.5 需要注意的是:
通过分析,k的返回值就是对 `www_maomaozu_com` 进行md5加密,并取前十六位。可以为定值 `55b3b62613aef1a0`。
e函数就是一个标准的aes加密了。可以使用node中的`crypro-js`模块实现。
2 响应结果的还原
2.1 如上图所示,该位置和请求参数加密的位置在同一个js文件。
2.2 经过分析,最终还原的方法也是aes方法
3 总结
总体来说,难度不大,该网站中,请求参数的加密以及响应结果的还原都是aes方法。都可以通过node中的`crypro-js`模块实现。