文章总结: 本文介绍了小红书直播弹幕爬虫逆向过程,重点分析登录token生成机制。通过抓包发现token失效问题,追踪到sid生成依赖uid和deviceId参数,其中deviceId采用Python复现UUIDv4标准生成算法,包含安全随机数生成和位运算修正。文档提供完整代码实现,可直接用于模拟设备标识生成。 综合评分: 72 文章分类: 爬虫,逆向分析,WEB安全
Xhs-web-live-danmu
可乐还是百事好 可乐还是百事好
爬虫逆向小林哥
2026年4月16日 10:30 江苏
在小说阅读器读本章
去阅读
介绍
过程
没啥值得分析的,抓个包把请求和通信前几次信息塞给calude,源码就直接出了
但是过一阵子就提示login token invalid
看了下wss通信内容,第一次会传一个sid,抓个新的就能用了,下面分析它咋生成
跟几轮异步就到了
入参是自己的uid和一个deviceId
从Storge读取,读取不到在生成
function _getLoginToken() {
return (_getLoginToken = (0,
s._)(function(e, t, n) {
var r;
return (0,
c.Jh)(this, function(i) {
switch (i.label) {
case 0:
if (!n && (r = getTokenFromStorage(e)))
return [2, r];
return [4, fetchLoginToken(e, t)];
case 1:
return [2, i.sent()]
}
})
})).apply(this, arguments)
}
localStorge删掉它,让它改走生成
就是个get请求,带上x-s、x-t就好了
DeviceId
import os
try:
from secrets import token_bytes
HAS_SECURE_RANDOM = True
except ImportError:
HAS_SECURE_RANDOM = False
eo = [f"{i:02x}"for i in range(256)]
def rng():
if HAS_SECURE_RANDOM:
return bytearray(token_bytes(16))
else:
# 降级方案(极少环境用到)
return bytearray(os.urandom(16))
def unsafeStringify(buf, offset=0):
"""完全复刻 JS 的 UUID 字符串格式化"""
b = buf
return (
f"{eo[b[offset + 0]]}{eo[b[offset + 1]]}{eo[b[offset + 2]]}{eo[b[offset + 3]]}-"
f"{eo[b[offset + 4]]}{eo[b[offset + 5]]}-"
f"{eo[b[offset + 6]]}{eo[b[offset + 7]]}-"
f"{eo[b[offset + 8]]}{eo[b[offset + 9]]}-"
f"{eo[b[offset + 10]]}{eo[b[offset + 11]]}{eo[b[offset + 12]]}{eo[b[offset + 13]]}{eo[b[offset + 14]]}{eo[b[offset + 15]]}"
)
def esm_browser_v4(options=None, buf=None, offset=0):
"""
完全复刻 JS 版本 esm_browser_v4 函数
功能:生成标准 UUID v4
"""
# 优先使用安全随机(和 JS crypto.randomUUID 逻辑一致)
if options is None and buf is None:
import uuid
return str(uuid.uuid4())
# 生成随机 16 字节
opts = options or {}
rng_func = opts.get('random') or opts.get('rng') or rng
er = bytearray(rng_func())
# UUID v4 版本位修改(完全和 JS 一样)
er[6] = (0x0F & er[6]) | 0x40
er[8] = (0x3F & er[8]) | 0x80
# 如果传入 buffer,就写入 buffer(和 JS 一致)
if buf:
for i in range(16):
buf[offset + i] = er[i]
return buf
# 格式化输出字符串
return unsafeStringify(er)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:爬虫逆向小林哥 可乐还是百事好 可乐还是百事好《Xhs-web-live-danmu》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论