2024最新dy直播间弹幕wss python连接

前文:

本文就不讲wss连接部分了,私聊

最近有个更新,更新后旧版本的就链接不上wss了

花了点时间检查后更新出来了

本文主要讲的是短signature的加密,

加密组成:

signature是通过加密

f"live_id=1,aid=6383,version_code=180800,webcast_sdk_version=1.0.8,room_id={room_id},sub_room_id=,sub_channel_id=,did_rule=3,user_unique_id=,device_platform=web,device_type=,ac=,identity=audience"的md5加密而得来的

如果加密的不对就连接不上,也换不了直播间

加密位置:

c914083a323ccb8cb853e74c40f7800b.png

 做个简单的逆向就直接全扣下来浅浅补个少量的环境,这里是直接用x_bogus的环境,他们加密的逻辑很像,还原成python纯算法也都差不多(x_bogus,a_bogus)

补环境:

window=global;
window.Request=function () {return 'function Request() { [native code] }' };
window.Headers=function () {return 'function Headers() { [native code] }' };;
exports=undefined;
delete Buffer;
window.document={
referrer:'',
    addEventListener:function(){return 'function addEventListener() { [native code] }'},
    'cookie':''
}
window.navigator={
    userAgent:'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
}
window.location= {
    "ancestorOrigins": {},
    "href": "https://live.douyin.com/861655388229",
    "origin": "https://live.douyin.com",
    "protocol": "https:",
    "host": "live.douyin.com",
    "hostname": "live.douyin.com",
    "port": "",
    "pathname": "/861655388229",
    "search": "",
    "hash": ""
}

setTimeout = function(){return function(){}};
setInterval = function(){};

只需要补这点环境,然后再手动修改js里的某些变量值,就两个变量就可以输出正确的结果了,说简单也简单,难也难。

v:ProfessorLuoMing

 

 

 

 

 

 

 

### 直播间 WebSocket (WSS) 弹幕 API 和实现方法 #### 建立 WebSocket 连接 为了实现实时接收直播间弹幕消息,首先需要建立一个 WebSocket 客户端连接。根据现有资料,使用 WebSockets 来提供这种低延迟的消息传递服务[^1]。 ```javascript const ws = new WebSocket('wss://example.com/websocket'); // 替换为实际的WebSocket服务器地址 ws.onopen = () => { console.log("Connection established"); }; ``` #### 发送身份验证请求 一旦建立了初始连接,则通常还需要发送一些初始化命令来完成认证过程并订阅特定频道或房间的信息流。具体的认证机制可能涉及加密签名和其他安全措施,这取决于平台的具体设计[^2]。 #### 接收与处理消息 当成功加入某个直播间之后,客户端就可以开始监听来自服务器推送过来的各种事件通知了。这些事件可能是纯文本形式也可能是二进制帧,在 JavaScript 中可以通过 `onmessage` 方法捕获它们: ```javascript ws.onmessage = function(event){ let data; try{ if(typeof event.data === 'string'){ data = JSON.parse(event.data); }else{ // 如果是Blob对象则转换成ArrayBuffer再解析 const reader = new FileReader(); reader.onloadend = function(){ const arrayBuffer = this.result; handleBinaryData(arrayBuffer); }; reader.readAsArrayBuffer(event.data); } processData(data); }catch(error){ console.error("Error processing message:", error); } }; function handleBinaryData(buffer){ var decoder = new TextDecoder(); let str = decoder.decode(new Uint8Array(buffer)); console.log(str); // 或者更复杂的protobuf解码逻辑... } ``` 对于非字符串类型的响应(如 Protobuf 编码),可以利用相应的库来进行序列化/反序列化的操作。上述代码片段展示了如何读取 Blob 数据作为 ArrayBuffer 并尝试将其解释为 UTF-8 字符串;而在实际情况中,应该按照官方文档中的说明正确地解析 protobuf 结构体。 #### 断开连接 最后不要忘记定义关闭回调函数以便优雅地结束会话: ```javascript ws.onclose = () => { console.log("Disconnected from server."); }; ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布语world

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值