简介:本资源为Fiddler网络调试代理工具的官方完整安装包,面向Web开发人员、测试工程师及网络问题排查者,用于高效抓取、分析与调试HTTP/HTTPS流量,解决接口异常、页面加载慢、加密通信解析等典型问题。压缩包共90个文件,总大小3.11MB,包含核心可执行文件(13个exe)、协议解析与UI组件(36个dll)、调试符号(13个pdb)、预置响应模板(14个dat)、证书与配置工具(如TrustCert.exe、EnableLoopback.exe、Fiddler.exe.config等),以及音效、图标、脚本示例(cs/js)和第三方依赖库,结构完整,开箱即用。目前已有2248人学习下载,无需额外编译或环境配置,可直接部署运行,覆盖Windows平台主流使用场景,并支持HTTPS解密、断点修改、AutoResponder模拟响应等关键调试能力,是本地化网络分析与前端联调的实用型工具集。
1. Fiddler 下载:不是抓包工具那么简单,它是你调试 HTTP/HTTPS 流量的「黑匣子解码器」
你有没有遇到过这种场景:前端调接口返回 400,但控制台没报错、后端日志说参数为空——可明明代码里打点确认传了;或者 App 突然连不上测试环境,Wireshark 抓出来全是 TLS 加密流,根本看不出请求头里少了个Authorization;又或者某 SDK 在 iOS 上正常,Android 却卡在登录回调,连网络层都摸不到边……这时候,Fiddler 不是“又一个抓包工具”,而是你唯一能实时看到「应用到底发了什么、服务器到底回了什么」的透明窗口。它不依赖设备 Root 或系统级权限,Windows/macOS 双平台可用(macOS 需 Fiddler Everywhere),支持 HTTPS 解密(需信任根证书)、断点修改请求/响应、自动重放、会话筛选、性能时序分析,甚至能模拟弱网。它适合刚学 HTTP 的前端同学快速验证接口行为,也适合后端工程师复现客户端异常请求,更被大量 QA 和测试开发用作自动化流量录制与比对的基础组件。这不是教科书里的协议图,而是一份你每天打开、改两行、立刻看到结果的「活体调试台」。
2. Fiddler 安装与 HTTPS 解密配置:从下载到看到明文响应,三步闭环
2.1 下载渠道与版本选择:认准官方源,避开捆绑陷阱
Fiddler 经典版(Fiddler Classic)目前仍由 Telerik(现属 Progress)官方维护,仅推荐从 https://www.telerik.com/fiddler/fiddler-classic下载。注意:该页面提供 Windows 版(.exe 安装包)和 macOS 版(Fiddler Everywhere,独立收费产品,但有免费试用期)。切勿通过第三方下载站获取,曾有用户反馈非官网包静默植入浏览器插件或修改 hosts。当前稳定版为 v5.0.20234.48927(2023 年底发布),安装包约 120MB,无运行时依赖(.NET Framework 4.7.2+ 已内置)。安装过程默认勾选「Launch Fiddler on finish」,建议取消——首次启动前需先完成证书配置,否则 HTTPS 流量将显示为「Tunnel to」且无法解密。
2.2 Windows 环境下 HTTPS 解密全流程:证书安装 + 系统代理联动
HTTPS 解密是 Fiddler 最关键能力,但也是新手翻车率最高的环节。核心逻辑是:Fiddler 充当中间人(MITM),用自己的根证书签发临时域名证书,浏览器/应用信任该根证书后,才接受其签发的证书。操作分三步:
提示:以下操作需管理员权限。若公司域策略禁用本地证书安装,请联系 IT 部门申请临时白名单,否则无法启用 HTTPS 解密。
# 步骤 1:启动 Fiddler 后,进入 Tools > Options > HTTPS 页签 # 勾选 "Decrypt HTTPS traffic",此时会弹出证书安装警告 # 点击 "Yes" → 自动跳转到 Windows 证书管理器 # 在 "Trusted Root Certification Authorities" 存储中导入 FiddlerRoot.cer此步骤本质是将 Fiddler 自动生成的FiddlerRoot.cer根证书导入系统信任库。若手动导入失败(常见于企业锁机环境),可执行命令行强制安装:
# 以管理员身份运行 PowerShell,执行: certutil -addstore "Root" "%USERPROFILE%\Documents\Fiddler2\Certificates\FiddlerRoot.cer"# 步骤 2:确认代理设置生效 # Fiddler 默认监听 127.0.0.1:8888,需确保系统代理指向此处 # Windows 设置 → 网络和 Internet → 代理 → 手动设置代理 → 地址 127.0.0.1,端口 8888 # 勾选 "使用代理服务器",并取消 "不使用代理服务器的地址" 中的 localhost/127.0.0.1(否则本机流量不被捕获)参数说明:端口
8888是 Fiddler 默认监听端口,可在 Tools > Options > Connections 中修改,但需同步更新系统代理设置。若与其他工具(如 Charles)冲突,可改为8889,但务必保证两端一致。
# 步骤 3:验证 HTTPS 解密是否成功 # 在浏览器访问 https://httpbin.org/get?test=1 # Fiddler 会话列表中应显示: # Result: 200 | Protocol: HTTPS | Host: httpbin.org | URL: /get?test=1 # 右键该会话 → "Inspectors" → "TextView" 页签 → 查看 Request Headers 和 Response Body 均为明文 # 若仍显示 "Tunnel to httpbin.org:443" 且无 Request/Response 内容,则证书未生效2.3 macOS 用户必读:Fiddler Everywhere 替代方案与证书信任链
macOS 不支持 Fiddler Classic,必须使用Fiddler Everywhere(https://www.telerik.com/download/fiddler-everywhere)。安装后首次启动会提示下载并安装FiddlerRoot.cer。关键区别在于:macOS 要求手动将证书拖入「钥匙串访问」→「系统」钥匙串,并双击证书 → 展开「信任」→ 将「SSL」设为「始终信任」。切记:必须重启 Safari 或 Chrome(关闭所有窗口再重开),否则浏览器缓存旧证书策略,仍会报 NET::ERR_CERT_AUTHORITY_INVALID。Fiddler Everywhere 界面与 Classic 高度一致,但规则过滤语法略有差异(如 Classic 用urlcontains("api"),Everywhere 用@url contains "api"),迁移时需注意。
3. 核心功能实战:用 Fiddler 录制、过滤、断点、重放真实请求
3.1 流量录制与会话筛选:从千条日志中精准定位目标请求
Fiddler 启动即开始录制,但真实项目中常混杂字体、图片、监控上报等无关请求。高效筛选依赖三层机制:
- 列筛选(Column Filters):右键会话列表顶部栏 → 勾选常用列:
Result(状态码)、Protocol(HTTP/HTTPS)、Host(域名)、URL(路径)、Body(响应体大小)。例如排查 500 错误,直接点击Result列标题排序,500 会聚顶。 - Filters(过滤器):菜单栏 Rules → Customize Rules → 打开
CustomRules.js,在OnBeforeRequest函数中添加:
保存后,匹配请求行背景变橙色,视觉聚焦效率提升 3 倍。if (oSession.host.toLowerCase() == "api.example.com" && oSession.url.indexOf("/v2/user") > -1) { oSession["ui-color"] = "orange"; // 高亮匹配请求 } - QuickExec 命令行(Ctrl+Shift+X):输入
bpu https://api.example.com/login→ 后续所有该 URL 请求将自动断点;输入cls清空会话;?responsebody显示响应体关键词高亮。
避坑:为什么过滤器有时不生效?
现象:设置了Host过滤为api.example.com,但请求仍不显示。
原因:Fiddler 默认捕获所有进程流量,但某些 UWP 应用(如 Windows 自带邮件)或沙盒化 App(如 Electron 某些版本)默认绕过系统代理。
解决:Rules → Performance → 勾选 "Ignore HTTPS CONNECTs from Win8+ Metro apps"(若需捕获则取消勾选),或改用 Fiddler 的「WinINET」模式(Tools → Options → General → Select WinINET as the system proxy)。
3.2 断点调试:拦截请求头、修改参数、模拟错误响应
断点是 Fiddler 最硬核能力,分为两类:
Before Requests(请求前断点):拦截并修改发出的请求。例如测试 Token 过期场景:
# 在 QuickExec 输入: bpu https://api.example.com/profile # 触发请求后,Fiddler 暂停,进入 Inspectors → Request Headers # 找到 Authorization 行,将其值改为 "Bearer invalid_token" # 点击 "Run to Completion",观察后端是否返回 401Before Responses(响应前断点):修改服务器返回内容,用于前端 Mock。例如让登录接口返回固定 UID:
# QuickExec 输入: bpafter https://api.example.com/login # 触发登录后暂停,在 Inspectors → Response Body → TextView 中 # 将 {"code":0,"data":{"uid":123}} 改为 {"code":0,"data":{"uid":999}} # 点击 "Run to Completion",前端 JS 将收到伪造 UID
参数说明:
bpu(breakpoint on URL)只中断匹配 URL 的请求;bpafter中断匹配 URL 的响应;bp(breakpoint)可设条件断点,如bp 404中断所有 404 响应。
3.3 自动重放与性能对比:用 Composer 发送相同请求多次
Composer 是 Fiddler 内置的请求构造器,比 Postman 更轻量,且能复用历史会话上下文(如 Cookie、Auth Header):
- 在会话列表中右键目标请求 → "Replay" → "Replay in Composer";
- Composer 窗口自动填充 Method、URL、Headers、Body;
- 修改任意字段(如将
page=1改为page=2),点击左上角绿色 ▶️ 按钮发送; - 多次发送后,右键 Composer 标签页 → "Compare with Session..." → 选择历史会话,自动生成差异报告(Header 变更、Body 字段增删、响应时间对比)。
血泪经验:Composer 默认不携带原始会话的
Cookie,若需保持登录态,必须手动勾选 "Use original session's cookies"(位于 Composer 窗口右下角)。否则重放时因无 Cookie 导致 401,误判为接口问题。
4. 常见问题排查:五类高频翻车现场与根因修复
4.1 现象:HTTPS 请求显示 "Tunnel to domain:443",无法查看 Request/Response
- 原因:Fiddler 根证书未被系统或浏览器信任;或目标应用(如微信内置浏览器、某些金融 App)强制校验证书链,拒绝接受 Fiddler 签发的临时证书。
- 解决:
- Windows:
certmgr.msc→ 检查「受信任的根证书颁发机构」中是否存在DO_NOT_TRUST_FiddlerRoot,若存在则删除后重新按 2.2 节流程安装; - macOS:钥匙串中找到
FiddlerRoot→ 右键「显示简介」→ 「信任」→ 「使用此证书时」选「始终信任」→ 关闭并输入密码确认; - 对于强校验 App,尝试开启 Fiddler 的「Decrypt HTTPS traffic」后,再勾选 "Ignore server certificate errors"(Tools → Options → HTTPS)。
- Windows:
4.2 现象:Fiddler 捕获不到某 Electron 应用的请求
- 原因:Electron 默认使用 Chromium 网络栈,但部分版本(v12+)默认禁用系统代理,改用
--proxy-server=127.0.0.1:8888启动参数。 - 解决:
- 找到该应用的快捷方式属性 → 目标栏末尾添加
" --proxy-server=127.0.0.1:8888"(注意空格和引号); - 或在应用启动脚本中注入环境变量:
set ELECTRON_ENABLE_LOGGING=true && set ELECTRON_DISABLE_SECURITY_WARNINGS=true(仅开发环境)。
- 找到该应用的快捷方式属性 → 目标栏末尾添加
4.3 现象:Fiddler 启动后,Chrome 浏览器无法上网
- 原因:系统代理设置错误,或 Fiddler 未运行时代理仍开启,导致流量发往不存在的端口。
- 解决:
- 快速检查:任务栏右下角网络图标 → 右键「打开网络和 Internet 设置」→ 代理 → 确认「使用代理服务器」已关闭;
- 彻底清理:PowerShell 执行
netsh winhttp reset proxy重置 WinHTTP 代理(影响部分后台服务); - 预防:Fiddler 关闭前,勾选 Tools → Options → Connections → "Act as system proxy on startup"(避免意外残留)。
4.4 现象:Fiddler Everywhere 在 macOS 上无法捕获 Safari 流量
- 原因:macOS Monterey(12.0+)起,Safari 强制启用「隐私中继」(Private Relay),绕过本地代理。
- 解决:
- Safari → 偏好设置 → 隐私 → 取消勾选「使用 iCloud 专用中继」;
- 系统设置 → 网络 → Wi-Fi → 详细信息 → 代理 → 手动代理 → 地址
127.0.0.1,端口8866(Fiddler Everywhere 默认端口); - 重启 Safari。
4.5 现象:Fiddler 录制大量localhost请求,干扰调试
- 原因:Fiddler 默认捕获所有本地回环流量,包括 VS Code Live Server、Webpack Dev Server 等。
- 解决:
- Rules → Customize Rules → 在
OnBeforeRequest函数中添加:if (oSession.host.toLowerCase() == "localhost" || oSession.host.toLowerCase() == "127.0.0.1") { oSession["ui-hide"] = "true"; // 隐藏 localhost 会话 } - 或全局关闭:Tools → Options → Connections → 取消 "Monitor local traffic"。
- Rules → Customize Rules → 在
5. 进阶技巧:用 Fiddler 自动化流量分析与异常检测
5.1 编写 AutoResponder 规则:零代码 Mock 接口与故障注入
AutoResponder 是 Fiddler 的「静态响应引擎」,无需启动后端即可返回预设 JSON。典型场景:前端联调时后端接口未就绪,或需测试超时、503 等异常分支。
操作路径:Rules → AutoResponder → 勾选 "Enable rules" → "Add Rule"
- Rule Pattern:
https://api.example.com/user/(.*)(正则匹配所有/user/开头请求) - Action Type:
*Respond with a file*→ 选择本地mock_user.json文件 - 高级选项:勾选 "Unmatched requests passthrough"(未匹配请求直连真实服务器)
文件格式要求:
.json文件首行必须为 HTTP 状态行,如:HTTP/1.1 200 OKContent-Type: application/jsonAccess-Control-Allow-Origin: *{"code":0,"data":{"id":1,"name":"MockUser"}}
若需返回 503,首行改为HTTP/1.1 503 Service Unavailable。
故障注入技巧:创建规则*https://api.example.com/payment*→ Action Type 选*Abort request*,模拟网络中断;或设*Delay: 5000ms*注入 5 秒延迟,测试前端 Loading 状态。
5.2 使用 FiddlerScript 实现动态响应:根据请求参数返回不同数据
当静态 Mock 不够用(如需根据?id=123返回对应用户),需编辑CustomRules.js:
// 在 OnBeforeResponse 函数中添加 if (oSession.uriContains("/api/user")) { var idMatch = oSession.url.match(/id=(\d+)/); if (idMatch && idMatch[1]) { var userId = parseInt(idMatch[1]); var mockData = { 123: {id:123, name:"Alice", role:"admin"}, 456: {id:456, name:"Bob", role:"user"} }; if (mockData[userId]) { oSession.utilSetResponseBody(JSON.stringify({ code: 0, data: mockData[userId] })); oSession.oResponse.headers.SetStatus(200, "OK"); oSession.oResponse.headers.SetHeader("Content-Type", "application/json"); } } }参数说明:
oSession.uriContains()比url.contains()更安全,避免误匹配路径参数;utilSetResponseBody()直接覆盖响应体,无需处理编码;SetStatus()确保状态码同步更新。
5.3 性能瓶颈定位:用 Timeline 视图分析请求瀑布流
Fiddler 的 Timeline 功能(View → Timeline)将所有会话按时间轴展开,直观暴露性能瓶颈:
| 时间轴区块 | 含义 | 优化线索 |
|---|---|---|
| DNS Lookup | 域名解析耗时 | 若 >100ms,检查 DNS 服务器或 hosts 配置 |
| Connecting | TCP 连接建立 | 若 >300ms,网络延迟高或服务端连接池满 |
| Sending | 请求发送 | 通常 <10ms,若突增说明请求体过大 |
| Waiting | 服务端处理 | 最需关注!若 >2s,后端逻辑或数据库慢查询 |
| Receiving | 响应接收 | 若 >500ms,响应体过大或网络丢包 |
实操案例:某 H5 页面加载慢,Timeline 显示 12 个请求中,/api/config的 Waiting 时间达 3.2s。右键该会话 → "Performances" → 查看服务端 IP 为10.0.1.5,立即 ssh 登录该机器,执行top -p $(pgrep -f "config_service"),发现 CPU 占用 98%,确认为后端配置服务过载。
从那以后我每次接手新项目,第一件事就是用 Fiddler 录制完整业务流,导出.saz文件存档。不是为了截图汇报,而是当某天「昨天还好的接口今天 404」时,我能秒开归档文件,对比请求头差异、检查证书有效期、甚至把当年的 Mock 规则一键复用——这比翻 Git 历史快十倍。希望帮到你。
本文还有配套的精品资源,点击获取