WebSocket 重放
WebSocket 重放创建可复用的会话,用于测试 WebSocket 端点。你可以使用捕获的握手详情重新连接、编辑消息、发送新帧,并观察服务器响应。
创建会话
有两种创建 WebSocket 重放会话的方式:
- 在 WS / SSE 历史记录中右键单击捕获的 WebSocket 消息,选择发送到 WS 重放。
- 打开 WS 重放,使用
ws://或wss://URL 手动创建会话。
手动会话可包含用于 Cookie、授权令牌、协议协商或应用专属握手值的自定义头部。
会话设置
| 字段 | 说明 |
|---|---|
| 名称 | 便于阅读的会话标签。 |
| URL | WebSocket 端点。URL 必须以 ws:// 或 wss:// 开头。 |
| 头部 | 连接时发送的可选握手头部。 |
更改 URL 或头部后,Ogma 会在打开下一个连接前保存会话。
连接
选择会话并点击连接。连接状态显示套接字是未连接、正在连接、已打开、正在关闭还是已关闭。
切换目标或更改握手详情前,使用断开连接。编辑 URL 或头部后重新连接,以测试新的服务器路径或认证上下文。
连接只完成 WebSocket 握手。许多应用随后需要认证或初始化帧,才会接受业务消息。以捕获的第一条客户端消息作为基线,等待其确认后,再发送修改后的消息。捕获的 Cookie、签名 URL 和令牌可能已经过期。
发送消息
使用消息编辑器编辑载荷,并通过选中的会话发送。文本载荷以 WebSocket 文本帧发送。
要发送十六进制字节,请切换到二进制模式。重放捕获的第一条 WebSocket 消息有助于重新发送初始化消息,重放捕获的出站消息序列会按顺序发送捕获的客户端消息。请在时间线中检查回复,不要假定发送序列就重建了应用状态。
协议编辑器支持原始 WebSocket 和托管 GraphQL 模式(graphql-transport-ws 和旧版 graphql-ws)。选择目标使用的协议,并提供其连接参数。需要时保留原始子协议头部;请求错误协议可能导致升级失败。
刷新时间戳默认关闭。仅为需要新时间戳的未签名请求启用:更改签名 URL 或载荷可能使签名失效。自动重连会在断开连接后重试,但新连接仍可能需要应用层认证。
从历史记录发送的捕获消息会以原始载荷为起点,因此你可以每次只更改一个字段并比较行为。
消息时间线
时间线记录选中会话发送和接收的帧。
| 列 | 说明 |
|---|---|
| 方向 | 帧是由客户端发送,还是从服务器接收。 |
| 操作码 | 帧类型,例如 text、binary、ping、pong 或 close。 |
| 大小 | 载荷大小。 |
| 时间 | Ogma 观察到该帧的时间。 |
选择消息以检查载荷。JSON 载荷会在可能时格式化;原始内容仍可用于精确检查。
测试流程
- 在 WS / SSE 历史记录中捕获正常的 WebSocket 交互流程。
- 将值得关注的客户端消息发送到 WS 重放。
- 重新连接并重新发送原始消息,确认基线行为。
- 每次修改一个字段、令牌、ID 或命令。
- 在安全发现中记录已确认的行为,或在笔记中保留记录。
故障排查
| 症状 | 检查内容 |
|---|---|
| 升级被拒绝或禁止 | URL、Origin、Cookie、授权,以及过期的签名查询值。 |
| 无效或未请求的子协议 | 将升级头部与捕获的握手及所选协议模式进行比较。 |
| 连接成功后关闭 | 检查系统/关闭消息,并发送必需的初始化或认证帧。 |
| 消息已发送但没有有用回复 | 确认订阅 ID、先前消息、认证和应用状态;WebSocket 传输不会自动重建浏览器会话。 |
使用 MCP 时,请使用专用的 WS 重放消息列表/读取工具和断开连接工具。捕获历史记录工具读取的是不同的交互记录;参阅 MCP 工具参考。