(web端)抖音直播间弹幕消息获取

(编辑:jimmy 日期: 2024/12/24 浏览:2)

效果演示:
只展示了消息json的content字段

(web端)抖音直播间弹幕消息获取

准备工作:
本文的操作是在浏览器解除跨域状态下进行的,正常浏览器也可以用。

做法:将谷歌浏览器图标复制一个出来,右击,快捷方式后面加下面浏览器参数

 --disable-web-security --user-data-dir=D:\MyChromeDevUserData // 文件路径自己创建

更多浏览器参数,可参考谷歌官方文档

(web端)抖音直播间弹幕消息获取

开始找参数
随意打开一个直播间,在控制台可以看到,会有两个请求和一堆加载的个性化图片

(web端)抖音直播间弹幕消息获取

那么我们可以先从这些加载的图片调用栈开始入手,然后往回分析,至于为什么从这些图片下手??因为这些个性化图片的加载是伴随弹幕消息一起出现的,根据正向的思路去反推思考,消息和图片的链接一般是会返回在一个共同的响应体里面

(web端)抖音直播间弹幕消息获取

随便选择一个图片,跟进去调用栈

(web端)抖音直播间弹幕消息获取

F8多跟几次之后会发现这里会有消息内容出来,有的时候是其他用户信息,这也就验证了我们之前的想法

(web端)抖音直播间弹幕消息获取(web端)抖音直播间弹幕消息获取
(web端)抖音直播间弹幕消息获取

这些显示的消息是经过解析之后的内容,所以根据我们可以直接回到调用栈最开始的位置,从那里往回找线索

(web端)抖音直播间弹幕消息获取

在这里可以看到他是一个setInterval定时器

(web端)抖音直播间弹幕消息获取

往上翻一下,可以看到key的名称为初始化

(web端)抖音直播间弹幕消息获取

消息体的处理顺序

(web端)抖音直播间弹幕消息获取

(web端)抖音直播间弹幕消息获取

到了这里,我们直接hook代码
代码中变量a是当前this,在此下断点

(web端)抖音直播间弹幕消息获取

再执行下面这段代码

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

消息就全部打印出来了
(web端)抖音直播间弹幕消息获取

到了这一步,使用RPC把消息共享出去
如果发现提示跨域了,请回到文章开头的准备工作

window.__a__ = avar xhr_ = new XMLHttpRequest(),method = "POST",url = "http://127.0.0.1:45678/port"; // 本地接收弹幕消息接口var publishSync_ = window.__a__.publishSync;window.__a__.publishSync = (i) => {  // 这里用箭头函数,不要用传统function    let obj = i.payload;    console.log(obj);    xhr_.open(method, url, true);    xhr_.setRequestHeader("Content-type", "application/json");    xhr_.send(JSON.stringify(obj));}

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?