Proxyman、Charles Proxy 与 Wireshark 对比:哪款抓包工具更适合你?

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 看不到的流量

Proxyman Network Extension 无需 --proxy 参数即可抓取 cURL 的 HTTPS 请求
Proxyman Network Extension 无需 --proxy 参数即可抓取 cURL 的 HTTPS 请求

普通代理的问题

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)搭配使用,同时查看两个端点。
Proxyman Connection Log 显示服务器已为 HTTP/2 连接接受 h2 协议
Proxyman Connection Log 显示服务器已为 HTTP/2 连接接受 h2 协议

Charles Proxy 从第 4 版起就支持 HTTP/2,因此从 Charles 迁移到 Proxyman 不再意味着放弃这一功能。Wireshark 可以解码 HTTP/2 帧,但除非导出 TLS 会话密钥,否则 HTTPS 流量仍是加密的。配置细节请参阅 HTTP/2 发布博客。

Proxyman、Charles Proxy 与 Wireshark 一览

ProxymanCharles ProxyWireshark
抓取忽略系统代理的应用✅ 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 应用

Charles Proxy、Fiddler、Wireshark 与 Proxyman 的对比
Charles Proxy、Fiddler、Wireshark 与 Proxyman 的对比
  • 业界领先的 原生 macOS 应用。
  • 基于 SwiftNIO 构建,这是一个跨平台的异步事件驱动网络应用框架,由 Apple 开发并维护。
  • 以开发者的思路设计:界面熟悉、快捷键通用,并在 Apple M1/M2/M3/M4 上拥有极快的性能。你无需花费太多时间重新学习如何使用这款应用。
  • 功能完整的网络调试工具套件,包括 Breakpoint、Map Local 和 Scripting,帮助你更快地调试。

✅ 1. 优化界面与调试工具

Proxyman 还对所有调试工具的界面和交互进行了优化,使其更易用,并符合 2026 年及以后的设计标准。

  • 严格遵循 macOS 人机界面指南。
  • Multiple Filters 支持多种过滤条件:可通过 URL、正则表达式、方法、Header、Body 等即时搜索请求。
  • 固定并保存文件夹,方便之后再查看。

内置的高级调试工具:

  1. 内置编辑器的 Map Local。
  2. Map Remote:界面更好用。
  3. Breakpoint:实时修改请求/响应。
  4. Scripting:通过编写 JavaScript 代码修改请求/响应数据。它旨在取代 Charles Proxy 的 ReWrite 工具,因为它能完成 ReWrite 的所有功能,而且功能更强大。常见任务可以参考 代码片段。
  5. 支持网络限速和 Reverse Proxy。
  6. 借助 Atlantis 框架 抓取 HTTP/HTTPS、WS/WSS 和 GRPC 流量。
  7. Proxyman for iOS:原生 iOS 应用,可直接抓取 iOS 设备上的 HTTP/HTTPS 流量,无需 Mac(需要 iOS 16 或更高版本)。
  8. HTTP/2:检查 HTTP/2 的请求、响应和 trailer。
  9. Network Extension:抓取忽略代理设置的 Mac 应用和脚本。
  • 以及更多……
Proxyman 运行于 macOS 27 Golden Gate,并支持 Apple M3 芯片
Proxyman 运行于 macOS 27 Golden Gate,并支持 Apple M3 芯片

✅ 2. 适用于 iOS、Android、模拟器和 Emulator 的完整证书指南

我们知道在其他设备上进行配置非常繁琐。因此,Proxyman 提供了多种指南,帮助你在以下设备上配置 Proxyman,其中部分设备只需单击一次即可完成设置。

iOS 设备的详细配置指南
iOS 设备的详细配置指南
一键配置 iOS 模拟器
一键配置 iOS 模拟器

✅ 3. 基于 JavaScript 的 Scripting

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

Charles Proxy、Fiddler、Wireshark 与 Proxyman 的对比
Charles Proxy、Fiddler、Wireshark 与 Proxyman 的对比
  • 用 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,输入关键词进行搜索,让工作流程更加高效。

为什么你会喜欢它

  1. 打开 Command Palette(⌘⇧P),无需触碰鼠标即可调出针对命令、工具和设置的通用搜索。
  2. 即时搜索并执行:使用快速的模糊搜索找到操作,然后按 Enter 运行。无需翻找菜单,也无需费力查找。
  3. 固定常用项:让常用操作在不同窗口和会话之间触手可及。

与其他应用的对比

Wireshark

Wireshark 界面
Wireshark 界面

Wireshark 是一款可信度很高的跨平台应用,自 1998 年起就已发布。不过,它给开发者带来了不少麻烦:

  • ❌ 设计仍停留在上个世纪
  • ❌ 学习曲线陡峭,需要大量经验才能高效使用。
  • ❌ 部分高级功能面向硬核开发者设计,包含大量底层信息,因此对其他用户可能不太友好。
  • ✅ 工作在 TCP/UDP 层面。
  • ✅ 为黑客而非开发者设计。

Charles Proxy

Charles Proxy 界面
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 下载。

Noah Tran
Noah Tran

最后修订于 2026年10月18日。 新增 HTTP/2 和 Network Extension 的介绍,说明它们与 Charles Proxy 和 Wireshark 相比带来了哪些变化,并增加了功能对比表。

体验现代化的 HTTP 调试流程

在 Proxyman 中抓取一次真实的应用会话,探索过滤器、Breakpoint、Map Local、Scripting 以及设备配置指南。

下载 Proxyman