Fiddler 是一款由 Progress Telerik 维护的 Web 调试代理工具,用于记录、查看、修改在客户端与服务器之间传输的 HTTP 与 HTTPS 流量。它由微软 Internet Explorer 团队的项目经理埃里克·劳伦斯(Eric Lawrence)创建,2003 年 10 月 6 日发布第 1 个正式版本,2012 年被 Telerik 收购。作为代理服务器,Fiddler 默认在本机 8888 端口监听,通过伪造 CA 证书对 HTTPS 通信做中间人解密,从而把原本加密的报文以直观格式呈现出来。它被广泛用于接口调试、前后端联调、性能分析与移动端抓包,是 Web 开发与测试领域的常用工具之一。
定义
Fiddler 是一个调试用的代理服务器程序,作用是记录、检查并修改计算机与网站服务器之间往来的 HTTP 与 HTTPS 通信[1]。它监听客户端发出的请求,再把请求转发给目标服务器,服务器返回的内容同样先经过它,最后才交还给客户端,因此它能同时看到通信的两端[2]。
Fiddler 用 C# 语言在微软的 .NET 框架上开发,早期版本只支持 Windows 系统,后来逐渐扩展到其他平台[2]。围绕这一名称已经形成了多个产品,包括面向 Windows 的 Fiddler Classic、跨平台的 Fiddler Everywhere、可嵌入程序的 FiddlerCore,以及面向非技术用户的抓包工具[3]。
原理
Fiddler 采用典型的代理式工作方式。程序启动时,它会把操作系统的代理设置指向本机的 127.0.0.1 地址与 8888 端口,所有遵循系统代理设置的请求都会先送到这里,由 Fiddler 解析后再转发;关闭程序时它注销自身代理身份,以免影响其他软件的正常联网[2][4]。对于不使用系统代理的程序,需要单独为其指定代理地址和端口,例如在 Java 程序里通过系统属性设置[5]。
由于 HTTPS 会先用非对称加密协商出一把对称密钥,再以对称加密传输正文,中间人一般无法读懂内容。Fiddler 的做法是向客户端出示自己签发的证书,冒充目标服务器,同时又以客户端身份与真实服务器握手,从而同时掌握两段连接的密钥[6]。用户在浏览器或操作系统中把 Fiddler 的根证书加入受信任列表后,客户端便不再对这张证书报错,解密后的报文得以明文呈现[7]。
对已经捕获的会话,Fiddler 可以设置断点,在请求发出前或响应返回前暂停通信,允许使用者修改报头与正文字段再继续,这一机制常用于构造异常输入、验证服务端处理逻辑[2]。它还能通过 AutoResponder 让特定请求返回本地保存的内容,从而在脱离真实服务器的条件下测试页面行为。
发展历程
Fiddler 最初是埃里克·劳伦斯在微软工作期间的业余项目。他当时在 Office 剪贴画团队任职,因为同事普遍觉得用网络监视器排查网页问题过于繁琐,便尝试自己写一个更简单的调试代理,2003 年 10 月 6 日发布了第 1 个正式版本[8][9]。
2012 年 9 月,Fiddler 被 Telerik 收购,作者本人加入该公司全职负责这个项目,Telerik 同时承诺这一工具保持免费[10][11]。2014 年 Telerik 又被 Progress Software 收购,Fiddler 随之归入 Progress 旗下[8]。
作者在 2015 年底离开该项目,原有的 Windows 版本此后逐渐转入维护状态并被称为 Fiddler Classic[9]。新产品线 Fiddler Everywhere 于 2018 年进入测试,2020 年发布 1.0 正式版,支持 Windows、macOS 与 Linux,并在后续版本中加入对 HTTP/2、gRPC 等协议的支持[6]。
应用
在接口开发与测试中,Fiddler 用来查看一次操作究竟调用了哪些接口、请求参数与返回结果各是什么,在缺少接口文档或需要判断问题出在前端还是后端时尤其有用[12]。它也支持手动构造并发送 HTTP、HTTPS 请求,便于在没有现成页面的情况下验证服务端行为。
在性能与缓存分析方面,Fiddler 的统计视图可以把多个会话合并计算,得出一个页面由哪些文件构成、请求总数、传输字节数与整体加载耗时,时间线视图则展示各请求的先后与耗时分布[2]。观察响应报头中的缓存控制字段,还可以判断某个资源是否允许客户端或代理缓存[2]。
移动端调试是另一类常见场景。开启允许远程计算机连接后,把手机等设备的网络代理指向运行 Fiddler 的电脑及其监听端口,并安装其根证书,就能查看移动应用发出的网络请求[4]。Fiddler Everywhere 还内置了独立的浏览器与终端捕获方式,可以在不修改系统代理设置的前提下抓取流量[13]。
Fiddler 提供基于事件的脚本子系统,并允许用 .NET 语言编写检查器和插件来扩展界面与解析能力,因此可以被集成进其他测试流程[2]。Newer 的 Fiddler Everywhere 还可接入兼容 MCP 的编码智能体,让它们读取会话、应用过滤条件并查看请求与响应细节[14]。
局限
Fiddler 面向的是应用层的 HTTP 与 HTTPS 协议,对 TCP、UDP 等其他协议的报文不做直接处理,这一类需求通常要借助 Wireshark 等底层抓包工具[15][12]。同时,它只能捕获愿意接受代理设置的流量,若程序未使用系统代理或自行实现网络栈,就需要额外配置才能被记录[5]。
HTTPS 解密依赖客户端信任 Fiddler 签发的根证书。若客户端开启了证书校验或采用证书固定等机制,解密将无法完成,会话内容仍以密文形式呈现,抓包也可能直接失败[4]。Fiddler 自身签发的证书并非受公认的机构颁发,只在用户主动配置信任之后才起作用[7]。
两个版本线在能力与授权上存在差异。Fiddler Classic 目前仅限非商业用途,不再处于活跃开发状态,官方也不对其发布补丁或提供技术支持,商业与团队场景被引导使用 Fiddler Everywhere。Fiddler Everywhere 虽在跨平台与新协议方面有所加强,但其可扩展机制尚不及原有版本,旧有自定义检查器与转码器等扩展无法直接迁移[8]。
参见
-
Wireshark —— 工作在更底层的网络协议分析工具,与 Fiddler 的适用层次不同
-
Charles Proxy —— 同样以代理方式调试 HTTP 流量的抓包工具
-
HTTP —— Fiddler 所针对的核心应用层协议
-
HTTPS —— Fiddler 通过中间人方式解密分析的安全传输协议
-
代理服务器 —— Fiddler 实现流量捕获所依托的网络角色
参考资料
- introduction [引用日期2026-10-14]
- Fiddler – 第一部分: HTTP调试 - 跳转至主内容 跳到 Ask Learn 聊天体验 [引用日期2026-10-14]
- Fiddler+(software) [引用日期2026-10-14]
- 一看就会的Fiddler抓包原理和使用详解 [引用日期2026-10-14]
- wireshark [引用日期2026-10-14]
- Happy 20th Anniversary to Fiddler! [引用日期2026-10-14]
- revisions [引用日期2026-10-14]
- Fiddler in 2026 - The Wayback Machine [引用日期2026-10-14]
- Fiddler (software) - The Wayback Machine [引用日期2026-10-14]
- Here we grow again. Telerik acquires Fiddler. What’s next? [引用日期2026-10-14]
- telerik-buys-fiddler [引用日期2026-10-14]
- 接口测试工具 Fiddler 实战:移动端抓包全流程详解 [引用日期2026-10-14]
- introduction [引用日期2026-10-14]
- Web Debugging Proxy Tool | Fiddler Classic [引用日期2026-10-14]
- 使用Fiddler进行http抓包和调试 [引用日期2026-10-14]