Fiddler 没有捕获某些连接

Fiddler not capturing some connections

我正在尝试使用 Fiddler 版本 5.0.20202.18177(撰写本文时的最新版本)来确定各种在线/网络安装程序使用的 URL。

这在大多数情况下都可以正常工作。例如,SpotifySetup.exe:

但是,这在某些情况下不起作用。例如,使用 DropboxInstaller.exe and bitdefender_online.exe:

我已确保:

  1. 已为所有进程设置 HTTPS 解密:
  2. 正在捕获所有类型的连接:
  3. Windows' 代理已按预期设置。

  4. 所有 Windows 10 个 AppContainer 环回豁免已到位:

运行 Fiddler 作为管理员没有任何区别。

我猜想可执行文件根本没有使用代理,但据我所知,如果代理设置在 Windows 级别,那么它们就无法覆盖它?

程序可以使用 Windows Internet 设置中定义的代理,但它也可以忽略这些设置并直接连接到 Internet。

代理设置仅自动用于使用 Microsoft 提供的 HTTP 客户端的程序(例如,用于 C/C++ 的 WinHTTP 或 Dot.net Http 客户端实现)。 使用自己的 HTTP 客户端的所有其他程序都可以查询 Windows 代理设置并应用它们,但这是可选的。从 Windows 的角度来看,这些程序只是打开 TCP 连接,Windows 不知道连接上使用的是什么协议,因此 Windows 无法强制使用代理,即使它会尝试这样做。

默认情况下,即使 Windows 附带的程序(如命令行太 curl)也会忽略 Windows 代理设置。

例如,Dropbox 在 Dropbox 客户端中有自己的代理设置。在那里你必须将 Fiddler 配置为代理。

Bitdefender 似乎也有 it's own proxy settings 您必须在其中配置 Fiddler。

在与 Robert 讨论后,我最终放弃了 Fiddler,设置了 VirtualBox VM 运行 pfSense Community Edition (free) + Squid3 with HTTPS Interception 和 Access Logging,在我的测试中安装了 pfSense 的根 CA 证书 Windows VM,并更改我的测试 Windows VM 的默认网关到有效的 pfSense 的 LAN IP 地址。

以 Dropbox 示例为例,它最初记录 TCP_TUNNEL_ABORTED/200 client.dropbox.com:443,所以我将 client.dropbox.com 添加到 ACL 的白名单中,然后它起作用了,我可以看到完整的 EXE URL: