iOS 系统比较封闭,很多开发者以为抓包就必须越狱——装 SSL Kill Switch、用 Cydia Substrate 注入、或者用 OpenSSH 提权。但实际上绝大部分抓包需求不用越狱也能满足,只是方式不同。

越狱抓包的原理

越狱后抓包通常走的是 hook 系统证书验证函数。SSL Kill Switch 2 是越狱设备上最常用的工具,安装后自动禁用证书校验,Charles 等代理工具就能正常抓包。frida + objection 这套组合也可以在不越狱的侧载环境下做运行时 hook 操作。越狱方案的优点是能彻底绕过 SSL Pinning,缺点是越狱设备越来越难搞,iOS 越狱覆盖率持续走低,很多团队已经没有专门的越狱测试机了。

代理抓包

最常用的非越狱方案是代理抓包。Charles、Proxyman 和 SniffMaster 的代理模式都走这个原理。iOS 设备连上同一 Wi-Fi,配置代理指向电脑上的抓包工具,在手机上安装并信任抓包工具的 CA 证书后 HTTPS 明文内容就能看到。

代理抓包的局限主要有两个。一是 SSL Pinning 会被拦——服务端做了证书绑定的情况,代理工具的证书会被拒绝。二是每次换 Wi-Fi 都要重新配代理,手动操作较多。

免代理直连抓包

SniffMaster 的暴力抓包模式走的是 USB 直连,不需要代理配置。iOS 设备用 USB 线连上电脑,解锁亮屏,选择暴力抓包模式就可以开始抓取 HTTPS 请求。

这个模式不依赖手机端的代理设置和 CA 证书信任。即使 App 做了 SSL Pinning 或者双向证书验证,暴力抓包也能正常解密。因为流量走的是 USB 底层通信通道,客户端是否信任代理证书不影响结果。免越狱免配置是这款方案的核心卖点。

暴力抓包的限制在于对 App Store 版应用只能看到请求头和地址,完整的请求体和响应体需要用开发证书重签名后才能查看。

数据流抓包

数据流抓包模式同样不需要越狱环境,通过 USB 连接捕获 iOS 设备的全部网络流量。同时支持 TCP、UDP 和 DNS 层面,能够查看和记录完整的数据流信息。

工具推荐

按场景推荐工具。日常 HTTP 接口调试用 Charles 或 Proxyman 做代理抓包,配置简单、社区方案多。需要绕过 SSL Pinning 或者不想配代理直接抓,用 SniffMaster 暴力抓包。需要传输层分析用 SniffMaster 数据流抓包加 Wireshark 配合。越狱设备在绝大多数场景下已经不是必要条件了。

ScrCpy 等工具还能实现无需越狱即可读取 iOS 设备的系统日志。