Fiddler抓不到HTTPS请求的响应内容怎么办?

A. 新利 阅读 33

用Fiddler调试时发现,发给https://api.example.com的请求在会话里显示为空响应体,明明已经安装了证书。

我写了个测试页面用fetch调用接口:<pre class="pure-highlightjs line-numbers"><code class="language-javascript"><code class="language-html">&lt;script&gt;
fetch('https://api.example.com/data', {headers: {'User-Agent': 'test'}})
  .then(res =&gt; res.json())
  .then(data =&gt; console.log(data));
&lt;/script&gt;</code></code></pre>

在Fiddler里能看到请求行和状态码200,但响应头和主体都是空的。试过右键会话的”Always Show Body”也不行,浏览器是Chrome 120,Fiddler版本最新版。

我来解答 赞 13 收藏
二维码
手机扫码查看
1 条解答
艳平 Dev
嗯,这个问题还挺常见的,尤其是在调试HTTPS请求的时候。Fiddler抓不到HTTPS响应内容的情况,通常是证书或者代理设置没配对。咱们一步一步来解决。

### 第一步:检查Fiddler的HTTPS解密设置
原理是这样:Fiddler要抓HTTPS请求并解密,必须生成自己的根证书,并让浏览器信任这个证书。如果证书没装好,HTTPS请求虽然能抓到,但响应内容会被加密,看起来就是空的。

1. 打开Fiddler,点击菜单栏的 Tools -> Telerik Fiddler Options...
2. 切换到 HTTPS 选项卡,确保勾选了以下两个选项:
- Decrypt HTTPS traffic
- Ignore server certificate errors (unsafe)
3. 点击页面下方的 Actions 按钮,选择 Trust Root Certificate。这会重新安装Fiddler的根证书。
4. 如果弹出提示让你重启浏览器,那就乖乖重启吧。

做完这些后,重新试试你的测试页面。如果还是不行,接着看下一步。

---

### 第二步:检查浏览器是否信任Fiddler证书
Chrome从某个版本开始对证书验证变得更严格了,可能即使你安装了Fiddler的证书,浏览器也没真正信任它。

1. 在Chrome地址栏输入 chrome://net-internals/#hsts,打开HSTS配置页面。
2. 点击左上角的 Delete domain,输入 api.example.com,然后点击 Delete。这样可以清除之前对该域名的HSTS缓存(强制HTTPS)。
3. 接着,在Chrome地址栏输入 https://api.example.com,看看是否有证书错误提示。如果有,点“高级”->“继续访问”,手动接受Fiddler的证书。

---

### 第三步:检查Fiddler的规则设置
有时候Fiddler默认不会拦截某些流量,比如localhost或特定域名的请求。

1. 打开Fiddler,点击菜单栏的 Rules -> Customize Rules...,会弹出一个脚本编辑窗口。
2. 找到 OnBeforeRequest 方法,在里面加入以下代码,确保你的请求被拦截:

if (oSession.uriContains("api.example.com")) {
oSession.bypassGateway = true;
oSession["ui-hide"] = "false"; // 确保不隐藏会话
}


3. 保存脚本后刷新页面再试试。

---

### 第四步:尝试禁用浏览器的安全优化
现代浏览器为了性能和安全,可能会压缩或者延迟响应体显示,导致Fiddler看不到真实内容。

1. 在Chrome地址栏输入 chrome://flags/,搜索 Network Service,把它改成 Disabled
2. 搜索 Quic 或者 HTTP/3 相关的选项,全部改成 Disabled
3. 重启Chrome后重试。

---

### 最后一步:换个工具试试
如果你折腾半天还是抓不到内容,可以试试 Charles 或者 Wireshark。不过这些工具的配置过程也差不多,主要是证书得装对。

希望以上步骤能帮你解决问题。如果还有问题,欢迎继续问,我再陪你一起折腾!
点赞 9
2026-01-30 17:05