fiddler默认抓不到xampp的localhost请求,是因为windows系统对localhost和127.0.0.1实施loopback豁免,导致流量不经过fiddler代理;解决方法包括禁用豁免(修改fiddler配置)或更稳妥地将xampp监听端口改为非80端口(如8080)并访问127.0.0.1:8080。

为什么Fiddler默认抓不到XAMPP的localhost请求
Fiddler默认不捕获localhost和127.0.0.1的流量,这是Windows系统级限制(Loopback exemption),不是Fiddler配置问题。XAMPP启动的Apache默认监听127.0.0.1:80,所以你打开http://localhost/phpwind时,请求根本没经过Fiddler代理链。
解决方法只有两个:要么让浏览器走代理并绕过loopback限制,要么改XAMPP监听地址。推荐后者,更稳定、无兼容风险:
- 用管理员身份运行Fiddler,执行命令
FiddlerApplication.Prefs.SetBoolPref("fiddler.network.localhost.bypass", false)(在Fiddler菜单 Rules → Customize Rules… 中的OnBoot函数里添加) - 或更简单:修改XAMPP的
httpd.conf,把Listen 80改成Listen 8080,再把浏览器地址改成http://127.0.0.1:8080/phpwind——此时流量强制走Fiddler代理(因127.0.0.1:8080不在豁免列表) - 别碰
localhost别名,它永远被系统拦截;必须用127.0.0.1显式IP
Apache端口冲突导致Fiddler无法接管流量
如果XAMPP启动失败,或者Fiddler里看不到任何127.0.0.1:8080的会话,大概率是端口被占用。常见冲突源:Skype、IIS、SQL Server Reporting Services、甚至Windows自带的Web Deployment Agent Service。
快速诊断步骤:
- 命令行执行
netstat -ano | findstr :8080,看PID是谁 - 任务管理器 → 详细信息 → 找到对应PID进程,右键结束
- 若改端口后仍不行,检查XAMPP控制面板里Apache状态是否为“Started”(绿色),点
Config → Apache (httpd.conf)确认Listen和ServerName一致(如都写127.0.0.1:8080) - Fiddler中
File → Capture Traffic必须勾选,且状态栏显示“Capturing”
HTTPS抓包时Apache返回503或连接重置
XAMPP启用SSL后(httpd-ssl.conf),若用Fiddler抓https://127.0.0.1:4431,常出现503 Service Unavailable或浏览器提示ERR_CONNECTION_RESET。这不是证书问题,而是Fiddler的CONNECT隧道与Apache SSL模块不兼容。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
根本原因:Fiddler解密HTTPS时,会向目标服务器(这里是本地Apache)发起明文HTTP CONNECT请求,但Apache的SSL虚拟主机不处理这种非标准隧道握手。
务实方案只有两个:
- 放弃HTTPS抓包,只测HTTP(开发阶段完全够用)
- 若必须测HTTPS,把Apache的SSL监听端口(如
4431)映射到Fiddler的监听端口(8888),并在Fiddler中关闭Decrypt HTTPS traffic选项——此时Fiddler只做透传代理,不解析内容,但能看到原始加密流(CONNECT隧道) - 绝对不要尝试用Fiddler生成的根证书去签Apache的
server.crt——Apache不认Fiddler私钥,会直接拒绝握手
过滤XAMPP本地请求时误删关键会话
Fiddler的Filters功能容易误操作。比如你在Filters → Hosts → Show only the following Hosts里填了127.0.0.1:8080,结果发现CSS/JS全404——因为XAMPP里静态资源常通过http://localhost/加载(注意是localhost而非127.0.0.1),而localhost被过滤掉了。
安全过滤姿势:
- 用正则过滤:在
Filters → Hosts → Show only the following Hosts中填^127\.0\.0\.1:\d+$,匹配所有127.0.0.1加端口的请求 - 或更稳妥:不设Host过滤,改用
Filters → Hide the following Hosts,把无关域名(如cdn.jsdelivr.net、google.com)列进去 - 每次改Filter后点
Actions → Run Filterset now,否则不生效 - 千万别勾选
Use Filters后忘记点Run Filterset now——界面没反应,你会以为过滤失效,反复折腾
真实调试中,最常被忽略的是XAMPP自身健康检查请求(如/xampp/目录下的status.php),它们可能触发Apache内部重定向,造成会话链断裂。遇到响应异常,先看Fiddler左侧面板里有没有灰色(canceled)或红色(aborted)条目,那才是真正的断点源头。










