AI 文章摘要
进入网站F12,点进搜索,比如搜索一个邓紫棋,右边红框内lists就是我们需要的内容,然后查看请求所携带的参数,发现有很多,但是呢,经测试发现,就signature、clienttime(时间戳)、以及keyword在变,其他都没变,所以加密参数就是这个signature


然后通过发起程序查看请求所在的代码位置,打下断点,会发现其间经历了一个infSign函数并传入op然后得到了一个data,而这个data就是请求所携带的参数

可以对比一下两者结果差异,其出现了一个signatue,也就是所谓的加密参数,而两者之间只是经历了一下这个infSign函数


进入infSign函数内部,发现确实是在这生成了签名参数,也就是那个signature

进一步调试猜测这个op传进来后在这里面被进行了一些额外的操作

再进一步查看s、s.join(“”)和l,可知道确实是把我们传过来的op加了一些字符串然后全部拼接在一块再通过一个d函数得到这个signature,然后给到l,而这个l就是那个data(注:在这看到dfid、mid和uuid和上面不一样是因为中途关闭了浏览器,其实如果连续的话这个值是不变的,因为每次进浏览器都会重新分配值)



然后我们点击l.signature = d(s.join(“”))的跳转进入d函数此处(t就是上面的s.join(“”)),发现又调用了一个i,再跳转进入i,会发现这不妥妥的MD5码吗,在这不过多解释


然后再细细理一下逻辑就是,传入一个op,先进行一些先驱操作,得到一个列表,再把这个列表里的字符串全连接在一起,之后传入d函数内经过MD5码算法加密得到signature,最后把这个signature加到原列表并转为字典给到l,l就是data,再拿去请求数据,这下明白后就可以写代码了,在这,如果看出来了是MD5码算法的话,可直接用python模拟 MD5 算法计算,代码示例如下:
import hashlib
data = "hello"
md5_hash = hashlib.md5(data.encode().hexdigest()
print("MD5:", md5_hash)
但是如果你没看出来,也没事,那就直接python调用原js代码进行计算也行
下面直接测试一下,可行,分析没问题,仅供参考


