1、确认数据接口,通过观察,我们发现XHR的请求返回值均是加密的,所以这里我们暂时先随便找一个接口破解一下,这么做是因为我猜测他的加密和解密逻辑是一套逻辑,这里我们以companyAjax.json这个接口位例子。 2、分析下请求参数的情况和返回值的情况,都是加密的,其中请求头中也有一些看似密文的字段,但是经过测试,其中不用变更就可以拿到数据,所以暂时我们先只解决请求体的加密和返回值的解密问题 3、打上XHR断点,通过调用堆栈,我们找到了一个控制路,发现data的赋值流程,是从上面w的值过来的,加密逻辑都在这里,我们打上断点,看看参数,以及返回值看看,通过控制台,我们确认了请求的参数,以及加密后的加密值 4、通过代码分析,我们发现A.$Z("?".concat(s))的作用就是将字符串变成了对象。这里我们都不用做处理,直接将对象给他用,更方便我们调节代码的机动性 5、通过控制台,我们确认了最终的data是从前面的w再加上urlencode编码和解码生成的 6、逆向w的值,将段点打在生成的关键函数T.q6上,进去看看这个函数做了什么,进去后我们发现就是一个aes加密。这下简单了。只需要找到key,iv就可以解决问题。 7、代码模拟试试看,对齐参数后和原网页核对,一摸一样 8、最终的data生成值,只需要微调一下代码就可以了,与原网页核对,一模一样 9、模拟请求的代码整合,成功获取请求,拿到的返回值一致 10、返回值解密部分,通过调用堆栈,我们找到了请求成功后的回调函数。这里我们确认了解密位置T.ow,点进去看看是个什么逻辑 11、进去之后发现是个aes解密,只需要找到key,iv就可以解决问题。 12、代码模拟,对齐参数解密试试看,发现解密成功 13、代码整合,解密成功 14、彩蛋:在这里咱们只是联系下js的熟练度,真正的数据,其实是个静态页面,哈哈