在 Mac 上查看 iPhone 的 HTTPS 流量

这篇指南从一部装好 Chute 的手机开始,到 Mac 上打开一个窗口、看到这部手机解密后的请求(含请求与响应正文)、可以筛选和导出为止。它把各自有参考页的东西——CA、主机列表、录制、控制通道、Dashboard——按你实际操作的顺序串起来,并在每一步说明继续之前你应该看到什么。

你需要:

  • 手机上的 Chute iOS,且已有许可证。在 iPhone 上,HTTPS 解密和正文捕获是需要许可证的功能;没有许可证时下面的一切仍能连上,但 HTTPS 行始终不透明、数据 Tab 始终为空。见许可证与激活
  • Mac 上的 Chute Dashboard——免费,不需要许可证。
  • 一根 USB 线(推荐:网络上什么都不用开放,蜂窝网络下也能用),或者手机和 Mac 在同一个 Wi-Fi 下。

如果你不想在 Mac 上装任何东西,Web 控制台在浏览器里显示同样的连接、正文和改写,手机上只需要 external-http-controller。下面的第 1–3 步对它同样适用;从第 4 步起,改按打开 Web 控制台操作。

1. 安装并信任 CA

在手机的配置编辑器里:MITM → 配置 CA → 生成新的 CA 证书,然后 将 CA 证书安装到系统,再到 设置 → 通用 → 关于本机 → 证书信任设置 信任它。完整步骤——包括所有人都会漏掉的那一步——在 HTTPS 解密页。

你应该看到:证书页显示 受信任的 CA 证书。如果显示的是不受信任,证书信任设置里的开关还没打开——打开之前后面什么都不会成功。

2. 声明要解密哪些主机

Chute 只解密你列出的主机。在编辑器的 MitM 分区(就是有 配置 CA 的那个)里,加上你要看的主机。从窄的开始——你在调试的那个 App 的 API 主机——而不是 *:每多解密一个主机都要耗手机的 CPU,而且有些 App 固定了证书,一解密就坏。*.apple.com 最好一开始就排除掉。

[MITM]
enable = true
hostname = api.example.com, *.example.net, -*.apple.com

语法——端口、- 排除、/path 限定——在 HTTPS 解密页。之后也可以在 Dashboard 的 MitM 规则 面板里边看效果边增删主机,再把有用的写进配置。

3. 打开解密和录制

在手机的控制面板上,两个开关:

  • MitM —— 对第 2 步的主机打开解密。
  • 转储数据 —— 记录请求与响应正文(即 replica 设置)。不开的话,Dashboard 能看到每条连接及其规则与策略,但没有数据。

两个开关之后也都能从 Dashboard 的工具栏拨,所以现在忘了也没关系。除非写进配置([General]replica = true[MITM]enable = true),否则重启后都不保留。

4. 允许 Dashboard 连接

在配置编辑器里:外部控制器 → 外部控制器访问

  1. 打开 允许 Chute Dashboard/Chute CLI 连接
  2. 填一个 端口(任意空闲端口;没有偏好就用 6170)和一个你自己的 密码
  3. 允许通过 Wi-Fi 访问:走 USB 就让它关着。只有你打算通过 Wi-Fi 连接时才打开——它会把监听器开放给这个网络上所有知道密码的人。
  4. 保存,然后启动(或重启)隧道。

你应该看到:控制面板显示 外部访问端口:6170(你的端口)。如果没有这一行,说明隧道跑的不是保存后的配置——重启它。

5. 连接 Dashboard

把手机用线连上 Mac,手机上如果询问就点 信任 这台电脑。打开 Chute Dashboard;在 Chute 新建仪表盘 窗口里用 USB 分区:填第 4 步的 端口密码,连接。

改走 Wi-Fi 的话:用 远程 分区,主机 填手机的地址(设置 → Wi-Fi → ⓘ 里的 IP 地址),端口和密码同上。

你应该看到:一个以该连接为标题的 Dashboard 窗口,随着手机发起连接,它的 活跃 列表逐渐填满。如果是空的,用手机操作几秒钟。这一步可能出的两种错都有明白的提示:密码不匹配,以及窗口根本打不开——手机不可达(地址错、Wi-Fi 访问没开、隧道没在跑)。细节在 Dashboard 页。

6. 检查工具栏开关

活跃列表顶部是第 3 步那两个开关在 Dashboard 里的样子:

  • 记录流量 应显示为 停用流量记录——录制已开。如果还是记录流量,点一下。
  • 启用 MitM(N 条规则) 应显示为 停用 MitM(N 条规则)——解密已开,N 是第 2 步的主机数。如果 N0,主机列表没有到达手机:检查第 2 步并重启隧道。

7. 复现并找到请求

在 App 里做那个你想看流量的操作。然后收窄列表:工具栏的 筛选 打开筛选栏;在 筛选主机/URL… 里输入主机,或者勾上 仅 MitM 只留解密过的行。

你应该看到:你的主机的行在 标记 列有 M方法 是真实的(GETPOST),状态 也不再是 CONNECT。打开一行:请求头 Tab 有头、查询参数和 Cookie;响应数据 显示正文——是 JSON 就显示成 JSON 树,是图片就显示成图片。

如果你的主机的行显示 CONNECT 且没有 M,说明这条连接没有被解密。按可能性从高到低:主机不在列表里(或模式匹配不上——api.example.com 不覆盖 www.example.com);MitM 关着;CA 装了但没信任(App 自己会报证书错误);App 固定了证书(排除这个主机,接受看不到里面);App 走的是 QUIC 上的 HTTP/3,无法解密——设置 block-quic 把它逼回 TCP。

如果行上有 M 但数据 Tab 显示 无数据:这条连接运行时录制是关的(打开后再复现一次);主机被手机上的 [Replica] 过滤掉了;或者正文大于 2 MiB,手机拒绝交出。

8. 保存你的发现

在行上右键:将所选导出为 HAR… 得到一个能用浏览器开发者工具、Charles 或 Proxyman 打开的文件;复制 curl 命令 可以在 Mac 的终端里重放某个请求;将所选导出为 CSV… 给电子表格用。数据 Tab 里的 导出为 bin 把一个正文按捕获时的样子存下来。

9. 改点什么(可选)

MitM 视图的面板编辑的是运行中的内核。两个快速实验:

  • Header 重写 → 为你的主机加一条规则:请求添加X-Debug = 1。复现;新的行带上 HR,详情窗口的 命中的规则 会引出你的规则。
  • Map Local → 用一个文件应答某个端点。对手机来说,文件路径必须是手机读得到的,所以这个面板的 文件路径(你 Mac 上的路径)不适用;改用规则的 base64= 形式,从手机自己的编辑器或 Web 控制台添加——见 MitM 工具下的注意。被模拟应答的行带 K

这里加的规则在隧道重启后就没了。哪条管用,就把它写进配置——参考页:URL 重写Header 重写Body 重写Mock 响应

结束之后

  • 关掉 转储数据,或设 replica = false:录制开着的时间里,正文会一直在手机上累积。
  • 如果你打开过 允许通过 Wi-Fi 访问,把它关回去。
  • 以后还要做就把 CA 留着;否则到 设置 → 通用 → VPN 与设备管理 里移除。
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-01 12:09:20

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

results matching ""

    No results matching ""