You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解码WebSocket二进制数据?实时更新网站逆向工程求助

解码WebSocket二进制消息的可行方案

能不能解码?

肯定可以——网站能把这些二进制数据解析成表格展示,说明一定存在对应的解码逻辑,你要做的就是找到这套逻辑。

具体方法:

  • 优先排查JS中的消息处理逻辑
    打开Chrome DevTools的Sources面板,直接搜索new WebSocket找到连接创建代码(这里能拿到socket URL,但解码的核心不在URL本身),重点定位消息接收的回调函数:比如socket.onmessage = function(...)或者socket.addEventListener('message', ...)。
    跟着代码追踪网站对event.data(通常是ArrayBuffer或Blob类型)的处理流程:

    • 如果用TextDecoder转成字符串,大概率是压缩后的JSON(比如gzip格式),可以把二进制数据转成Uint8Array后用pako这类库解压;
    • 如果调用了自定义解码函数(比如decodeBinary(data)),就跟进这个函数,看它如何拆分字节、解析字段——常见的是Protobuf、MessagePack这类序列化格式,或是网站自定义的二进制结构。
  • 断点调试直接抓取解析后的数据
    在Network面板找到目标WebSocket连接,右键复制收到的二进制消息保存下来,然后在消息处理函数内打一个断点。当新消息到来时脚本暂停,直接查看JS已经解析完成的变量(比如parsedTableData这类命名的变量),能直接拿到表格对应的结构化数据,省去自己逆向解码逻辑的麻烦。

  • socket URL的实际作用
    找到socket URL不能直接帮你解码,但你可以用它自行编写脚本(比如Python的websockets库)连接目标WebSocket,批量获取二进制消息后在本地分析,不用一直依赖浏览器调试环境。

实用技巧

  • 如果代码被混淆压缩,通过关键词搜索找不到目标逻辑,可以在WebSocket收到消息时,点击DevTools的Pause script execution按钮暂停脚本,然后查看Call Stack向上追溯,总能找到解码的关键函数;
  • 可以在消息处理函数中添加console.log(解析后的数据变量),刷新页面后直接在Console面板查看解析好的结果,这是最快拿到目标数据的方法。

内容的提问来源于stack exchange,提问作者Red Jacket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:03:34