弹幕消息为纯协议开发,解析protobuf数据格式采集的,支持采集匿名直播间,可以采集发言,礼物,点赞,关注等匿名真实信息。

wss链接的signature的签名算法也有。此签名算法主要是对roomid进行签名。可以补环境+删检测来实现,后面有时间会写相关分析文章


Nodejs演示

image.png


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)
}

在这里插入图片描述


白歌D2O
0 声望0 粉丝