推出 Network Extension:无需设置代理即可抓取 Mac 流量

推出 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 Network Extension 抓取 cURL 的 HTTP/HTTPS 流量,无需 --proxy 参数
使用 Proxyman Network Extension 抓取 cURL 的 HTTP/HTTPS 流量,无需 --proxy 参数

抓取到的请求可以使用你已经熟悉的 Proxyman 工具:

  • 🔎 检查请求和响应: 查看 URL、查询参数、头部、Cookie 和消息体,确认响应状态码以及服务器返回的数据。
  • 🧹 过滤流量: 专注于要调试的应用或域名,并在列表中隐藏无关的请求。
  • 📁 Map Local: 返回已保存的响应,无需修改后端即可测试不同的数据。
  • ✍️ Breakpoint: 暂停请求或响应,编辑后检查应用如何处理这一改动。
  • ⚙️ Scripting: 在测试过程中应用你自己的规则来修改请求和响应。

以下场景尤其有用:

  • 检查本地后端服务发出的 API 调用。
  • 查看 Ruby 或 Python 脚本向某个服务发送了什么。
  • 抓取没有代理设置选项的 Mac 应用的流量。
  • 无需逐个配置,即可调试多个应用的请求。

4. 如何开启 Network Extension

  1. 下载并打开最新版本的 macOS 版 Proxyman。
  2. 打开 Settings → Network Extension。
  3. 开启 Enable Network Extension,如果出现 Install and Enable,点击它。
在 Proxyman 设置中开启 Enable Network Extension
在 Proxyman 设置中开启 Enable Network Extension
  1. 按照 macOS 的提示,在 系统设置 → 通用 → 登录项与扩展 → 网络扩展(System Settings → General → Login Items & Extensions → Network Extensions)中启用 Proxyman。
  2. 当 macOS 询问是否添加网络配置时,点击 允许(Allow)。
  3. 保持 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 会为受支持的库准备代理和证书设置。

  1. 打开 Proxyman → Setup → Automatic Setup。
  2. 点击 Open New Terminal。
  3. 如有需要,请接受权限提示。
  4. 在该新终端中运行脚本或重启后端服务。
  5. 保持为该应用或域名开启的 SSL Proxying,然后重新发起请求。

注意事项:

  • 该设置仅适用于 Proxyman 打开的终端会话。
  • 在其他终端中运行的脚本或服务不会读取这些设置。请先停止它,然后在新终端中运行。
  • Automatic Setup 不会修改你平时的 Shell 配置文件。
  • 如果你使用 Automatic Setup 来抓包,可以关闭 Network Extension,并继续在已配置的终端中运行代码。

如果错误仍然存在,请查阅 Automatic Setup 故障排除指南。

相关文章

Noah Tran
Noah Tran

开始使用 Network Extension 抓包

在 macOS 26 或更高版本上搭配 Proxyman PRO 试用 Network Extension,检查来自 Mac 应用和脚本的请求。

下载 macOS 版 Proxyman