url:'aHR0cHM6Ly9zb3VrZS54ZGYuY24vc2VhcmNoP2NpdHlDb2RlPTExMDEwMCZrdz0lRTglOEIlQjElRTglQUYlQUQ='
一、加密位置定位
数据包为search?appid这个包,废话不多说直接请求堆栈跟栈,打上断点断住,上下观察竟然第一个栈就看到了加密位置。
跟进ve方法,其返回一个对象,params鼠标悬浮发现就是我们的请求体,sign就是调用了$e方法对t+Ke.b进行加密,进去$e方法发现有很多bytesToString,bytesToHex什么的,很像标准算法,根据;sign的长度怀疑是md加密。测试后果然是!
二、主要代码
多刷新几次就会发现Ke.b是定值。那就简单了,直接引库。
const CryptoJs=require('crypto-js')
function get_data(params) {
//params="appId=5053&cityCode=110100&t=1714409925626&pageIndex=5&pageSize=12&keyword=%E8%8B%B1%E8%AF%AD&order=0"
return CryptoJS.MD5("".concat(params).concat("750F82C2-D8F6-49F6-878C-1E7EBEBC8DA2")).toString(CryptoJS.enc.Hex)
}
总结:逆向一定要想着怎么简单怎么来,别硬扣js,比如直接扣ve函数,还要调试补几个变量。再比如$e函数,如果你要扣的话,就走到webpack上了,那补的代码多,可能还要补环境,可能两个小时也扣不完。所以说js逆向要时刻坚持两个原则,一是代码能少则少,二是能引库则引库!