Fiddler无法抓取localhost的http/https请求?求Swagger场景下可用配置
Fiddler仅捕获本地环境Swagger请求的可落地配置方案
基础配置修正(避开通用教程的常见误导)
- 确认Fiddler主界面左下角的捕获开关处于开启状态(快捷键
F12,显示Capturing即为生效) - 打开顶部菜单
Tools > Options > Connections:- 确认代理端口未被其他程序占用,可保留默认的8888端口,或修改为未被占用的空闲端口
- 取消勾选
Automatically detect settings选项 - 找到
Bypass Fiddler for URLs that start with输入框,删除默认填充的localhost;127.0.0.1;内容——多数通用教程会建议在这里加本地地址实现“仅抓本地流量”,实际逻辑是只要匹配到这个列表的地址,Fiddler会直接跳过捕获流程,这是多数人抓不到本地请求的核心原因 - 可暂时勾选
Allow remote computers to connect,配置完成后如果不需要远程抓包可关闭
实现仅跟踪本地环境流量的正确方式:不要依赖Bypass规则,打开
Filters面板,勾选Use Filters,在Hosts分组下选择「Show only the following Hosts」,在输入框中填入localhost;127.0.0.1,此时Fiddler会正常接收通道内的所有流量,但只在会话列表中展示匹配这两个本地地址的请求,完全满足仅跟踪本地环境的需求。
解决系统层面对本地流量的强制直连拦截
完成上面的配置后仍抓不到的,基本都是系统、浏览器层面让本地流量绕过代理导致的:
- 在系统代理配置的「不使用代理服务器的地址列表」中,清空所有包含
localhost、127.0.0.1、*.local的条目 - 把访问Swagger的地址,从字面带
localhost的链接,比如http://localhost:8080/swagger-ui.html,替换成http://127.0.0.1:8080/swagger-ui.html打开——当前Chromium内核的浏览器存在内置强制直连逻辑,只要请求目标包含字面量localhost,无论系统代理怎么配置,都会强制走直连通道,完全不经过本地代理程序,这是Swagger场景下抓不到请求的最高发原因
Swagger场景的专属适配配置
- 确认Fiddler的
Filters规则没有误拦截本地流量:在Filters面板的Hosts分组下,检查隐藏列表,确认localhost、127.0.0.1不在被隐藏的主机范围内 - 若你是通过Swagger生成的SDK、后端服务本身发起请求而非浏览器页面请求,检查对应代码的代理配置:
- .NET项目需将
HttpClient的BypassProxyOnLocal属性设为false - Java项目需在启动参数中添加
-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8888 -Dhttp.nonProxyHosts="",清空默认匹配本地地址的非代理规则
- .NET项目需将
- 暂时关闭其他代理类程序(VPN、其他抓包工具、企业内置代理插件),这类程序会抢占系统代理通道,导致Fiddler无法接收到流量
内容的提问来源于stack exchange,提问作者TheBoubou
相关产品推荐
相关产品推荐

