弹幕音讯为纯协定开发,解析protobuf数据格式采集的,反对采集匿名直播间,能够采集发言,礼物,点赞,关注等匿名实在信息。
wss链接的signature的签名算法也有。此签名算法次要是对roomid进行签名。能够补环境+删检测来实现,前面有工夫会写相干剖析文章
Nodejs演示
Python演示
以下为浏览器Hook版本,此版本工夫有点久,不过也是能够用的,另外,你调试之后会发现,其实是有捷径的,他的堆栈调用会有一个法则,依据此法则能够一下就找到hook的地位
成果演示
内容蕴含"用户主页链接,礼物,音讯,点赞,直播间人数,直播间粉丝数"
寻找参数
能够先从这些加载的图片调用栈动手
轻易抉择一张图片,进到调用栈外面
F8运行,多运行几次之后,会发现这里会有音讯内容进去,这也就验证了咱们之前的想法
这里显示的音讯,是通过解析之后的内容,能够间接到调用栈最开始的地位,而后往回找线索,下图能够看到,它是一个setInterval定时器
在下面,能够看到key名称为sdkinit初始化
到了这一步,能够间接hook这个publishSync
window._a_ = a;var publishSync_ = window._a_.publishSync;window.__a__.publishSync = (i) => { // 这里用箭头函数,不要用function let obj = i.payload; console.log(obj);}
胜利之后,就会有上面的成果
到了这一步,写一个wss服务端,将获取到的音讯共享进来
function hookFunc (o) { if (_WSS_.readyState === _WSS_.OPEN) { _WSS_.send(JSON.stringify(o)) // WSS服务端和数据解析可自行编写,此处不做演示 };};var _WSS_ = new WebSocket('wss://x.x.x.x:10086');window._a_ = a;var publishSync_ = window._a_.publishSync;window._a_.publishSync = (i) => { // 这里用箭头函数,不要用传统function hookFunc(i)}