关于前端:直播间-弹幕消息采集-支持匿名消息采集

36次阅读

共计 914 个字符,预计需要花费 3 分钟才能阅读完成。

弹幕音讯为纯协定开发,解析 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)
}

正文完
 0