推出 Network Extension:无需设置代理即可抓取 Mac 流量
阅读约 5 分钟
Proxyman 现已支持 Network Extension 🎉
抓取 Mac 上应用和脚本的 HTTP/HTTPS 流量,包括忽略系统代理的应用。无需在每个应用中单独配置代理。
本文涵盖以下内容:
- 普通代理模式存在的问题。
- Network Extension 如何帮助抓取遗漏的流量。
- 如何开启它,并继续使用你现有的调试工具。
- 如何通过 Automatic Setup 修复 Node.js、Ruby 和 Python 中的 SSL 错误。
Network Extension 目前为 BETA 测试版,默认关闭。需要 Proxyman PRO 和 macOS 26 或更高版本。
1. 普通代理模式的问题
普通代理模式的原理是在 macOS 中设置 HTTP/HTTPS 代理。遵循该设置的应用会将请求发送到 Proxyman。
但有些应用和库并不使用系统代理:
- 请求缺失: 浏览器的流量可能会显示出来,而脚本或后端服务发出的请求却不见了。
- 代理设置各自独立: 根据所用的库不同,Node.js、Ruby、Python 和命令行工具可能需要各自的代理配置。
- 需要修改代码: 有些库要求你直接在代码中传入代理地址。
- 重复配置: 切换到另一个项目或 HTTP 库时,可能需要重新配置代理。
请求仍然会到达服务器,只是绕过了 Proxyman。逐个手动配置每个库既耗时,也容易出错。
2. 解决方案:Network Extension ✅
Network Extension 在系统层面捕获 HTTP/HTTPS 连接,并将其转发到 Proxyman。即使应用忽略了 macOS 代理设置,它也能抓取请求。
- 无需在每个应用中填写代理地址。
- 无需为了让请求经过 Proxyman 而修改应用代码。
- 如上图所示,运行 cURL 时无需加
--proxy参数。 - Proxyman 抓取请求的同时,你可以照常使用应用和脚本。
这种方式称为透明代理:连接的路由由 macOS 处理,因此应用无需自行管理代理。
基于 Apple 官方 Network Extension API 构建
- 使用 Apple 官方的透明代理 Network Extension API。
- 以原生 macOS 系统扩展的形式运行,由 Proxyman 开发和维护。
- 使用我们的 TablePlus Inc Developer ID 证书签名,并经过 Apple 公证。
- 通过 macOS 标准的扩展设置进行安装和批准。
我们的目标是利用 Apple 原生网络 API 实现快速、高效的抓包,让你在开始调试前需要的设置更少。
Network Extension 负责流量抓取。要读取 HTTPS 内容,你的应用仍需信任 Proxyman 证书,并且必须为该应用或域名开启 SSL Proxying。
3. 能做什么?

抓取到的请求可以使用你已经熟悉的 Proxyman 工具:
- 🔎 检查请求和响应: 查看 URL、查询参数、头部、Cookie 和消息体,确认响应状态码以及服务器返回的数据。
- 🧹 过滤流量: 专注于要调试的应用或域名,并在列表中隐藏无关的请求。
- 📁 Map Local: 返回已保存的响应,无需修改后端即可测试不同的数据。
- ✍️ Breakpoint: 暂停请求或响应,编辑后检查应用如何处理这一改动。
- ⚙️ Scripting: 在测试过程中应用你自己的规则来修改请求和响应。
以下场景尤其有用:
- 检查本地后端服务发出的 API 调用。
- 查看 Ruby 或 Python 脚本向某个服务发送了什么。
- 抓取没有代理设置选项的 Mac 应用的流量。
- 无需逐个配置,即可调试多个应用的请求。
4. 如何开启 Network Extension
- 下载并打开最新版本的 macOS 版 Proxyman。
- 打开 Settings → Network Extension。
- 开启 Enable Network Extension,如果出现 Install and Enable,点击它。

- 按照 macOS 的提示,在 系统设置 → 通用 → 登录项与扩展 → 网络扩展(System Settings → General → Login Items & Extensions → Network Extensions)中启用 Proxyman。
- 当 macOS 询问是否添加网络配置时,点击 允许(Allow)。
- 保持 Proxyman 打开,然后从应用或脚本发起一个新请求。
如需检查 HTTPS 流量:
- 在 Mac 上安装并信任 Proxyman 证书。
- 为要检查的应用或域名开启 SSL Proxying。
- 发起一个新请求,然后在 Proxyman 中选中它以查看内容。
需要注意以下几点:
- 开启扩展之前已在运行的应用需要重启,以便它们建立新连接。
- 如果想停止通过它抓包,请在设置中关闭 Enable Network Extension。
- 此功能只抓取 Mac 上应用的流量。如需抓取 iPhone 或 Android 设备的流量,请参阅单独的设备设置指南。
如需查看所有安装截图,请参阅 Network Extension 文档。
5. 故障排除:Node.js、Ruby 或 Python 中的 SSL 错误
问题
开启 HTTPS 检查后,你的脚本报告 SSL 或证书错误。
- 这些运行时可能使用各自的证书设置。
- 在 macOS 中信任 Proxyman 的自签名证书,对你所用的库来说可能还不够。
- Network Extension 会将流量转发到 Proxyman,但不会自动为每种运行时配置证书信任。
解决方案:使用 Automatic Setup 脚本 ✅
Proxyman 的 Automatic Setup 会为受支持的库准备代理和证书设置。
- 打开 Proxyman → Setup → Automatic Setup。
- 点击 Open New Terminal。
- 如有需要,请接受权限提示。
- 在该新终端中运行脚本或重启后端服务。
- 保持为该应用或域名开启的 SSL Proxying,然后重新发起请求。
注意事项:
- 该设置仅适用于 Proxyman 打开的终端会话。
- 在其他终端中运行的脚本或服务不会读取这些设置。请先停止它,然后在新终端中运行。
- Automatic Setup 不会修改你平时的 Shell 配置文件。
- 如果你使用 Automatic Setup 来抓包,可以关闭 Network Extension,并继续在已配置的终端中运行代码。
如果错误仍然存在,请查阅 Automatic Setup 故障排除指南。
相关文章
