Fiddler 是一款免费的 Web 调试代理,可让开发者和安全人员在 Windows 系统上捕获、检查、修改并重放客户端(如浏览器或应用程序)与服务器之间的 HTTP/HTTPS 流量。它以中间人的身份运行,拦截所有经过它的网络请求和响应,从而对 Web 通信提供细粒度的控制与可见性。
将 Fiddler 配置为代理
安装
Fiddler Classic 可从 Telerik 官方页面下载。安装过程使用标准的 Windows 安装向导。首次启动时,Fiddler 通常会自动将自己配置为系统代理。
Fiddler 的默认代理配置
Fiddler 默认监听 127.0.0.1:8888。启动时,它会自动修改 Windows 系统代理设置,把流量导向该地址;关闭时通常会恢复原有的系统代理设置。这种自动配置让常规 Web 调试更为简便。
捕获 HTTPS 流量
要检查 HTTPS 流量,Fiddler 必须先解密。这需要把 Fiddler 的根证书安装到系统的受信任证书存储区。
- 依次打开
Tools > Options > HTTPS。 - 启用
Capture HTTPS CONNECTs。 - 启用
Decrypt HTTPS traffic。 - 点击
Actions,再点击Trust Root Certificate。确认所有安全提示。
证书被信任后,Fiddler 即可对 HTTPS 连接执行中间人操作:为每个被拦截的域名生成由其受信任根证书签发的临时证书。凡是信任 Fiddler 根证书的客户端,都会通过 Fiddler 发送流量而不出现安全警告。
将 Fiddler 与外部上游代理集成
企业常使用公司代理来实现网络安全、内容过滤或访问控制。可以把 Fiddler 配置为将捕获到的流量转发给这样的上游代理,从而在不绕过安全基础设施的前提下调试位于公司代理之后的应用。
配置 Fiddler 使用上游代理
将 Fiddler 与现有代理串联:
- 依次打开
Tools > Options > Gateway。 - 选择以下选项之一:
- Use System Proxy: Fiddler 会尝试使用操作系统层面配置的代理设置(例如 Internet Explorer 的 LAN 设置)。这是默认行为。
- Manual Proxy Configuration: 指定自定义的上游代理。
- 选择
Manual Proxy Configuration。 - 按
hostname:port或IP_address:port格式填写代理地址和端口。 - 示例:
corporateproxy.example.com:8080。 - 如果上游代理需要认证,请勾选
Authenticate with upstream proxy并填写凭据。
- 选择
- 点击
OK应用更改。
Fiddler 的代理链行为
当 Fiddler 使用上游代理时,流量路径变为:
客户端(例如浏览器) -> Fiddler (127.0.0.1:8888) -> 上游代理 -> 互联网
Fiddler 先完成捕获和解密,再把(可能已重新加密的)请求转发给配置好的上游代理,由上游代理负责路由到最终目标。这条链路多了一跳,可能带来轻微延迟。
使用 Fiddler 分析流量
会话列表
主界面显示已捕获会话的列表。每一行代表一次 HTTP/HTTPS 请求及其对应响应。主要列包括:
* Result: HTTP 状态码。
* Protocol: HTTP 或 HTTPS。
* Host: 目标服务器主机名。
* URL: 完整的请求 URL。
* Body: 响应体大小。
* Caching: 缓存指令。
Inspectors
Inspectors 选项卡提供所选请求与响应的详细视图。
- 请求 Inspectors:
- Headers: 显示所有 HTTP 请求头。
- WebForms: 显示 URL 编码的表单数据。
- Raw: 展示完整的原始 HTTP 请求。
- JSON/XML: 针对 JSON/XML 请求体的格式化视图。
- 响应 Inspectors:
- Headers: 显示所有 HTTP 响应头。
- TextView: 响应体的纯文本视图。
- ImageView: 渲染图片响应。
- Raw: 展示完整的原始 HTTP 响应。
- JSON/XML: 针对 JSON/XML 响应体的格式化视图。
AutoResponder
AutoResponder 选项卡可拦截请求,并用本地文件或自定义数据直接响应,而不与服务器通信。适用于:
* 模拟 API: 为开发和测试模拟服务器响应。
* 测试错误场景: 返回特定的 HTTP 状态码。
* 修改内容: 注入本地的 JavaScript 或 CSS 文件。
规则可使用精确匹配、通配符或正则表达式定义。
Composer
Composer 选项卡允许手动构造并发送 HTTP 请求。适用于:
* 重放请求: 重新发送此前捕获的请求,可按需修改。
* 测试 API 端点: 发送自定义请求以检查 API 行为。
* 模糊测试: 使用不同参数反复发送请求。
发送前可修改 URL、请求头和请求体。
Filters
Filters 选项卡可对会话列表进行过滤,聚焦相关流量。
* Hosts: 显示或隐藏发往特定主机名的流量。
* Processes: 按来源 Windows 进程过滤流量(例如只显示 chrome.exe 的流量)。
* URL Content: 隐藏 URL 中包含特定字符串的会话。
* Status Codes: 只显示具有特定 HTTP 状态码的会话。
只显示某个主机流量的过滤示例:
// 在 'Hosts' 区域勾选 'Show only traffic from the following Hosts'
// 将 'example.com' 添加到列表中。
代理分析的常见用途
调试 Web 应用
Fiddler 有助于诊断如下问题:
* 请求参数发送错误。
* 服务器返回意外响应或错误码。
* HTTP 头缺失或格式不正确。
* 跨域资源共享(CORS)问题。
安全测试
- 认证流程分析: 拦截登录请求,检查凭据是否安全传输。
- 漏洞识别: 发现未加密的敏感数据、不安全的 HTTP 头或错误配置。
- 会话管理: 分析 Cookie 属性和会话令牌的使用方式。
性能优化
- 资源加载: 找出体积过大的资源、加载缓慢的请求或低效的缓存策略(例如缺少
Cache-Control头)。 - 请求开销: 检查请求的数量和大小,优化网络占用。
API 开发与测试
- API 检查: 了解应用与其后端 API 的交互方式。
- API 模拟: 使用 AutoResponder 为前端开发模拟各种 API 响应。
- 端点验证: 使用 Composer 以不同的负载和参数测试 API 端点。
Fiddler 与其他代理工具对比
| 特性 | Fiddler Classic(Windows) | Burp Suite Community(跨平台) | Charles Proxy(跨平台) |
|---|---|---|---|
| 主要定位 | 常规 Web 调试、开发、性能分析。 | Web 安全测试、渗透测试。 | 常规 Web 调试、开发、性能分析。 |
| 费用 | 免费 | 免费(Community Edition),付费(Professional Edition) | 付费(提供试用) |
| 系统支持 | Windows | Windows、macOS、Linux | Windows、macOS、Linux |
| HTTPS 解密 | 支持,需安装根证书。 | 支持,需安装根证书。 | 支持,需安装根证书。 |
| 核心功能 | AutoResponder、Composer、Filters、丰富的 Inspectors。 | Proxy、Intruder、Repeater、Sequencer、Decoder、Scanner(Pro)。 | Proxy、Rewrite、Map Local/Remote、Throttling、DNS spoofing。 |
| 脚本能力 | FiddlerScript(JScript.NET),可自定义规则和扩展。 | 扩展(Java、Python、Ruby)。 | 自定义插件(Java)。 |
| 易用性 | 对开发者和测试人员友好。 | 学习曲线较陡,面向安全专业人员。 | 界面直观,适合常规调试。 |
Fiddler 代理问题排查
看不到流量
- Fiddler 捕获状态: 确认
File > Capture Traffic已勾选(或按 F12)。状态栏应显示 "Capturing"。 - 系统代理设置: 确认 Fiddler 已成功配置系统代理。进入
Tools > Options > Connections,确保Act as system proxy on startup已勾选。 - 客户端配置: 若调试的是非浏览器应用,请确认它已配置为使用 Fiddler 的代理(
127.0.0.1:8888)。 - 防火墙: 检查是否有防火墙阻止了 Fiddler 的端口或网络访问。
HTTPS 解密错误
- 证书信任: 确认 Fiddler 根证书已在系统和浏览器中正确安装并受信任。可在
Tools > Options > HTTPS下重新执行Actions > Trust Root Certificate。 - 应用自带的信任库: 某些应用(例如移动应用、Java 应用)使用自己的证书信任库,绕过系统存储。这类应用可能需要把 Fiddler 证书手动装入其专属信任库,或关闭证书固定(certificate pinning)。
- 证书过期: 确认 Fiddler 根证书尚未过期。
上游代理连通性
- 地址/端口正确: 在
Tools > Options > Gateway中再次核对上游代理的地址和端口。 - 认证: 如果上游代理需要认证,请核实在 Fiddler 中填写的凭据。
- 网络可达性: 确认运行 Fiddler 的机器能够访问上游代理服务器。可用
ping或telnet测试到上游代理 IP 和端口的连通性。 - 上游代理日志: 查看上游代理的日志,排查连接被拒或认证错误。
