中文 | EN
开发者文档

在 Mac 上调试 iPhone 流量

RVI 官方抓包方案 + Mac 侧本地代理 CLI

作为开发者,多数工作其实是在 Mac 上完成的。本页给你两条在 Mac 上调试 iOS 网络流量的官方可行路径:

方案 A:RVI — 在 Mac 上直接抓 iPhone 真机流量

Apple 官方提供了 Remote Virtual Interface (RVI):把 iPhone 通过 USB 连接 Mac 后, Mac 上会出现一张叫 rvi0 的虚拟网卡,你在这张网卡上抓到的就是 iPhone 的真实流量。 这是调试"线上 App 在真机上的网络行为"最准确的方法,因为抓的就是线上运行的同一份代码、同一份流量。

前置

步骤

# 1. 查看设备 UDID
idevice_id -l
# 或
system_profiler SPUSBDataType | grep "Serial Number"

# 2. 创建 RVI (替换成你的 UDID)
rvictl -s <UDID>

# 3. 用 tcpdump 抓包
sudo tcpdump -i rvi0 -w iphone-traffic.pcap

# 或直接用 Wireshark:选中 rvi0 网卡即可

# 4. 用完关闭
rvictl -x <UDID>

典型工作流

  1. Mac 上打开 Wireshark,选 rvi0 网卡
  2. iPhone 上打开你的 App(或"简单抓包"本身)
  3. 复现要调试的操作
  4. 回到 Wireshark 查看所有 TCP/UDP 交互;如果是 HTTPS,配合 MITM 根证书可以看明文
注意:RVI 只能抓 iPhone 的流量,不能"在 Mac 上运行 iOS App"。 本 App 自带 Network Extension (Packet Tunnel),Apple 不允许它以"Designed for iPhone on Mac"形式运行。

方案 B:make run_mac — Mac 侧本地代理 CLI

本项目提供了一个 Mac 原生 CLI simplemultiapp-mac, 它复用与 iOS 版 完全相同的 CoreLogic + leaf 代理引擎, 在 Mac 上启动一个本地 SOCKS5 监听端口。你可以把 curl / Wireshark / Proxyman / Charles 指向它,从而在 Mac 上直接调试"本 App 的代理行为 + 规则匹配 + 订阅解析"等逻辑。

构建前置

一键运行

# 默认:127.0.0.1:1080,使用内置预设节点
make run_mac

# 指定端口
PORT=7890 make run_mac

# 使用订阅
SUBSCRIPTION_URL="https://uni.sonicjs.com/inspired/sub?token=XXXX" make run_mac

# 使用本地 leaf 配置
CONFIG=/path/to/leaf.conf make run_mac

验证

curl -x socks5h://127.0.0.1:1080 https://httpbin.org/ip

配合 Proxyman / Charles 抓 HTTPS

  1. Proxyman/Charles 打开,设置系统代理 (macOS 会自动)
  2. 在 Proxyman 的 External Proxy 里把 upstream SOCKS 设为 127.0.0.1:<PORT>
  3. 所有 HTTPS 请求就会先走 leaf 代理,再由 Proxyman MITM 解密

架构说明

这个 CLI 不会触碰系统 VPN / Network Extension —— 它只在本地开一个 SOCKS5 端口, 其他应用主动指向它就会被代理。因此:

← 返回首页