在 Mac 上调试

在 Mac 上,Chute 和你要看的流量在同一台机器上,所以 iPhone 那篇指南里花掉好几步的东西——一根线、一个监听器、一个密码——这里都不需要。取而代之的是另一个问题:流量到底有没有到 Chute,因为在 macOS 上,一个应用完全可以不理会代理。

1. 让流量走 Chute

两套机制,彼此独立,菜单里都能看到:

  • 系统代理 —— 菜单顶部的开关。把 Chute 注册为系统 HTTP/SOCKS 代理。读系统代理设置的应用(浏览器、多数图形界面 App)会走 Chute;不读的则毫无影响。
  • 增强模式(⌘E)—— 在网络层接管流量,应用对代理怎么想就不重要了。某个 App 根本不支持代理时,你要的就是它。授权流程和两种实现类型见增强模式

终端工具是常见的意外:curlgitnpm 这些读的是环境变量 HTTP_PROXY/HTTPS_PROXY,不是系统设置。菜单里的 复制 Shell 代理命令(⌘C)会把该用的那一行放进剪贴板——

export HTTPS_PROXY=http://127.0.0.1:8118;export HTTP_PROXY=http://127.0.0.1:8118;export NO_PROXY=127.0.0.1,localhost,.example.com

——端口是你实际的 HTTP 监听端口,NO_PROXY 由你的 skip-proxy 列表生成,所以命令行工具绕过的东西和系统代理绕过的完全一致。粘到你正在测试的那个 shell 里;它只对那个 shell 生效。

你应该看到:随着你操作 App,主窗口的 流量 标签开始出现行。一行都没有,说明流量压根没到 Chute——回到这一步,而不是去找解密的毛病。

2. 读懂流量标签

流量 列出实时连接,带一个搜索框和计数(N active)。显示列 ▾ 切换布局:

  • 双行(默认) —— 每条连接两行,适合浏览。
  • 宽表格 —— 每条连接一行,铺开全部列:主机、进程、规则、策略、协议、上传、下载、总计、状态。点表头可排序。
  • 按应用分组 —— 连接按打开它的应用归拢,带名字和图标。要回答「这个进程在跟谁说话」,这是最快的方式。

右键一行有 显示详情复制主机复制详情筛选日志(跳到 日志 标签并已按这条连接过滤)和 关闭连接

显示详情 会打开一个窗口,列出这条连接的主机、进程、协议、远端、规则、策略、改写、上传、下载和状态——关于它是怎么被选路的,全在这里。

流量标签不显示请求与响应正文。那是详情窗口里 请求与历史 按钮的用途:它会打开 Web 控制台,正文在那里。打开的是控制台首页,不是那一条连接。

3. 不发请求也能试规则

规则 标签上有一个 测试规则... 按钮。输入一个 URL 或者干脆一个域名,按 测试,Chute 会给出它解析出的主机与端口、DNS 结果、命中的规则、这条规则选中的策略,以及备注。

问题是「这个为什么走了直连」或者「我这两条规则谁赢」时就用它——它查的是运行中的规则集,所以顺便还告诉你:你刚改的那份配置,是不是真的就是加载着的那份。答案看着不对劲就重新加载配置(⌘R)。同样的问题在 API 上是 POST /api/rules/match

4. 打开录制和解密

两个都在菜单里,也都作用于运行中的内核:

  • 流量捕获(⌘B)—— 保留请求与响应正文,也就是 replica 设置。默认关闭;不开就什么都没有正文。
  • 启用 MitM(⌘M)—— 对 [MITM]hostname 列表里的主机打开解密。

两者都不会写回配置文件:重新加载配置或重启之后,以文件里的 replica[MITM] enable 为准。

CA 在 macOS 上是一步的事。在配置窗口里打开 MitM

  1. 生成新证书,或者 从 PKCS#12 文件导入证书
  2. 安装证书到系统 —— macOS 会要管理员密码,然后把它作为受信任根证书加进系统钥匙串。没有 iOS 上那个另外的「信任」步骤。
  3. 导出证书 会写出一份 .pem,这就是你把同一个 CA 弄到手机、Apple TV 或容器上的办法。

5. 收窄到一个进程

macOS 是 Chute 知道连接由哪个应用发起的平台,规则也能用上这一点:

[Rule]
PROCESS-NAME,curl,DIRECT
PROCESS-NAME,MyApp,MyProxy

PROCESS-NAMEPROCESS-PATHPROCESS-NAME-REGEX进程规则。配合流量标签里的 按应用分组,你可以只让一个应用走某个代理——或者走某个 Mock——机器上其余部分照常。

6. 只有 Mac 上才成立的事

  • Map Local 里的 data= 文件路径。 文件是由运行 Chute 的那台设备在请求发生时读取的。在 Mac 上这台设备就是你正在编辑的这台,所以真实路径可用,改一下文件下一个响应就变了,不用重载。在手机或 Apple TV 上,同一个路径毫无意义——所以 iPhone 那篇指南改用 base64=
  • 磁盘上的文件。 日志分片、运行标记和抓取内容在 ~/Chute/Share/<run id>/ 下面,见文件位置(macOS)。可以直接附在缺陷报告里,不用过分享面板。
  • 给别的设备当代理。 打开 allow-wifi-access 之后,网络上的其他机器可以把代理设置指向这台 Mac。它们的流量会出现在同样的视图里,在 Dashboard 的客户端侧栏中归到 远程 下——这也是你检查一台压根没跑 Chute 的设备的办法,Windows 笔记本或者智能电视都算。

7. 流量标签不够用的时候

  • Web 控制台 —— 菜单栏 → 打开 Web 控制台。正文、HAR 导出、会告诉你哪些改写生效过的规则页,以及诊断探针。需要 [General] 里的 external-http-controller
  • Chute Dashboard —— 一个独立的免费 App。要连本机内核,在 [General] 里写 external-controller-access = <密码>@127.0.0.1:6170,然后用 Dashboard 的 远程 分区连 127.0.0.1,端口和密码照填。值得装,因为有 MitM 工具面板,以及右键就能出的 HAR / curl 导出。
  • 日志标签 —— 先用 loglevel = verbose 抬高级别,事后记得改回来。连接行上的 筛选日志 会把这个标签收窄到那一条连接。
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-05 00:36:47

本页为英文版的翻译。如内容有出入,以英文版为准。

results matching ""

    No results matching ""