在调试过程中,很容易出现这样的情况:
- Safari 可以正常抓到 HTTPS
- 同一台 iPhone 上的某个 App 完全没有请求
- Charles 里看不到任何与该 App 相关的记录
那问题不是证书有没有安装,而是流量有没有经过 Charles。
第一步先确认代理线路本身是好的
在排查某个 App 之前,先验证代理环境是否正常。
操作顺序:
- 启动 Charles
- 确认 Proxy 端口正在监听
- iPhone 与电脑连接同一局域网
- 在 iPhone Wi-Fi 设置中填写代理地址与端口
- 安装并信任 Charles 证书
- 用 Safari 打开 HTTPS 网站
如果 Safari 请求能完整解密显示,说明:
- 代理路径成立
- HTTPS 解密配置正确
接下来再测试目标 App。
Safari 能抓到,App 没有记录时该做什么
当 Safari 有数据,而目标 App 在 Charles 中完全没有出现任何请求,可以直接判断为该 App 的网络请求没有走系统代理。
在这个状态下,重复安装证书或重启 Charles 没什么用。
验证 App 是否真的发起了网络请求
在更换工具前,可以做一个简单验证:
- 关闭 iPhone 的网络
- 重复触发 App 内的同一操作
- 观察界面是否出现加载失败或错误提示
如果行为发生变化,说明请求确实存在,只是没有经过代理路径。
确认是否存在 TLS 握手行为
如果怀疑 App 使用了自定义网络栈,可以借助底层抓包工具观察连接行为。
关注以下现象:
- 是否有 DNS 查询
- 是否建立 TCP 连接
- 是否出现 TLS ClientHello
如果这些行为存在,说明流量已经离开设备,只是 Charles 没抓到。
当代理抓不到时可以切换抓包方式
如果确认 App 不走系统代理,需要切换到设备直接抓包方式。
使用抓包大师(Sniff Master)在设备中抓取 HTTPS
抓包大师支持通过 USB 在电脑上直接抓取 iOS 设备流量。
操作步骤:
- 用 USB 将 iPhone 连接电脑
- 保持设备解锁并点击“信任此电脑”
- 启动抓包大师
- 在设备列表中选择对应 iPhone
- 按提示完成驱动与描述文件安装
- 进入 HTTPS 暴力抓包相关模式
- 启动抓包并触发 App 操作
这一方式不依赖 Wi-Fi 代理,因此不会受到系统代理路径的限制。
通过 App 筛选减少系统干扰
设备中抓包会包含系统服务流量。
在抓包大师中可以:
- 使用“选择 App”功能
- 只保留目标应用的数据
- 再次触发业务操作
这样可以在抓包列表中直接定位到相关请求。
判断数据是否完整
如果抓包结果中:
- 能看到 URL 和 Header
- 请求体或响应体为空
说明 HTTPS 已被捕获,但 App 未使用 iOS 开发证书签名。
此类情况需要:
- 获取 IPA
- 使用 iOS 开发证书重新签名
- 重新安装后再抓包
完成后即可看到完整数据。
当问题是 SSL Pinning 或双向认证
如果 App 设置了证书校验或双向验证,代理抓包往往会直接失败。
在这种情况下:
- Charles 中可能只看到连接失败
- 设备级抓包仍然可以观察到完整 HTTPS 数据
这时代理工具不再适合继续调试,需要根据需求选择合适层级。
工具之间
在 Charles 抓不到某些 App 的场景中,可以把工具拆分:
- Charles
- 验证系统代理路径
- 适合修改请求与响应
- 抓包大师(Sniff Master)
- 从设备侧获取真实 HTTPS 数据
- 不依赖代理
- Wireshark
- 用于分析导出的 TCP 数据