在日常开发和测试中,Fiddler 一直是 Windows 平台下最常用的抓包工具。无论是 Web 调试还是移动端接口排查,Fiddler 都有相当多的用户基础。
然而,许多开发者在配置 iOS 抓包时,会遇到一个常见问题:明明设置了代理,Fiddler 却抓不到包,或者只能看到 CONNECT 请求。
如果你也遇到过类似情况,不妨跟随这篇文章,一起看看可能的原因与解决方案。
一、为什么 Fiddler 会抓不到包?
- 网络代理未配置正确
- 手机和电脑必须在同一局域网下
 - iPhone Wi-Fi 的 HTTP 代理需要设置为电脑 IP 和 Fiddler 监听端口(默认 8888)
 - 如果 IP 填写错误,流量就无法进入 Fiddler
 
 - HTTPS 解密未开启
- 默认情况下,Fiddler 并不会解密 HTTPS 流量
 - 需要手动勾选 “Decrypt HTTPS traffic”,并为目标域名启用解密
 
 - 证书未被信任
- 在 iOS 上,即使安装了证书,也需要在 “设置 → 通用 → 关于本机 → 证书信任设置” 中手动打开信任
 - 否则 HTTPS 请求仍然无法解密
 
 - 应用启用了 SSL Pinning
- 越来越多的 App 出于安全考虑,会启用 SSL Pinning 或双向认证
 - 一旦检测到证书被替换,通信会直接失败
 
 - 系统或软件冲突
- 防火墙阻止 Fiddler 的监听端口
 - 电脑上同时运行了其他代理软件,端口被占用
 
 
二、常见排查方法
- 验证代理是否正常
- 在 Safari 中访问一个 HTTP 网站,看 Fiddler 是否能显示请求
 - 如果没有流量,说明代理未生效
 
 - 检查 HTTPS 解密
- 打开 
Tools → Options → HTTPS,勾选 “Decrypt HTTPS traffic” - 添加目标域名,或用 
*匹配所有 
 - 打开 
 - 确认证书信任
- iOS 系统必须手动打开证书信任
 - 这是很多开发者常常忽略的细节
 
 - 判断是否遇到 SSL Pinning
- 如果只有特定 App 抓不到包,且 HTTPS 握手失败,基本可以确认是 SSL Pinning
 
 
三、当 Fiddler 无法突破时的替代方案
在调试某些带有高安全防护的 App 时,即便配置完全正确,Fiddler 依旧无法获取有效数据。我会使用 Sniffmaster(抓包大师) 来进行补充:
- USB 直连 iOS,无需设置 Wi-Fi 代理
 - 无需越狱或 Root,即插即用
 - 自动解密 HTTPS,可破解双向 SSL 验证
 - 仅抓取目标 App,避免无关请求干扰
 - 支持拦截器,可以用 JavaScript 修改请求与响应
 - 导出 PCAP 文件,结合 Wireshark 进行底层分析
 
四、不同工具的适用场景
| 工具 | 优势场景 | 劣势 | 
|---|---|---|
| Fiddler | Windows 环境下 Web 调试、普通接口测试 | 无法绕过 SSL Pinning | 
| Charles | 跨平台、界面友好,适合快速调试 | 在复杂加密场景下受限 | 
| mitmproxy | 可脚本化、自动化测试能力强 | 学习成本高,界面不直观 | 
| Sniffmaster | iOS 高安全场景,直连解密 HTTPS | 需额外设备连接 | 
五、实战经验总结
- 大多数情况下,代理和证书配置错误是罪魁祸首,要先逐一排查
 - 一旦遇到 SSL Pinning,就不要死磕 Fiddler,传统代理型工具无能为力
 - 直连型工具是必要补充,Sniffmaster 能很好地解决这种问题
 - 多工具协作 才能覆盖从接口调试到协议分析的完整链路
 
Fiddler 在常规接口调试中依旧非常高效,但在 iOS 环境中经常会遇到抓不到包的情况。
解决问题的思路应该是:先排查代理和证书 → 再确认解密配置 → 最后识别是否为 SSL Pinning。
当确认是应用安全机制导致时,切换到 Sniffmaster 这样的直连工具,往往能快速突破限制,让调试顺利进行。