弹幕消息为纯协议开发,解析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)
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。