Proxyman、Charles Proxy 与 Wireshark 对比:哪款抓包工具更适合你?
2026 年新功能:HTTP/2 与 Network Extension
两项重要更新改变了 Proxyman 与 Charles Proxy、Wireshark 的对比情况:
- Network Extension(Beta): 抓取忽略系统代理的 Mac 应用和脚本的 HTTP/HTTPS 流量。Charles Proxy 无法看到这些流量。
- HTTP/2: 在 macOS 版 Proxyman v26.0.0 中检查 HTTP/2 的请求、响应和 trailer。
✅ Network Extension:抓取 Charles Proxy 看不到的流量

普通代理的问题
Charles Proxy 与 Proxyman 的常规模式一样,通过设置 macOS 系统代理来工作。遵循该设置的应用会将请求发送到代理。但很多工具并不会这样做:
- cURL、Node.js、Python 和 Ruby 脚本通常需要自己的
--proxy参数或代理环境变量。 - 部分 Mac 应用和 HTTP 库会完全跳过系统代理。
- 本地后端服务会直接将 API 请求发送到互联网。
这些请求仍然会到达服务器,但永远不会出现在 Charles 中。为了查看一个请求,你最终可能需要在每个工具里配置代理,或者修改代码。
Network Extension 的工作原理
Proxyman 的 Network Extension 是基于 Apple 的 Network Extension API 构建的透明代理。macOS 会将 Mac 上应用的 HTTP/HTTPS 连接经由 Proxyman 转发,因此应用无需知道代理的存在。
你将获得:
- 🔎 看到遗漏的请求: 抓取忽略代理设置的 Mac 应用、CLI 工具、脚本和本地服务器。
- ⚡️ 无需逐个应用配置: 无需
--proxy即可运行curl https://api.example.com,项目中也无需修改代理相关代码。 - 🛠 保留调试工具: Map Local、Breakpoint、Scripting 和过滤器可用于每一个抓取到的请求。
- 🍎 原生且可信: 这是一个经过 Apple 公证并需要在系统设置中批准的 macOS 系统扩展。
- 🔒 设计上即为本地处理: 抓取到的流量在你的 Mac 上处理。
在 Proxyman → Settings → Network Extension 中开启它,然后在 macOS 中批准,再发起一个新请求。更多信息请参阅 Network Extension 页面 或 发布博客。
Network Extension 目前处于 Beta 阶段,需要 Proxyman PRO 和 macOS 26 或更高版本。要读取 HTTPS 内容,请信任 Proxyman 证书并启用 SSL Proxying。Node.js、Python 和 Ruby 可能还需要使用 Automatic Setup,以便在各自的运行环境中信任该证书。
✅ HTTP/2:使用应用实际采用的协议进行调试
macOS 版 Proxyman v26.0.0 已将 HTTP/2 抓包功能加入正式版本。在 Settings → General 中开启 Use HTTP/2,然后抓取一个新请求。
它能带来以下好处:
- 真实的行为: 通过 HTTP/2 调试流量,而不是将所有请求都降级为 HTTP/1.1。当问题与协议协商或并发请求有关时,这一点尤其重要。
- 每个流对应一个请求: 共用同一 HTTP/2 连接的请求会以独立的行显示,方便你逐一选中并查看。
- Trailer: 查看请求体之后发送的 Header,例如 gRPC 调用中的
grpc-status和grpc-message。 - 协议证明: Connection Log 会显示服务器接受的是
h2,还是回退到了 HTTP/1.1。 - 并排对比: 将 HTTP/2 抓包与 Split View 以及 Safari 风格的标签页(PRO)搭配使用,同时查看两个端点。

Charles Proxy 从第 4 版起就支持 HTTP/2,因此从 Charles 迁移到 Proxyman 不再意味着放弃这一功能。Wireshark 可以解码 HTTP/2 帧,但除非导出 TLS 会话密钥,否则 HTTPS 流量仍是加密的。配置细节请参阅 HTTP/2 发布博客。
Proxyman、Charles Proxy 与 Wireshark 一览
| Proxyman | Charles Proxy | Wireshark | |
|---|---|---|---|
| 抓取忽略系统代理的应用 | ✅ Network Extension(Beta) | ❌ 仅支持系统代理设置 | ✅ 数据包抓取,HTTPS 保持加密 |
| HTTP/2 | ✅ 请求、trailer、协商协议 | ✅ 自 Charles 4 起支持 | ✅ 帧级解码,HTTPS 需要 TLS 密钥 |
| 读取并编辑 HTTPS 请求 | ✅ SSL Proxying、Breakpoint、Map Local、Scripting | ✅ SSL Proxying、Breakpoint、Map Local、Rewrite | ❌ 仅支持只读的数据包分析 |
| 应用技术 | 原生 macOS(Swift、SwiftNIO) | Java,跨平台 | Qt,跨平台 |
Proxyman 的独特之处
✅ 0. 原生 macOS 应用

- 业界领先的 原生 macOS 应用。
- 基于 SwiftNIO 构建,这是一个跨平台的异步事件驱动网络应用框架,由 Apple 开发并维护。
- 以开发者的思路设计:界面熟悉、快捷键通用,并在 Apple M1/M2/M3/M4 上拥有极快的性能。你无需花费太多时间重新学习如何使用这款应用。
- 功能完整的网络调试工具套件,包括 Breakpoint、Map Local 和 Scripting,帮助你更快地调试。
✅ 1. 优化界面与调试工具
Proxyman 还对所有调试工具的界面和交互进行了优化,使其更易用,并符合 2026 年及以后的设计标准。
- 严格遵循 macOS 人机界面指南。
- Multiple Filters 支持多种过滤条件:可通过 URL、正则表达式、方法、Header、Body 等即时搜索请求。
- 固定并保存文件夹,方便之后再查看。
内置的高级调试工具:
- 内置编辑器的 Map Local。
- Map Remote:界面更好用。
- Breakpoint:实时修改请求/响应。
- Scripting:通过编写 JavaScript 代码修改请求/响应数据。它旨在取代 Charles Proxy 的 ReWrite 工具,因为它能完成 ReWrite 的所有功能,而且功能更强大。常见任务可以参考 代码片段。
- 支持网络限速和 Reverse Proxy。
- 借助 Atlantis 框架 抓取 HTTP/HTTPS、WS/WSS 和 GRPC 流量。
- Proxyman for iOS:原生 iOS 应用,可直接抓取 iOS 设备上的 HTTP/HTTPS 流量,无需 Mac(需要 iOS 16 或更高版本)。
- HTTP/2:检查 HTTP/2 的请求、响应和 trailer。
- Network Extension:抓取忽略代理设置的 Mac 应用和脚本。
- 以及更多……

✅ 2. 适用于 iOS、Android、模拟器和 Emulator 的完整证书指南
我们知道在其他设备上进行配置非常繁琐。因此,Proxyman 提供了多种指南,帮助你在以下设备上配置 Proxyman,其中部分设备只需单击一次即可完成设置。


✅ 3. 基于 JavaScript 的 Scripting
Proxyman 提供 Scripting 功能,开发者可以编写 JS 代码,以灵活的方式修改请求/响应。

- 用 JS 代码实现 Map Local / Map Remote / Breakpoint,速度快 100 倍。
- 复制粘贴 Proxyman 的 代码片段 即可使用。
- 修改请求内容,包括 Domain、Host、Scheme、Port、Path、HTTP 方法、HTTP Header、Query,以及 Body(Encoded-Form、JSON、纯文本)。
- 修改响应内容,包括 HTTP 状态码、HTTP Header,以及 Body(JSON、Encoded-Form、纯文本、二进制等)。
- 提供大量内置插件和库,用于完成哈希、编码/解码、JSON/文本转换、美化等常见任务……
- 可以编写你自己的 JS 插件或库。
- 旨在取代 Rewrite 图形界面工具。
- 通过 ShareState 或环境变量,在脚本之间或当前会话中设置并接收共享状态。
✅ 4. 持续开发
我们是一支小团队,因此可以省去所有不必要的流程,快速推进,同时依然保持产品的高质量。
到目前为止,我们取得的成果包括:
- 自 2019 年末发布首个 Beta 版本以来,我们已发布超过 150 个版本。
- 使用 Apple Swift NIO 重写了 Proxyman,它专为高性能网络应用而设计。
- 将 Proxyman 带到了 iOS 原生应用。
- 支持其他应用中的大多数调试工具,例如 Breakpoint、Map Local、Scripting、Network Conditioner 等。
- 在 Proxyman Bug Tracker 中解决了 1000 多个 Bug 和功能请求。
- 将 Proxyman 带到 iOS 原生应用,可抓取手机上的 HTTPS 流量。
- 将 Proxyman 带到了 Windows/Linux 平台。
✅ 5. Command Palette(2026 年新增)
即时查找并执行任何 Proxyman 操作。按下 ⌘⇧P,输入关键词进行搜索,让工作流程更加高效。
为什么你会喜欢它
- 打开 Command Palette(⌘⇧P),无需触碰鼠标即可调出针对命令、工具和设置的通用搜索。
- 即时搜索并执行:使用快速的模糊搜索找到操作,然后按 Enter 运行。无需翻找菜单,也无需费力查找。
- 固定常用项:让常用操作在不同窗口和会话之间触手可及。
- 了解更多:Command Palette 文档
与其他应用的对比
Wireshark

Wireshark 是一款可信度很高的跨平台应用,自 1998 年起就已发布。不过,它给开发者带来了不少麻烦:
- ❌ 设计仍停留在上个世纪
- ❌ 学习曲线陡峭,需要大量经验才能高效使用。
- ❌ 部分高级功能面向硬核开发者设计,包含大量底层信息,因此对其他用户可能不太友好。
- ✅ 工作在 TCP/UDP 层面。
- ✅ 为黑客而非开发者设计。
Charles Proxy

与 Wireshark 类似,Charles Proxy 也是一款用 Java 编写的跨平台应用,支持所有主流平台。它同样是一款非常成熟、稳定的应用,有助于简化调试流程。
- ❌ Java 应用速度较慢。
- ❌ 界面和交互体验未经优化和打磨。
- ❌ 只能看到遵循 macOS 系统代理的应用,无法像 Proxyman 的 Network Extension 那样进行透明抓包。
- ❌ 没有公开的 Bug 跟踪器。
- ✅ 对新手开发者友好,比 Wireshark 更易上手
- ✅ 功能完整的调试工具,包括 Map Local、Breakpoint、ReWrite 等
- ✅ 支持 HTTP/2。
哪款应用适合你?
很难简单地判断每款应用的好坏,因为这在很大程度上取决于开发者的个人偏好。
简而言之:
-
如果你是黑客或安全开发者,需要一套完整的代理工具来深入分析网络层面,Wireshark 和 Fiddler 可能是你的首选。
-
如果你是需要在 macOS、Windows 或 Linux 上使用数据包分析工具,并且需要完整调试功能的开发者,可以考虑 Charles Proxy。
-
如果你是测试、前端、iOS、Android 或安全开发者,希望在 macOS 上使用一款原生、高性能、具备完整调试功能并可深度定制的应用(即 Mac-assed Mac app,真正的 Mac 原生应用),那么值得试试 Proxyman。
-
如果你需要查看忽略代理设置的 Mac 应用、CLI 工具或脚本中可读的 HTTP/HTTPS 内容,那么在这三款工具中,只有 Proxyman 的 Network Extension 能在 HTTP 层面抓取它们。
接下来
来看看其他博客文章:
一个简单的选择方法
根据你需要理解的流量来选择。需要查看数据包级别的 TCP 或 UDP 细节时,Wireshark 很有用。Charles 是一款历史悠久、大家熟悉的跨平台 HTTP 代理。Proxyman 专注于应用和 API 调试,提供易读的请求视图、设备配置,以及用于修改或模拟流量的工具。如果你拿不定主意,可以在每款工具中抓取同一个小测试,然后比较配置耗时、过滤器以及你日常使用的响应视图。
更新于 2026 年 10 月 18 日:新增 HTTP/2 与 Network Extension 相关内容,加入 Proxyman、Charles Proxy 与 Wireshark 的功能对比表,并更新了 Charles Proxy 部分。
更新于 2025 年 10 月 6 日:新增 2026 年更新内容,包括带有视频占位符的全新 Command Palette 部分,刷新了文案并修正了错别字。
更新于 2024 年 4 月 8 日:结合 2024 年的新更新优化了措辞。
更新于 2022 年 3 月 22 日:优化措辞,使文章立场更加中立。
更新于 2022 年 9 月 13 日:更新新工具和新功能。
更新于 2021 年 6 月 16 日:更新新截图。
更新于 2021 年 11 月 24 日:为最新版本新增功能。
Proxyman 是一款高性能的 macOS 应用,可帮助开发者抓取并检查来自 iOS 设备、iOS 模拟器和 Android 设备上应用及域名的 HTTP/HTTPS 请求。
前往 https://proxyman.com 下载。

