在日常开发调试中,Fiddler 作为常用的代理式抓包工具,能帮助我们查看 HTTP/HTTPS 请求、修改报文、模拟响应。然而,许多开发者用久了都会遇到一个问题——Fiddler 抓不到包,尤其是在 iOS 或 HTTPS 场景下,问题更复杂:请求不进 Fiddler、HTTPS 无法解密、只有部分域名能抓到、App 明明在发请求但工具看不到……


一、Fiddler 抓包失败最常见的三个原因

在 iOS 和 HTTPS 场景下,Fiddler 抓包失败普遍来自:

代理证书未被系统或 App 信任

  • iOS 不信任根证书
  • 企业 Wi-Fi 对证书做拦截
  • App 开启 ATS 限制(AppTransportSecurity)

表现:HTTP 可抓取 → HTTPS 无法解密。


App 启动了证书 pinning

现代 App 为了安全,会在客户端内置证书或公钥,这会导致:

  • App 拒绝 Fiddler 的伪造证书
  • HTTPS 请求直接失败或绕过代理

表现:Fiddler 完全没有请求流量。


协议或网络实现绕过系统代理

常见场景包括:

  • App 使用自定义网络库(例如 CFNetwork 绕过代理)
  • App 启用了 HTTP/3 / QUIC(走 UDP,不走代理)
  • 局域网路由器劫持代理
  • VPN / 公司 Wi-Fi 注入证书替换链路

这类情况下,Fiddler 本身就无法截获流量。


二、Fiddler 抓包失败时的排查流程(可直接执行)

检查代理设置是否生效

确认 iOS 的 Wi-Fi 设置中是否正确配置代理(IP + 端口)。
如果 Fiddler 上只有 CONNECT 但没有 HTTPS 请求 → 说明未成功解密。


检查 Fiddler 证书是否被信任

在 iOS 的“证书信任设置”中确保已启用信任开关。
如果依然失败 → 多半是 pinning 或被中间链路阻断。


排查 pinning 或自定义 TLS

若浏览器能抓,但 App 抓不到,则几乎可以确认:

  • 应用启用证书 pinning
  • 或使用自定义 TLS 栈绕过系统代理

此时无需在 Fiddler 上不断重试,应该切换思路进行 补抓


检查是否为 HTTP/3 / QUIC 流量

Fiddler 使用 TCP 代理 → 无法抓取 UDP/QUIC
可通过关闭应用的 HTTP/3 或在系统层禁用 QUIC 来验证。


通过后端抓包确认请求是否到达

如果怀疑链路问题,在服务端抓包:

sudo tcpdump -i any host <client_ip> and port 443 -s 0 -w server.pcap

若后端连 ClientHello 都没收到 → 请求在客户端之前就失败。


三、当 Fiddler 无法抓包时,如何“补抓”?

这是大多数开发者不知道的关键步骤。

当 Fiddler 失败时,应使用能够直接捕获 TCP/HTTPS 数据流、并导出 pcap 的工具,弥补代理工具的不足。

Sniffmaster 能解决 Fiddler 难以处理的场景:

  • 无需代理即可抓 HTTPS / TCP 流量
  • 支持按 App / 域名过滤,减少噪音
  • 自动识别 HTTPS/HTTP/mdns 等协议
  • 可查看原始 TCP 数据流(文本 / HEX / 二进制)
  • 可导出 Wireshark 兼容 pcap(用于与服务器端 tcpdump 对比)
  • 支持 拦截器 + JavaScript 进行请求/响应调试
  • 跨平台(Windows / macOS / iOS)

在 Fiddler 无法破解 pinning、无法代理 QUIC、无法抓 TCP 数据流的情况下,Sniffmaster 经常被用作 补抓工具

典型补抓流程:

  1. 用 Sniffmaster 抓取 App 的 TCP/TLS 流量
  2. 导出为 pcap
  3. 再用 Wireshark 与服务器端 pcap 对比
  4. 找出握手失败、证书问题、丢包或应用侧异常

这是排查复杂 HTTPS 问题时最可靠的流程。


四、Fiddler 抓包失败的实际案例(工程化说明)

一个常见案例:

  • 某 iOS App 在公司 Wi-Fi 下无法抓 HTTPS
  • Fiddler 仅出现 CONNECT 请求,但无解密内容
  • 服务端抓包未看到 ClientHello → 请求根本没发出
  • 使用 Sniffmaster 抓取 TCP 数据流后,发现证书链被公司 Wi-Fi 注入
  • TLS 握手被客户端拒绝 → 无法进入 HTTP 阶段

最终定位问题:无线网络替换证书导致 App ADS 机制阻断请求

若仅依赖 Fiddler,是无法定位的。


五、标准化团队抓包流程(适用于所有 iOS/HTTPS 场景)

推荐以下模板:

输入信息

  • 系统版本、网络类型
  • 抓包时间窗(秒级)
  • 工具链说明

必须提供的内容

  • 客户端流量(Fiddler 或 Sniffmaster pcap)
  • 服务端流量(tcpdump pcap)
  • Wireshark 关键帧截图
  • TLS 握手细节(ClientHello、Alert、证书链)

结论与修复建议

  • 是否为 pinning
  • 是否为链路代理或证书替换
  • 是否为 QUIC 绕过代理
  • 是否为应用层超时问题

Fiddler 抓包失败不是单一工具的问题

真正的解决方案应该是:代理工具 + 底层抓包 + 补抓工具 + Wireshark 分析 的多工具协作模式。

推荐工程师的抓包工具链:

场景 工具
明文 / 可解密 HTTPS Fiddler / Charles / Proxyman
底层 TCP/TLS 分析 tcpdump + Wireshark
自动化 mitmproxy 脚本 / pyshark
代理失败 / pinning / QUIC 抓包大师(Sniffmaster) 作为补抓

采用这种组合方式,几乎所有“抓不到包”的问题都能被逐层拆解定位。