我注意到很多开发者刚开始做 iOS 抓包时,以为只有 Charles 挂代理这一种方式。抓不到包了就以为是证书没配好,反复重装描述文件——但其实 iOS 抓包的方案有好几条技术路线,适用场景和前置条件各不相同。
最常见的方案的就是代理抓包
Charles 和 Proxyman 是这个路线的代表,SniffMaster 也提供代理抓包模式。原理是在 iOS 设备上配置 Wi-Fi 代理,流量经过电脑上的代理服务器,配合 CA 证书解密 HTTPS。
操作流程:电脑和手机连同一个 Wi-Fi → 手机 Wi-Fi 设置里配代理 IP 和端口 → 在手机上安装并信任 CA 证书。Charles 需要在 Proxy → SSL Proxying Settings 里添加需要抓取的域名,不然 HTTPS 只会显示乱码。SniffMaster 的代理模式安装证书有操作引导,按提示在手机设置里信任即可。
优点是日常调试 HTTP 接口最直接。缺点是遇到 SSL Pinning 时代理证书会被客户端拒绝,而且每次换 Wi-Fi 都要重新配代理。
暴力抓包:绕过证书验证
SniffMaster 的 HTTPS 暴力抓包走设备直连模式。iOS 设备用 USB 连上 Mac,选择 HTTPS 暴力抓包,不需要在手机上配代理、装证书或信任描述文件。流量走 USB 底层通道,客户端是否信任代理证书不影响结果,SSL Pinning 也拦不住。
操作流程:USB 连设备 → 解锁亮屏 → 信任电脑(第一次) → 装驱动(Windows) → iOS 17.4+ 开启开发者模式 → 选 HTTPS 暴力抓包 → 开始。可以勾选"只抓指定 App"过滤干扰数据。
前置条件是被抓的 App 需要用 iOS 开发证书签名才能看到完整请求体,Store 版应用只能看到请求头和地址。
数据流抓包:看 TCP/UDP 传输层
Charles 和 Proxyman 主要做 HTTP 层,看不了 TCP 连接状态和重传。Wireshark 是传统方案——在 Mac 上通过 Remote Virtual Interface(rvictl)抓 iOS 流量,数据完整但操作链路长。SniffMaster 的数据流抓包也是 USB 直连,能看到 iOS 设备的全部网络流量,包括 HTTPS、Socket、TCP、UDP 和 DNS,支持自动识别常见协议。数据可以导出为 pcap 格式用 Wireshark 做深层分析。
越狱方案:运行时注入
frida + objection 的组合拳,通过越狱设备安装 frida 服务,执行 objection 的 ios sslpinning disable 命令全局禁用证书校验,Charles 就能正常抓包了。操作门槛是得有一台越狱设备,对于需要频繁调试 SSL Pinning 场景的团队来说备一台专用的越狱机还是值得的。不过 iOS 近几年的越狱工具覆盖率越来越低,这条路不一定走得通。
选型建议
日常调试普通 HTTP/HTTPS 接口,Charles 或 Proxyman 够用。遇到 SSL Pinning,优先尝试Sniffmaster暴力抓包或越狱方案。排查传输层问题,数据流抓包配合 Wireshark 分析更全面。备两套方案在手,根据场景切换就行。