在日常开发和测试中,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 这样的直连工具,往往能快速突破限制,让调试顺利进行。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70044672/viewspace-3094376/
,如需转载,请注明出处,否则将追究法律责任。