如何用 Proxyman 抓取 WebSocket 并解码 Protobuf 消息
本教程将带你完成以下内容:
- 下载并设置 Proxyman macOS
- 从 Google Chrome 或 iOS 应用抓取 WebSocket 流量
- ✅ 使用 Proxyman 解码 WebSocket 流量中的 Protobuf 消息
WebSocket 是一种流行的协议,用于客户端与服务器之间的实时通信。许多现代应用会通过 WebSocket 传输 Protobuf(Protocol Buffers)序列化的数据,以获得更好的性能和更小的数据体积。
本指南介绍如何使用 Proxyman macOS 6.5.0 或更高版本抓取 WebSocket 流量并解码 Protobuf 消息。
1. 下载并设置 Proxyman macOS
开始之前,请先下载并设置 Proxyman macOS。
- 访问 Proxyman 官网,下载最新版本的 Proxyman macOS
- Proxyman macOS:支持 macOS 12 或更高版本
- 安装 Proxyman macOS
- 打开 Proxyman,在 macOS 上安装证书。你可以按照
Proxyman > Certificate Menu -> Install for macOS -> Follow the instruction中的说明操作。 - 切换到 Automatic 标签页,点击“Install & Trust”
- 确认 Proxyman 证书上显示绿色对勾

2. 抓取 WebSocket 流量
2.1 从 Google Chrome 抓取(开箱即用)
Proxyman 无需任何额外配置,即可抓取 Google Chrome 的 WebSocket 流量。
- 确保 Proxyman 正在运行
- 打开 Google Chrome
- 访问一个 WebSocket 测试网站,例如:https://echo.websocket.org/.ws
- 此时,你可以看到 Proxyman 已抓取到 WebSocket 流量 ✅
- 如果看到 SSL 加密的流量,请在 Response Panel 中点击“Enable SSL Proxying”
- 重新加载页面或重新连接 WebSocket,让 Proxyman 解密 WebSocket 流量 ✅
- 完成。你现在可以实时查看 WebSocket 消息。

WebSocket 流量会在 Proxyman 的流量列表中以特殊的 WebSocket 图标显示。你可以在 WebSocket 标签页中查看发送和接收的消息。
2.2 从 iOS 应用抓取
如果你的 iOS 应用使用 URLSessionWebSocketTask 或 iOS 的 WebSocket 库(例如 Starscream、SocketRocket),则需要配置 SOCKS Proxy 才能抓取 WebSocket 流量。
这是因为 URLSessionWebSocketTask 默认不遵循系统的 HTTP 代理设置。
有关从 iOS 应用抓取 WebSocket 的详细说明,请参阅我们的专门教程:使用 Proxyman 拦截并调试 iOS 模拟器和真机上的 WebSocket
以下是简要步骤:
- 在 Proxyman 中启用 SOCKS Proxy:
Tools->Proxy Settings->SOCKS Proxy settings->Enable - 记下端口号(默认为
8889) - 配置你的 iOS 应用,使其使用 Proxyman 的 SOCKS Proxy Server
3. 解码 Protobuf 消息
需要 Proxyman macOS 6.5.0 或更高版本。如果你在使用旧版本,请更新 Proxyman。
抓取到 WebSocket 流量后,你可以直接在 Proxyman 中解码 Protobuf 消息。
3.1 使用原始模式解码(快速但不精确)
当你没有 Protobuf 定义文件(.proto)时,原始模式很有用。Proxyman 会尝试解码二进制数据并显示其中的字段。
- 在 Proxyman 中选择一个 WebSocket 流量
- 找到包含 Protobuf 数据的 WebSocket 消息
- 右键点击该 Protobuf 消息 ->
Protobuf->Decode - 选择
Raw Mode - 完成。Proxyman 会解码并显示 Protobuf 字段 ✅


原始模式会显示字段编号和推断出的类型。没有 .proto 文件时无法显示字段名称,但你仍然可以查看数据结构。
3.2 使用消息类型解码(推荐)
如果你有 Protobuf 描述文件(.desc),就可以解码出带有正确字段名和类型的消息。
- 在 Proxyman 中选择一个 WebSocket 流量
- 找到包含 Protobuf 数据的 WebSocket 消息
- 右键点击该 Protobuf 消息 ->
Protobuf->Decode - 选择
Message Type - 从 Protobuf 描述文件中选择消息类型

如果找不到你的消息类型,请点击“Import Schema”按钮,将 .desc 文件导入 Proxyman。
如需了解如何从 .proto 文件生成 .desc 文件,请参阅此文档:如何从 .proto 文件生成 .desc 文件
- 完成。Proxyman 会以正确的字段名解码消息 ✅

要从 .proto 文件生成 .desc 文件,请使用 protoc 编译器:
protoc --descriptor_set_out=message.desc --include_imports your_message.proto
--include_imports 选项会加入被导入的 .proto 文件所使用的消息类型。如果没有它,Proxyman 可能找不到主 schema 中看似存在的类型。在没有 schema 时,原始模式依然有用,但其字段类型只是推测;当字段名和类型必须准确时,请使用描述文件。
4. 常见问题与解决方法
4.1 无法看到 iOS 应用的 WebSocket 流量
解决方法:iOS 的 WebSocket 库不遵循 HTTP 代理设置。你需要在 Proxyman 中启用 SOCKS Proxy,并配置应用使用它。详细步骤请参阅我们的 WebSocket 调试教程。
4.2 没有 Protobuf 解码选项
解决方法:请确认你使用的是 Proxyman macOS 6.5.0 或更高版本。你可以在 Proxyman -> About Proxyman 中查看版本,并前往 proxyman.com 更新。
4.3 原始模式显示的字段类型不正确
解决方法:原始模式使用启发式规则推断字段类型。如需准确解码,请使用消息类型模式并配合你的 Protobuf 描述文件。
4.4 能看到 WebSocket 流量,但消息是加密的
解决方法:请确认已为该域名启用 SSL Proxying。右键点击该流量 -> Enable SSL Proxying,然后重新连接 WebSocket。
5. 总结
在本教程中,我们学习了如何:
- 使用 Proxyman 抓取 Google Chrome 和 iOS 应用的 WebSocket 流量
- 使用原始模式(无需 .proto 文件)或消息类型模式(需要 .proto 文件)解码 Protobuf 消息
你可能还会觉得以下教程有帮助:
- 使用 Proxyman 拦截并调试 iOS 模拟器和真机上的 WebSocket
- 如何抓取 iOS 26 上 iPhone 的 HTTP/HTTPS 流量
- 如何用 Proxyman 抓取 Firefox 浏览器的 HTTPS 流量
Proxyman 是一款高性能的 macOS/Windows/Linux 应用,可帮助开发者抓取浏览器、iOS 设备、iOS 模拟器和 Android 设备的 HTTP/HTTPS 和 WebSocket 流量。
下载地址:https://proxyman.com

