DY、Tk的Wss连接知识分享

DY和T K的Wss链接知识分享

声明

本文仅供自己学习使用,如有侵权请联系本人,即刻删除

简介

在这篇教程中,我们将介绍如何编写一个爬虫,用于获取DY和TK live中的实时弹幕信息。我们将使用Python编写爬虫,并展示如何通过逆向工程获取弹幕数据。

需求

使用协议采集到实时的douyin和TK的live消息信息

步骤

步骤一:获取直播弹幕的WebSocket地址

要抓取直播弹幕,首先我们需要找到直播弹幕的WebSocket地址。我们可以使用谷歌浏览器抓包,抓取DY和TK的网络请求,从中找到WebSocket地址。

1.1 找到RoomId

建立websocket链接需要先获取roomid,获取Roomid比较简单,直接请求直播间地址,在返回内容中获取。

1.2:连接到WebSocket并接收弹幕数据

想要建立链接还需要对请求参数进行逆向,我们这里逆向的参数字段是signature

步骤二

2.1 安装依赖库
pip install websocket-client requests
2.2 编写连接代码

以下是一个示例代码,用于连接到WebSocket并打印接收到的弹幕数据:


import websocket
import json

def on_message(ws, message):
    data = json.loads(message)
    print("Received message:", data)

def on_error(ws, error):
    print("Error:", error)

def on_close(ws):
    print("Connection closed")

def on_open(ws):
    print("Connection established")
if __name__ == "__main__":
    websocket_url = "wss://example.com/live"  # 替换为抓包获得的WebSocket地址
    ws = websocket.WebSocketApp(websocket_url,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)
    ws.on_open = on_open
    ws.run_forever()

步骤三:解析弹幕数据

不同平台的弹幕数据格式可能有所不同,我们需要根据具体格式解析数据。

3.1 dy弹幕解析

假设我们抓到的DY弹幕数据格式如下:

{
    "type": "chat",
    "data": {
        "user": "user123",
        "message": "Hello!"
    }
}

我们可以在on_message函数中解析这个JSON数据:

def on_message(ws, message):
    data = json.loads(message)
    if data['type'] == 'chat':
        user = data['data']['user']
        chat_message = data['data']['message']
        print(f"{user}: {chat_message}")
3.2 TK弹幕解析

假设我们抓到的TK弹幕数据格式如下:

{
    "event": "comment",
    "body": {
        "user": "user456",
        "text": "Hi there!"
    }
}

我们可以在on_message函数中解析这个JSON数据:

def on_message(ws, message):
    data = json.loads(message)
    if data['event'] == 'comment':
        user = data['body']['user']
        comment = data['body']['text']
        print(f"{user}: {comment}")
步骤四:运行爬虫

在完成上述代码编写后,运行程序即可开始接收并打印直播弹幕数据。
dy弹幕截图
在这里插入图片描述

TK弹幕信息截图
在这里插入图片描述

总结
通过上述步骤,我们成功编写了一个用于抓取DY和TK直播弹幕的程序。我们通过抓包和Js逆向获取了WebSocket地址和请求参数,并使用Python的websocket-client库连接到该地址,解析并打印了弹幕数据。

希望这个教程对你有帮助,如果有问题或者需要完整程序的,欢迎后台滴滴我😁!

### 微信小程序 WSS 连接失败解决方案 #### 1. 确认协议支持 微信小程序仅支持 `wss` (WebSocket Secure) 协议,而不支持不加密的 `ws` 协议。因此,在尝试建立 WebSocket 连接时,必须确保使用的是 `wss://` 而不是 `ws://` 地址[^1]。 #### 2. 设置合法域名 为了使微信小程序能够成功发起 WebSocket 请求,需前往微信公众平台的小程序设置页面中的“开发”-> “开发设置”,找到“服务器域名”部分下的 "socket 合法域名" 字段,并添加目标 WebSocket 服务所在的 HTTPS URL 或者 wss:// 开头的服务地址[^4]。 #### 3. 检查 SSL/TLS 配置 由于微信小程序强制要求使用安全版本的 WebSocket (`wss`) ,所以需要确认服务器端已正确配置了有效的SSL证书,并且该证书是由受信任的CA签发的。如果自签名或不受认可机构颁发,则可能导致握手阶段就终止连接请求。 #### 4. 处理跨域资源共享(CORS) 虽然 WebSocket 不同于传统的 HTTP 请求,但在某些情况下仍然可能遇到类似的权限问题。确保服务器允许来自特定源(即微信小程序)的 WebSocket 连接是非常重要的。这通常涉及到调整服务器上的 CORS 策略来接受从小程序发出的请求。 #### 5. 客户端代码实现注意事项 当在微信小程序内编写用于创建 WebSockets 实例的相关 JavaScript 逻辑时,请注意以下几点: - 使用 wx.connectSocket API 方法代替原生 JS 中的新建 WebSocket 对象的方式; - 正确处理 open/close/error/message 四种事件回调函数; - 如果存在多条消息发送需求的话,建议等待前一条消息返回后再继续下一次操作以避免并发错误。 ```javascript const socketTask = wx.connectSocket({ url: 'wss://example.com/socket', }); // 监听打开状态变化 socketTask.onOpen(() => { console.log('WebSocket 已经打开了'); }); // 接收消息监听器 socketTask.onMessage((res) => { console.log(`收到的消息:${res.data}`); }); // 关闭监听器 socketTask onClose (()=>{ console.log('WebSocket 已关闭'); }); // 错误监听器 socketTask.onError((err)=>{ console.error(err); }); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值