小红书话题x-s x-b3-traceid

案例地址:/page/topics/


x-s

x-s比较藏的比较隐晦,找了好一会儿,根据经验找 e.headers 找到的。

最终位置在window.sign(d, e.data)中返回。
在堆栈调试中,

可以看到window.sign(d, e.data)返回了x-s和x-t。
在这里插入图片描述
并且 d 是 '/api/store/abtest/v3' ,e.data 是undefined。

接下来查看window.sign方法。

在这里插入图片描述
把这一整段都拿下来运行,删除无用代码。

运行,成功返回x-s和x-t。
在这里插入图片描述


x-b3-traceid

全局搜索x-b3-traceid。找到位置后断点调试。
在这里插入图片描述
查看te方法。
在这里插入图片描述

math.random()返回选取大于等于 0.0 且小于 1.0 的伪随机值
math.floor(x)返回小于参数x的最大整数,即对浮点数向下取整
charAt(int index)方法是用通过下标取字符

x-b3-traceid 的生成,翻译为python代码:

import random,math
e = ""
for t in range(16):
    e+="abcdef0123456789"[math.floor(16 * random.random())]
print(e)

很遗憾,如果这三个参数只是这么构造的话就错了,最后还有一步处理。


最终生成

我测试了之后,发现并没有结束。
在这里插入图片描述

经过对比可以发现,最终的x-s和window.sign(d, e.data)的不同,还需要一些处理。
在这里插入图片描述

先看e.headers = Ke(Ke(Ke({}, e.headers), f), v)调试。

f是之前生成的x-s和x-t , e.headers是x-b3-traceid。
在这里插入图片描述

ke方法。
在这里插入图片描述

流程分析完成,后续需要按步骤扣代码补环境。


暂时记录到这里,祝各位五一假期愉快

点赞

发表回复