返回博客

Windows应用程序和UWP的HTTP流量调试工具Fiddler:完整的代理设置指南

Fiddler 是一个强大的工具,用于在 Windows 应用程序和 UWP 中拦截和分析 HTTP/HTTPS 流量。我们将讨论设置、请求拦截和与代理的集成。

📅2026年8月6日
```html

如果您正在开发或测试 Windows 应用程序,并希望查看它们发送的具体 HTTP 请求,Fiddler 将成为您的主要工具。它可以拦截所有流量,允许您实时分析、修改并重放。特别是在处理 UWP 应用程序时,这一点尤为重要,因为它们默认绕过系统代理。

在本指南中,我们将讨论安装、HTTPS 拦截设置、与 UWP 的工作、外部代理的连接以及典型的使用场景——从 API 调试到后台请求监控。

什么是 Fiddler 及其用途

Fiddler 是一个由 Telerik(现为 Progress)开发的 HTTP 代理调试器。它作为本地代理服务器工作:您计算机上的所有 HTTP 和 HTTPS 请求都通过它,您可以实时查看每一个请求。该工具是免费的,存在两个版本——Fiddler Classic(仅限 Windows)和 Fiddler Everywhere(跨平台)。

Fiddler 与浏览器中的 DevTools 有什么不同?浏览器开发者工具仅显示浏览器自身的流量。而 Fiddler 则可以拦截来自您计算机上任何应用程序的请求:桌面程序、系统服务、Windows 后台进程、通过 Wi-Fi 的移动应用程序,以及——尤其重要的是——来自 Microsoft Store 的 UWP 应用程序。

Fiddler 解决的典型任务包括:

  • 分析桌面应用程序的 API 请求——程序发送了什么,哪些头部,哪些数据
  • 调试自己的代码——查看您应用程序的真实请求,而不是您假设要发送的内容
  • 实时修改请求和响应——更改数据以测试边缘案例
  • 监控后台活动——程序在您不知情的情况下“拨打”哪些服务器
  • 通过代理进行测试——检查应用程序在通过外部代理服务器工作时的行为
  • 重放请求——使用更改的参数重新发送拦截的请求

对于与封闭 API 工作的开发人员,Fiddler 特别有价值——例如,逆向工程移动应用程序或桌面客户端的协议。您只需启动程序,点击界面中的所需按钮,即可在 Fiddler 中查看所有请求。

安装和初始设置

安装 Fiddler Classic 大约需要两分钟。请从官方网站 telerik.com/fiddler 下载安装程序并运行。安装后,Fiddler 会自动将自己注册为 Windows 系统代理,端口为 127.0.0.1:8888

启动后,您将看到主窗口,其中有三个区域:

  • 左侧面板(会话)——实时拦截的所有请求列表
  • 右上面板——所选请求的详细信息(头部、主体、参数)
  • 右下面板——服务器响应

首先要做的是设置过滤器,否则列表中会出现所有 Windows 系统流量(更新、遥测、OneDrive 等),这会使找到所需请求变得困难。请转到右侧的 Filters 选项卡并启用 Use Filters。在 Show only the following Hosts 字段中,指定您感兴趣的域。

Fiddler Classic 的实用快捷键:

  • F12——启用/禁用流量拦截
  • Ctrl+X——清空会话列表
  • Ctrl+F——按会话搜索
  • R——重放所选请求
  • Shift+Delete——删除选定的会话

我们还建议立即设置会话的自动保存:File → Capture TrafficFile → Save → All Sessions。这将允许您稍后返回到记录的流量并离线分析。

拦截 HTTPS 流量:证书设置

默认情况下,Fiddler 仅拦截 HTTP 流量。要处理 HTTPS(这占现代流量的 95% 以上),需要配置 SSL 解密。Fiddler 充当中间人:它生成自己的根证书并用它签署所有 HTTPS 连接。

HTTPS 拦截的逐步设置:

  1. 打开 Tools → Options → HTTPS
  2. 勾选 Capture HTTPS CONNECTs
  3. 勾选 Decrypt HTTPS traffic
  4. 在下拉列表中选择 ...from all processes
  5. 点击 Actions → Trust Root Certificate 按钮
  6. 确认将证书安装到 Windows 系统存储中
  7. 重启 Fiddler

完成后,在 Protocol 列中,您将看到 HTTPS 而不是 CONNECT,并且可以查看请求和响应的解密内容。

⚠️ 重要:证书安全性

Fiddler 的证书仅安装在当前 Windows 用户的存储中。请勿将证书文件传递给第三方——这将使他们能够拦截您的 HTTPS 流量。调试完成后,可以通过 Tools → Options → HTTPS → Actions → Remove Interception Certificates 删除证书。

一些应用程序使用 Certificate Pinning——它们检查特定的服务器证书,并拒绝通过 Fiddler 工作。在这种情况下,您将在应用程序中看到连接错误。绕过证书固定是一个单独的话题,超出了本文的范围。

如何拦截 UWP 应用程序的流量

UWP(通用 Windows 平台)是来自 Microsoft Store 的应用程序:邮件、地图、电影和电视、Spotify、Netflix 等等。它们的特点是出于安全考虑,它们在隔离的容器(应用容器)中运行,并且不使用系统代理。正因如此,普通的 Fiddler 设置无法拦截它们的流量。

为了解决这个问题,Fiddler 提供了一个特殊工具——AppContainer Loopback Exemption Utility。它将 UWP 应用程序添加到例外列表中,允许它访问本地 Fiddler 代理。

方法 1——通过 Fiddler 界面:

  1. 在菜单中选择 WinConfig(工具栏上的按钮或 Tools → Win8 Loopback Exemptions
  2. 将打开所有已安装的 UWP 应用程序的列表
  3. 找到所需的应用程序并勾选它
  4. 点击 Save Changes
  5. 重启 UWP 应用程序

方法 2——通过命令行(用于自动化):

CheckNetIsolation LoopbackExempt -a -n="Microsoft.WindowsMaps_8wekyb3d8bbwe"

Microsoft.WindowsMaps_8wekyb3d8bbwe 替换为所需应用程序的包系列名称。可以通过 PowerShell 命令找到它:

Get-AppxPackage | Select-Object Name, PackageFamilyName | Sort-Object Name

添加例外后,UWP 应用程序将开始通过 Fiddler 发送流量。您将在会话列表中看到它的请求——通常可以通过 User-Agent 或目标主机轻松识别。

💡 提示:UWP 和 HTTPS

要拦截 UWP 应用程序的 HTTPS 流量,仅添加 loopback 例外是不够的。还需要将 Fiddler 证书安装到 Trusted Root Certification AuthoritiesLocal Machine 存储中(而不仅仅是当前用户)。可以通过 certmgr.msc 或组策略完成此操作。

过滤器、断点和请求修改

Fiddler 用于调试的三大强大功能是会话过滤、断点和 AutoResponder。我们将逐一讨论。

会话过滤

Filters 选项卡允许您仅显示所需的请求。主要选项包括:

  • Show only the following Hosts——按域过滤(例如,api.example.com
  • Show only if URL contains——按 URL 部分过滤
  • Show only if response Content-Type——仅 JSON、XML、图像等
  • Hide if URL contains——排除噪声请求(例如,telemetryanalytics

还可以使用窗口底部的 QuickExec 字符串进行快速命令。例如,select status 404 将突出显示所有 404 错误的请求,而 bold api 将所有包含“api” 的会话加粗。

断点(Breakpoints)

断点允许您在请求或响应发送/接收之前停止并手动修改内容。这类似于代码调试器中的断点,只是针对 HTTP。

  • Rules → Automatic Breakpoints → Before Requests——在发送之前停止每个请求
  • Rules → Automatic Breakpoints → After Responses——在传递给应用程序之前停止每个响应
  • 右键单击会话 → Breakpoint → Break on Request——在特定 URL 上设置断点

当请求被停止时,您可以修改任何头部、请求主体、URL,并点击 Run to Completion 以继续。这对于测试应用程序在修改数据时的行为特别有用。

AutoResponder

AutoResponder 是一个用于替换服务器响应的工具。您创建一个规则:“如果 URL 与模式匹配——返回这个文件/响应”。应用场景包括:

  • 在没有真实后端的情况下测试带有 API 占位符的应用程序
  • 模拟服务器错误(500、503、超时)
  • 替换资源——加载本地版本的 JS/CSS 而不是服务器版本
  • 加速开发——缓存对外部 API 的慢请求

通过 Fiddler 连接外部代理

Fiddler 的一个重要功能是以“代理通过代理”(upstream proxy)模式工作。Fiddler 在本地拦截流量,然后通过外部代理服务器将其转发。这允许同时调试请求并更改 IP 地址或地理位置。

何时需要:

  • 测试应用程序在通过公司代理工作时的行为
  • 检查地理相关内容——应用程序在其他国家的工作情况
  • 调试使用代理的应用程序
  • 测试具有 IP 限制的 API(IP 白名单)

在 Fiddler Classic 中设置 upstream proxy:

  1. 打开 Tools → Options → Gateway
  2. 选择 Manual Proxy Configuration
  3. Proxy 字段中输入代理地址,格式为 host:port
  4. 如果代理需要身份验证,请提供用户名和密码
  5. 点击 OK 并重新启动流量捕获

Fiddler 支持 HTTP、HTTPS 和 SOCKS5 代理作为上游代理。对于 SOCKS5,记录格式略有不同:

socks=proxy.example.com:1080

对于测试应用程序的地理相关行为,住宅代理 非常合适——它们使用来自所需国家的真实家庭用户 IP,应用程序将获得与该地区的真实用户相同的响应。这一点很重要,因为 API 根据地理位置返回不同的内容。

如果您在调试时需要快速下载大量数据,可以使用 数据中心代理——它们提供稳定的连接和最低的延迟,这在处理重型 API 时非常方便。

💡 FiddlerScript 用于动态选择代理

通过 FiddlerScript,您可以为不同的主机设置不同的上游代理。例如,将对 api.us-service.com 的请求通过美国代理发送,而其他请求则直接发送:

static function OnBeforeRequest(oSession: Session) {
  if (oSession.HostnameIs("api.us-service.com")) {
    oSession["x-OverrideGateway"] = "us-proxy.example.com:8080";
  }
}

实际场景:解析、API 测试、地理绕过

我们将讨论一些可以通过 Fiddler 轻松解决的具体任务。

场景 1:移动应用程序 API 的逆向工程

您希望自动化应用程序中的操作,但它没有公开的 API。解决方案:在 Android 模拟器或 Windows 客户端上启动应用程序,配置它使用 Fiddler 作为代理,并在执行所需操作时记录所有请求。

记录后,您将获得完整的视图:端点、请求格式、身份验证头、令牌。这些数据可以用于编写自己的客户端或通过脚本进行自动化。

场景 2:市场解析器的调试

在为 Wildberries、Ozon 或其他市场开发解析器时,通常不清楚请求为何被阻止。Fiddler 允许您将通过的浏览器请求与被阻止的解析器请求进行比较,并找到头部、顺序、cookie 或 TLS 指纹的差异。

典型发现:解析器以不同的顺序发送头部,缺少 Accept-Language,或者 User-Agent 包含 Python 版本。修正解析器代码中的这些细节可以降低被阻止的可能性。

场景 3:测试地理相关内容

如果您的应用程序向来自不同国家的用户显示不同的内容,则需要使用来自这些国家的真实 IP 进行测试。配置 Fiddler 使用来自所需地区的上游代理,启动应用程序——您将看到该国家用户所见的内容,以及所有请求的完整日志。

场景 4:监控应用程序的后台活动

想知道已安装程序“拨打”了哪些电话?启动 Fiddler,启动程序,等待 5-10 分钟。会话列表中将出现程序访问的所有主机。这对于审核第三方软件的安全性、检查遥测或不必要的连接非常有用。

场景 5:导出请求以重放

Fiddler 允许将拦截的请求导出为 cURL 格式,可以直接在终端中运行或粘贴到 Postman 中。右键单击会话 → Copy → cURL Request。这对于将请求传递给同事或记录 API 非常方便。

Fiddler Classic vs Fiddler Everywhere:选择哪个

Telerik 支持两个版本的产品,选择它们之间并不总是显而易见。我们将讨论关键差异。

参数 Fiddler Classic Fiddler Everywhere
平台 仅限 Windows Windows、macOS、Linux
价格 免费 付费订阅(有免费计划)
UWP 支持 是(通过 WinConfig) 有限
FiddlerScript 是(JScript.NET) 否(使用规则)
界面 过时,但功能齐全 现代,方便
协作 是(云集合)
扩展性 .NET 插件 有限
拦截系统流量 完全 完全

何时选择 Fiddler Classic:您仅在 Windows 上工作,需要处理 UWP 应用程序,使用 FiddlerScript 进行自动化,或者您需要完全免费的无限制版本。

何时选择 Fiddler Everywhere:您在 macOS 或 Linux 上工作,需要现代界面,重视团队协作与共享请求集合,或者希望与 CI/CD 流水线集成。

还值得提及替代方案:Charles Proxy(付费,在 macOS 上流行)、mitmproxy(免费、控制台、非常灵活)、Wireshark(在数据包级别工作,而不是 HTTP)。每个工具都有其优点,但对于大多数 Windows 应用程序调试任务,Fiddler Classic 仍然是最佳选择。

常见问题及解决方案

在使用 Fiddler 时,偶尔会出现一些常见问题。以下是最常见的问题及其解决方案。

问题:启用 Fiddler 时应用程序无法工作

原因:证书固定、应用程序中硬编码的代理,或应用程序不信任 Fiddler 的证书。解决方案:

  • 将 Fiddler 的证书安装到 Local Machine → Trusted Root 存储中
  • 检查应用程序是否使用证书固定
  • 将主机添加到 SSL 例外:Tools → Options → HTTPS → Skip Decryption for following hosts

问题:关闭 Fiddler 后互联网无法工作

Fiddler 在意外关闭时未能移除系统代理。解决方案:打开 Windows 设置 → 网络 → 代理 并禁用手动代理。或者再次启动 Fiddler 并正常关闭。

问题:仅显示 CONNECT 隧道,但不显示 HTTPS 内容

HTTPS 拦截未配置。请返回证书设置部分,确保勾选了 Decrypt HTTPS traffic,并且证书已安装在系统存储中。

问题:UWP 应用程序的流量未出现在 Fiddler 中

此应用程序未添加 loopback 例外。使用 WinConfig(在 UWP 部分描述)并在添加例外后重启应用程序。

问题:上游代理无法工作(连接错误)

请检查:代理地址和端口的正确性、用户名/密码的准确性、代理服务器的可用性(尝试直接连接而不使用 Fiddler)。还要确保代理支持所需的协议——并非所有 HTTP 代理都支持 HTTPS 隧道。

结论

Fiddler 是所有处理 Windows 应用程序 HTTP 流量的用户不可或缺的工具。它允许您实时查看所有请求,实时修改它们,测试应用程序在不同条件下的行为,并解决浏览器 DevTools 无法完成的任务。通过 loopback 例外机制对 UWP 应用程序的支持尤其珍贵——这是大多数替代品所没有的独特机会。

对于测试应用程序的地理相关行为或通过外部代理检查工作——在 Fiddler 中配置上游代理。如果您需要来自特定国家的真实 IP 进行准确测试,请关注 住宅代理——它们提供尽可能真实的地理位置和最低的被测试服务阻止的风险。

从 Fiddler Classic 开始——它是免费的,文档齐全,覆盖 90% 的 Windows 调试任务。随着需求的增长,可以转向 Fiddler Everywhere 或通过像 mitmproxy 这样的专业工具补充工作流程,以实现更灵活的自动化。

```