ytkachuk95-collab/websocket-frame-inspector

GitHub: ytkachuk95-collab/websocket-frame-inspector

协议无关的 WebSocket 帧检查器,帮助开发者逆向分析未公开的实时 Web API 协议结构,并附带流式 SQLite 收集器骨架用于构建数据管道。

Stars: 3 | Forks: 0

# WebSocket 帧检查器 一个用于逆向工程实时 Web API 的协议无关工具。它会附加到页面打开的每个 WebSocket,按结构对每一帧进行分类,并构建一个目录,准确记录网站通过其 socket 发送的具体内容——包括已命名的 Socket.IO / Engine.IO 事件、原始 JSON 数组和对象、二进制帧以及控制帧。 当一个网站**没有公开 API**,且你需要在构建数据管道之前了解其未公开的实时协议时,这个工具非常有用。 该仓库还包含一个**流式 SQLite 收集器**(`collector.py`)骨架,展示了此类管道的存储层:批量写入、WAL 模式、schema 迁移和事件路由。 ## 为什么开发它 许多实时 Web 应用通过 Socket.IO 进行通信,混合使用文本和二进制帧、未公开的事件名称以及不明显的分帧(例如,一个文本“公告”帧后紧跟一个单独的二进制 payload)。在能够可靠地收集这些数据之前,你必须**看清**完整的协议。该工具会生成: - `catalog.json` —— 一个结构化的摘要:包含每种帧类型的计数、频率、平均大小以及一些去重后的样本。 - `raw.jsonl` —— 一个包含每一帧的只追加日志,用于实现完全的可复现性。 你可以根据该目录设计规范化的 schema 并构建收集器——`collector.py` 骨架展示了具体做法。 ## 工作原理 `inspector.py` 在对每一帧进行分类时,**不会假设任何特定网站的事件名称**。它仅判断结构: | 类别 | 含义 | |---|---| | `control` | Engine.IO 控制帧(ping/pong/open),无 payload | | `event` | 命名的 Socket.IO 事件:`["name", ...]` | | `binary_announce` | Socket.IO 二进制事件占位符(`451-[...]`) | | `binary` | 二进制数据帧 | | `array` / `object` | 没有事件名称的原始 JSON | | `scalar` / `empty` / `unparsed` | 其他所有内容 | 帧通过方向 + 类别 + 事件名称作为键进行索引,因此你可以获得一个清晰的协议清单,并根据每条消息的实际内容进行分组。 ## 用法 ``` pip install -r requirements.txt playwright install chromium # 检查站点的 WebSocket 流量 python inspector.py --url https://example.com # 已认证页面:提供导出的 cookies python inspector.py --url https://example.com --cookies cookies.json # Headless python inspector.py --url https://example.com --headless ``` 在运行期间与页面进行交互以触发不同的事件,然后按 `Ctrl+C`。目录和原始日志将在退出时(以及运行期间的定期)写入。 ### 流式收集器演示 ``` python collector.py # writes 1000 synthetic events into demo_stream.db ``` 这演示了 SQLite sink:批量插入、WAL、迁移,以及位于类型化表旁边的原始事件日志。 ## 文件 | 文件 | 用途 | |---|---| | `inspector.py` | WebSocket 帧捕获 + 结构分类 | | `collector.py` | 流式 SQLite sink 骨架(批量处理、WAL、迁移) | ## 技术栈 Python · Playwright · asyncio · SQLite ## 许可证 MIT — 查看 [LICENSE](LICENSE)。
标签:Socket.IO, SOC Prime, SQLite, URL抓取, Web API, 云资产清单, 开发工具, 数据抓取, 特征检测, 网络流量分析, 计算机取证, 逆向工具, 逆向工程