直播间 弹幕消息采集 (支持匿名消息采集)

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

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


Nodejs演示

直播间 弹幕消息采集 (支持匿名消息采集)_第1张图片


Python演示


以下为浏览器Hook版本,此版本时间有点久,不过也是可以用的,另外,你调试之后会发现,其实是有捷径的,他的堆栈调用会有一个规律,根据此规律可以一下就找到hook的位置

效果演示
内容包含"用户主页链接,礼物,消息,点赞,直播间人数,直播间粉丝数"

直播间 弹幕消息采集 (支持匿名消息采集)_第2张图片

寻找参数
直播间 弹幕消息采集 (支持匿名消息采集)_第3张图片
可以先从这些加载的图片调用栈入手
直播间 弹幕消息采集 (支持匿名消息采集)_第4张图片

随便选择一张图片,进到调用栈里面

直播间 弹幕消息采集 (支持匿名消息采集)_第5张图片

F8运行,多运行几次之后,会发现这里会有消息内容出来,这也就验证了我们之前的想法

直播间 弹幕消息采集 (支持匿名消息采集)_第6张图片

直播间 弹幕消息采集 (支持匿名消息采集)_第7张图片

直播间 弹幕消息采集 (支持匿名消息采集)_第8张图片

这里显示的消息,是经过解析之后的内容,可以直接到调用栈最开始的位置,然后往回找线索,下图可以看到,它是一个setInterval定时器

直播间 弹幕消息采集 (支持匿名消息采集)_第9张图片

在上面,可以看到key名称为sdkinit初始化

直播间 弹幕消息采集 (支持匿名消息采集)_第10张图片

直播间 弹幕消息采集 (支持匿名消息采集)_第11张图片

到了这一步,可以直接hook这个publishSync

window._a_ = a;
var publishSync_ = window._a_.publishSync;
window.__a__.publishSync = (i) => {  // 这里用箭头函数,不要用function
    let obj = i.payload;
    console.log(obj);
}

成功之后,就会有下面的效果

直播间 弹幕消息采集 (支持匿名消息采集)_第12张图片

到了这一步,写一个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)
}

你可能感兴趣的:(前端后端爬虫python)