如此分析,我们逐渐捋清思路,得知每一个请求都需要解出哪些加密参数,我就不在这里花费大量篇幅做细致描述了。
之后针对这些参数名,查看 JavaScript 代码中是如何加密的,然后用python代码解析出来.....
2. 代码反混淆(是一种代码保护机制)
我们点击 slide.xxx.js 文件,跳转到 Chrome Sources 菜单栏,查看 JavaScript 代码。
想查看 JavaScript 代码对请求参数的加密逻辑可没那么容易,极验做了大量的混淆工作,为的是提高我们的破解难度。
可以看到,代码基本不是我们凡人所能看懂的。它对代码进行了 Unicode 编码,并且加上了大量的混淆代码。这导致我们直接搜 challenge 这些关键参数名,是找不到相关代码的。
那么,我们首先将完整的 JavaScript 代码 copy 出来,先到网上找一个 Unicode 编码还原工具,对代码进行 Unicode 解码。解码之后,复制到编辑器中,搜索 challenge,发现了几个关键的参数。
此时的代码依然难以解读,可读性几乎为零,一般的小伙伴都要放弃了,太烧脑了,因为极验对每个关键参数都进行了混淆,混淆的逻辑就是使用类似这种 UtTS 的代码进行替换,逻辑也藏在 JavaScript 代码中,具体就不展开了。我们对其进一步还原。还原之后,代码如下:
代码的可读性也是越来越清晰,还有一个问题是:怎么还有很多这种 var xow_list = uklgT.xow 莫名其妙的代码。我们研究发现,这其实是极验加入的冗余代码,主要目的是为了混淆视听。
列如,对于这样的冗余代码: