某 音 直 播

首先说一下思路 

利用浏览器插件对js文件进行替换,将浏览器解密后的数据通过ws发送到自己搭建的ws服务器来进行数据的获取

同时可以结合 drissionpage 库 来操作浏览器进行消息的发送 和 浏览器无头模式的运行

下面主要说一下js替换和ws

利用reres进行js文件的替换

解密的js文件一共有两个3569.835c3d6d.js和6055.7e83c993.js 请求网站时好像是随机返回其中的一个(我也不太清楚),总之就是要替换这两个

两个文件都是在这个地方加入红框中的js代码,如下

!function() {
                        var my_res = e;
                        if (typeof e == 'undefined') {
                            return;
                        }
                        if (typeof window.my_ws == 'undefined') {
                            try {
                                window.my_ws = new WebSocket('ws://localhost:9090');
                            } catch (e) {
                                console.error('ws连接发生错误:', e.message);
                                window.my_ws = undefined;
                                return;
                            }
                            window.my_ws.onclose = function() {
                                console.log('ws连接断开');
                                window.my_ws = undefined;
                            }
                            window.my_ws.onopen = function() {
                                console.log('ws连接成功');
                                window.my_ws.send(JSON.stringify(my_res));
                            }
                            window.my_ws.onerror = function() {
                                console.log('ws连接错误');
                                window.my_ws = undefined;
                            }
                            window.my_ws.onmessage = function(event) {
                                console.log(event.data);
                            }
                        } else {
                            window.my_ws.send(JSON.stringify(my_res));
                        }
                    }();

python实现ws服务用于接收解密后的数据

# -*- coding:utf-8 -*-
# @FileName  :ws server.py
# @Time      :2024/4/21 19:55
# @Author    :有何不可

import asyncio
import json
import time

import websockets


async def handle_client(websocket, path):
    while True:
        try:
            message = await websocket.recv()
            print(f"接收到的数据: {message}")
            with open(fr'.\data\{str(time.time()).replace(".", "")}.json', mode='wt', encoding='utf-8') as f:
                f.write(message)
        except websockets.ConnectionClosedError:
            print("客户端关闭连接.")
            break


async def start_server(server_address):
    async with websockets.serve(handle_client, "localhost", 9090):
        print(f"WebSocket server is listening on ws://{server_address}")
        await asyncio.Future()


# 启动WebSocket服务器
if __name__ == "__main__":
    asyncio.run(start_server("localhost:9090"))

运行效果(并未对数据进行处理)

欢迎加入企鹅:958446099 一起学习

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦为何欢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值