不少人第一次做 iOS 抓包时,会认为一个前提,只要证书装好了、代理配对了,请求就一定能看到。
这个前提在早几年还勉强成立,但现在已经不太可靠了。
当你发现某个 App 怎么都抓不到包,真正需要做的不是反复重装证书,而是确认请求实际是怎么发出去的
我通常会把抓不到包拆成三个不同的问题
在实际排查中,我不会直接想为什么抓不到,而是拆成:
- 这个 App 有没有发网络请求
- 请求有没有经过系统网络
- 请求有没有被代理工具接住
每个问题,对应的工具和操作方式都不一样。
第一步:确认 App 是否真的在发请求
这个判断听起来很基础,但很多时候容易被忽略。
我会直接用数据流层的抓包来确认这一点,而不是代理模式。
在抓包大师中,通过 USB 连接 iPhone,选择数据流抓包功能,勾选目标 App 后开始抓取。这个模式下,不依赖证书,也不需要 Wi-Fi 代理。
我关心的不是内容,而是现象:
- App 打开后,是否有新的 TCP 连接出现
- 是否有 DNS 查询或 TLS 握手

如果这里完全没有动静,那问题已经不是“抓不到包”,而是 App 在当前操作路径下根本没有触发网络请求。
第二步:有连接,但 HTTPS 代理界面是空的
这是最常见的一种情况。
数据流里能看到请求,代理工具却一片空白。
这通常意味着,请求虽然是 HTTPS,但并没有走系统代理。
在这种情况下,我会回到 HTTPS 代理抓包模式,再做一次对照:
- 确认手机 Wi-Fi 代理地址和端口是否正确
- 确认证书是否在「已信任」状态
- 用 Safari 打开一个普通 HTTPS 网站验证代理是否生效
如果浏览器可以抓到,App 抓不到,基本可以判断是 App 自身绕过了系统代理。
并不是所有 HTTPS 都能被代理抓到
这是很多新手不太容易接受的一点。
一些 App 会使用:
- 自定义网络栈
- 直连 Socket
- 启用了证书校验或 SSL Pinning
这些情况下,代理证书哪怕已经安装并信任,也不会被客户端接受。
这时候就可以尝试使用https暴力抓包了
抓包大师进行 HTTPS 暴力抓包不需要越狱、设置代理或安装信任证书,能够自动解密 HTTPS 数据,即使应用设置了 PIN 和双向验证也能够正常抓包。
但是,要求被抓取的 App 必须使用 iOS 开发证书签名。对于未重签名的应用(如 iOS 系统应用或部分第三方应用),只能查看请求地址和请求头,无法查看请求体(body)。
具体参考地址:https://www.sniffmaster.net/tutorial/zh/2/2.html
第三步:在能抓到和抓不到之间找中间价值
当我确认某个 App 不适合强行做 HTTPS 解密时,通常不会继续在证书上死磕。
而是换一个目标,我能不能通过拦截器,验证客户端行为本身?
在抓包大师的 HTTPS 代理抓包界面中,即便只能抓到少量请求,我也会打开拦截器:
- 修改返回字段,看 UI 是否变化
- 返回异常状态码,观察错误处理
- 重定向接口地址,验证环境切换逻辑
这些操作不依赖完整解密,但对理解 App 行为非常有价值。

多工具并行,是减少误判的关键
一次完整的排查中,我通常会同时使用:
- 数据流抓包:确认真实网络行为
- HTTPS 代理抓包:判断是否走系统代理
- 拦截器:验证客户端对返回数据的反应
参考链接:https://www.sniffmaster.net/tutorial/zh/1/1.html