注意:文章内容仅用于学习和技术交流,如有侵权请联系我删除。
学者应洁身自好,切勿做出违法的事情,旨在提供逆向思路。
aHR0cHM6Ly93d3cueW91enkuY24vdHp5L3NlYXJjaC9jb2xsZWdlcy9jb2xsZWdlTGlzdA==
问题分析:
请我们请求上方url时,会出现国内大学的列表,通过不断往下滑动,会发现该数据为ajax动态加载,通过netword工具很轻易就能找到api接口:
Response数据返回:
通过分析api接口可知,在请求Headers中包含一个动态加密参数“u-sign”,每次页面刷新,值都在随时变化,只要破解此参数,除了页码为动态设置外,其他都可设为固定值。
逆向开始:
我们搜索关键词“u-sign”,可以得到一条数据:
点开后,很显然地看到“u-sign” 的值为函数 i 的返回值:
我们设置断点,进行动态调试后,可以看到函数 i 其实调用了匿名函数:
跟进去:
找到了加密函数所在,加密逻辑一目了然~~~~
参数e 和 t 均为已知数据:
e : 为api请求接口的后半部分;
t : 看着很熟悉吧?是的,就是api请求post过去的参数;
加密函数的处理逻辑并不复杂,结果得到变量a,最后使用n函数进行处理:
我们跟进去看下n函数,发现调用的仍为匿名函数:
跟进去:
根据代码中所涉及的函数与变量,只要往上面稍微翻一翻就能找到:
。。。。。。
剩余的截图就不贴了,完整代码会放在文末处。
通过以上的分析, 我们把相应的函数与变量复制粘贴到本地js文件里,补全环境与代码,稍作更改,就可以正常运行了。。。
比如:
当我们直接刷新页面时,找到api接口,观察数据:
请求参数:
结果返回:
我们看下Headers中的u-sign的值:
这时,我们构造本地js文件,补全参数后:
完全正确。
当然,当需要搜索时,你只需要把请求参数中的“keyword”设置为你的搜索关键字,就ok了:
u-sign:
本地js模拟: