websocket 监控某音网页版直播弹幕

前言

该文章为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系作者删除~

需求

监控某音网页版直播弹幕

正文

首先我们需要定位到弹幕传输的位置
因为是通过websocket进行传输的,所以我们可以全局先搜new websocket

websocket 监控某音网页版直播弹幕_第1张图片
onMessage是一个监听信息的方法

在这里插入图片描述
websocket 监控某音网页版直播弹幕_第2张图片
跳到当前这个位置,可以看到,deserializeBinary这个是将这个二进制字节进行一个序列化的方法,所以我们可以在这里下个断点,可以看到目前这个位置数据还是加密的。继续往下看
在这里插入图片描述
可以看到有一个.send方法,是用来发送数据

在这里插入图片描述
接收到服务器的数据响应r.toobject(),里面的数据是加密的
在这里插入图片描述

emit方法用于实现服务器向客户端广播事件,可以从这个位置跟进去查看数据
websocket 监控某音网页版直播弹幕_第3张图片
进到这个位置
可以看到deserializeBinary这个方法是一个解序列化的方法

s.toObject()就是我们的明文数据

接下来把这个js进行本地替换,注入我们的监听客户端

websocket 监控某音网页版直播弹幕_第4张图片
然后通过python开启服务端

import asyncio
import websockets


async def echo(websocket):
    # 使用WebSocket在客户端和服务器之间建立全双工双向连接后,就可以在连接打开时调用send()方法。
    message = 'hello world'
    # 发送数据
    await websocket.send(message)
    return True

async def recv_msg(websocket):
    while 1:
        # 接收数据
        recv_text = await websocket.recv()
        print(recv_text)


async def main_logic(websocket, path):
    await echo(websocket)
    await recv_msg(websocket)


start_server = websockets.serve(main_logic, '127.0.0.1', 9999)
print('成功建立连接!!')
loop = asyncio.get_event_loop()
loop.run_until_complete(start_server)
# 创建了一个连接对象之后,需要不断监听返回的数据,则调用 run_forever 方法,要保持长连接即可
loop.run_forever()

最后

欢迎联系作者交流更多

你可能感兴趣的:(爬虫,websocket,网络协议,网络)