Skip to content

RPC / 网络抓包 ​

在 Copilot 顶栏点击 「RPC抓包」,可只读查看游戏页的网络报文,方便联调与排查协议。支持 WebSocket / 二进制 RPC 与 HTTP(fetch / XHR)。默认未录制时不 Hook,对游戏影响最小。

RPC / 网络抓包面板


快速开始 ​

  1. 打开 H5 游戏页 → F12 → 切换到 H5 AI Inspector
  2. 点击顶栏 「RPC抓包」
  3. 点击 「录制」,在游戏内操作以触发网络请求
  4. 在左侧列表选中一条报文,右侧查看元信息与 Body
  5. 用完后点 「录制中」 停止,或关闭面板(关闭会停止录制)

录制开启后按工具栏 WS / HTTP 通道抓取(默认两者都开,可单独关掉其中一种)。


面板功能 ​

功能说明
录制 / 录制中开始或停止抓包
WS / HTTP通道开关,默认两者都开;至少保留一种
搜索协议名 / URL / 状态码 / 关键词;Enter 下一项、Shift+Enter 上一项(类似节点搜索)
清空清空当前列表
列表 + 详情左侧:方向或 HTTP 方法、时间、协议名或路径、长度;右侧:元信息与 Body(标题行可复制)
生成草稿根据选中的二进制 / sproto 报文生成协议表骨架(HTTP 条目不适用)
协议表导入 / 导出 JSON,补全 WS 二进制消息名与字段解码
说明面板内简要帮助

关闭 RPC 面板会停止录制;重新打开后需再次点「录制」。


能解出什么 ​

类型表现
sproto自动协议名(如 cs_ / sc_)+ JSON Body,一般无需额外配置
明文 WebSocket识别包内 [...] / {...},列表可显示 cmd 等摘要
二进制包头常见「长度 + 消息号 + action」结构;Body 为结构化摘要;可用协议表补全字段名
HTTPfetch / XMLHttpRequest:方法、URL、状态码、请求/响应正文(自动跳过常见静态资源如 js/css/图片字体等)

若二进制 Body 只有十六进制摘要、没有字段名,需要导入或编辑 协议表(见下节)。HTTP 一般不需要协议表。


协议表(可选) ​

适用于非 sproto、需要把消息号映射成可读名称、或把二进制 payload 解成字段的游戏。

推荐流程 ​

  1. 向项目组索取 rpc-schema.json(示例:rpc-schema-example.json)
  2. 打开 「协议表」 → 导入 JSON 文件 → 填写名称 → 应用并记住
  3. 弹窗上方 已保存协议表 可切换、删除多份用户表(按游戏域名记忆)
  4. 重新点「录制」 后再看 Body(已抓到的旧包不会按新表重解)

说明:「应用并记住 / 清除本站记忆」只影响用户导入的协议表;sproto 运行时字典、插件内置通道名等不会被覆盖或清除。

也可选 「仅本次应用」(不写入本机记忆),或 「清除本站记忆」(清空该站点已存用户表列表)。

不会写表时 ​

  1. 录制并在左侧选中一条 WS / 二进制 / sproto 报文(HTTP 不适用)
  2. 点 「生成草稿」 → 打开协议表弹窗,编辑区会填入根据该报文生成的 JSON
  3. 核对字段名后「应用并记住」,或把草稿交给协议同学补全

若未选中报文、或选中的是 HTTP / 无消息号的空包,会提示无法生成;以前仅对含数字 msgType/cmd 的二进制摘要有效,现已支持 sproto 已解码 Body 的字段草稿。


JSON 可包含两部分(可只写其一):

字段作用
protocolMap消息号 → 可读名;键可用 "7027" 或带 action 的 "7027:8"
decodeSchemas按字段顺序解码 payload;类型如 u8 / u16 / u32 / u64 / string / restHex 等

示例:

json
{
  "protocolMap": {
    "7027": "MsgML",
    "7027:8": "MsgML_Act8"
  },
  "decodeSchemas": {
    "7027:8": [
      { "name": "field_a", "type": "u64" },
      { "name": "field_b", "type": "u64" },
      { "name": "rest", "type": "restHex" }
    ]
  }
}

字段顺序需与游戏里该消息的读写顺序一致。完整示例见 rpc-schema-example.json。

游戏工程内挂表(进阶) ​

若调试包可在游戏页注入配置,也可在游戏页 Console 设置(仅对新录制的包生效):

js
window.__h5GameCopilotRpc = window.__h5GameCopilotRpc || {};
window.__h5GameCopilotRpc.protocolMap = {
  '7027': 'MsgML',
  '7027:8': 'MsgML_Act8'
};
window.__h5GameCopilotRpc.decodeSchemas = {
  '7027:8': [
    { name: 'id', type: 'u64' },
    { name: 'flag', type: 'u64' },
    { name: 'tail', type: 'restHex' }
  ]
};

多数业务同学优先用面板 导入 JSON,无需改游戏代码。


使用注意 ​

  • 当前为 只读抓包;重放 / Mock 等能力未开放
  • 未点「录制」时不抓包;用完请停止录制或关闭面板
  • 协议表更改后请 重新录制 再查看 Body
  • HTTP 会跳过常见静态资源;过滤可写 http、GET、/api/ 等只看接口

相关文档 ​

H5 Game AI Inspector