闲来无事简单逆向一下小红书PC端的接口签名,x-t, x-s ,第一步简单的的全局搜索一下查找一下签名在那里出现
不得不说,小红书取名就是这么尿性直接告诉你这是签名的地方了,既然知道了就果断debug一把,根据代码很容看出来,最终就是window._webmsxyw 方法进行签名了,在调试加密方法之前先把入参敲定,看看到底是哪几个值参与了签名
通过打印很容易猜到签名就是api接口和请求参数直接进行签名计算。
接下来就是来看看到底是如何加密的
找到签名加密的入口,通过观察代码可以看到这是要一个闭包自执行函数,通过计数器不断的入栈出栈,来完成程序的执行,将整段代码抠出,然后新建代码段进行debug 调试,根据入口处的执行方法在方法 _ace_8cba0下断点,通过打印可以发现这个函数的取值执行过程,再经历了一段时间的调试分析,最终摸清楚了执行过程,接下来就是要要放到独立环境中执行。
一般这种情况下就是补环境,根据上面的调试过程发现需要补window 对象,document ,navigator,canvas, cookies 等等,再将环境补全后执行,发生成异常RegExp对象缺失,继续补,补完环境后发现执行的结果跟浏览器中结果差异很大,因该是缺参数了,又是一通折腾,最后发现,cookie对象的a1,xsecappid 会参与签名,入参中的参数i必须是对象形式,环境监测中字段的x2必须是 '0|0|0|1|0|0|1|0|0|0|1|0|0|0|0'
签名版本是“1”
最终得到正确的结果,
将结果拿到python中进行检查,效果不错,至此打完收工