在日常调试接口、查看移动端网络请求或验证 SDK 行为时,Fiddler 一直是开发者常用的抓包工具。但很多人都遇到过这样的情况:明明已经设置系统代理、安装证书、启用 HTTPS 解密,但 Fiddler 却“一个包都抓不到”。或者偶尔只能看到 CONNECT,HTTPS 内容完全没有。
这些现象并不是 Fiddler 单独的问题,而是 iOS、网络协议、证书体系与应用网络栈交互产生的结果。本文将以工程实践的方式解构 Fiddler 抓不到包的原因、排查思路、常见陷阱,并给出代理工具失效时的补充手段,包括如何使用 抓包大师(Sniffmaster) 捕获 TCP/HTTPS 数据流完成最终分析。
一、为什么 Fiddler 常常抓不到包?(核心原因概览)
Fiddler 与 Charles 等代理工具一样,依赖系统代理 + TLS 中间证书来实现 HTTPS 解密。所以,只要环境、协议或 App 本身不走代理,抓包自然失败。
证书链未被信任或被中间设备替换
表现:
- 只有 CONNECT
- 无 HTTPS 解密内容
- APP 报“网络异常或证书错误”
常见于:
- 公司 Wi-Fi
- 办公网关注入证书
- iOS 证书信任未开启
应用启用了证书 Pinning(最常见原因)
表现:
- Safari 能抓
- APP 完全抓不到
- Fiddler 面板没有任何请求
pinning 会直接拒绝代理证书链。
QUIC / HTTP3 完全绕过系统代理
QUIC 使用 UDP,Fiddler 基于 TCP 代理,看到 QUIC 流量是“不可能任务”。
表现:
- 部分接口抓不到
- 网络切换后能抓
- 视频/直播/社交类 API 尤其常见
APP 使用自定义协议或自定义网络栈
例如:
- TCP 二进制协议
- 内嵌 SDK 的独立网络层
- WebSocket 长连接
这些都不会经过 Fiddler。
系统代理被 VPN、公司网关或安全软件覆盖
Fiddler 配置完全正确,但系统代理被覆盖 → 无效。
二、Fiddler 抓不到包的排查流程(工程可复用 SOP)
以下流程专为 iOS + Fiddler 场景总结。
验证代理与证书是否生效
检查:
- 代理 IP 与端口
- Fiddler 是否监听 HTTPS
- iOS 中是否信任证书
- 是否使用 VPN(会覆盖代理)
若 HTTPS 一条都看不到 → 多半是证书问题。
判断是否为 Pinning 导致抓包失败
判断方式:
- 浏览器能抓
- APP 抓不到
- 没有任何 TLS 握手
这是最典型的场景。
若为 pinning → 应直接使用补抓方式。
判断是否为 QUIC(HTTP/3)绕过代理
关闭 QUIC 后再次尝试。
如果关闭 QUIC 后能抓 → 说明之前的流量本身就不走代理。
查看服务器端是否收到请求(tcpdump 验证链路)
使用后端 tcpdump 抓取是否有 ClientHello:
sudo tcpdump -i any port 443 -s 0 -w server.pcap
- 若服务端无任何握手 → 请求在客户端就被拦截
- 若有握手但失败 → 证书链有问题
三、当 Fiddler 抓不到包时:必须使用补抓工具(核心)
在代理彻底无法使用、证书链不可信、APP 拒绝代理证书、QUIC 绕过代理时,需要一种“非代理式抓包方式”来补充。
这时就需要用到:
抓包大师(Sniffmaster)——解决 Fiddler 抓不到包的关键补抓能力
能解决 Fiddler 抓不到的场景:
- HTTPS 解密失败
- 证书 pinning 阻断
- QUIC UDP 流量
- 自定义 TCP 协议
- 应用不走系统代理
- 流量噪声过大无法定位
技术能力包括:
- 抓取 HTTPS / HTTP / TCP / UDP 流量
- 可过滤某个 App / 进程 / 域名
- 自动识别协议类型
- 可查看纯 TCP 数据流(HEX / 文本 / 二进制)
- 可使用 JavaScript 拦截修改请求或响应
- 支持导出 Wireshark 可读 pcap
- 支持 Windows / macOS / iOS 多平台
适用流程:
- 启动 Sniffmaster
- 选择目标 App 或域名过滤
- 抓取全部 TCP / TLS 流量
- 导出 pcap 到 Wireshark
- 与服务器 tcpdump pcap 逐帧比对
- 最终确认问题位置:
- TLS
- 证书链
- QUIC
- 网络丢包
- 应用拒绝代理
这一步是 Fiddler 无法覆盖的。
四、实战案例:Fiddler 完全抓不到 HTTPS
某金融类 APP 在调试时遇到:
- Fiddler 无任何 HTTPS
- 仅看到 CONNECT
- APP 内报“网络不可用”
排查步骤:
- 系统代理与证书检查无误
- Safari 能抓 → 系统证书正常
- 服务器 tcpdump 无任何握手
- 使用 Sniffmaster 捕获流量 → 发现 TLS Alert
- Wireshark 展示 pinning 失败
- 结论:APP 内强制 pinning 拒绝代理证书
最终通过底层抓包(非代理方式)成功定位问题原因。
解决 Fiddler 抓不到包必须“分层抓包”
| 抓包层级 | 工具 | 场景 |
|---|---|---|
| 代理层 | Fiddler / Charles / Proxyman | 调试 HTTPS 内容 |
| 协议层 | tcpdump / Wireshark | 握手、链路分析 |
| 自动化 | mitmproxy 脚本 | 批量分析 |
| 补抓层 | 抓包大师(Sniffmaster) | 代理失败、pinning、QUIC、自定义协议 |
单靠 Fiddler 无法覆盖所有 iOS 场景,分层抓包才是完整方案。
随时随地看视频