Fiddler 2025配置指南:提升Web调试效率的技术技巧

本文详细介绍了如何通过FiddlerScript脚本、扩展集成和配置优化来提升Fiddler调试工具的工作效率,包括单浏览器模式、ZSTD禁用、VirusTotal集成等实用技术方案。

Fiddler in 2025

Fiddler Web调试器现在已经足够"成年"可以喝酒了,但我仍然几乎每天都在使用它。随着平台和标准在过去几十年中的变化,Fiddler并没有完全优雅地老化,但该工具具有足够的可扩展性,以至于一些缺点可以通过扩展和配置更改来修复。

去年,我回顾了开发Fiddler过程中的一些错误和成功,在这篇文章中,我将探讨如何配置Fiddler以最大化当前的工作效率。

使用FiddlerScript和扩展增强功能

向Fiddler工具栏添加单浏览器模式按钮

默认情况下,Fiddler将自己注册为系统代理,系统上几乎所有的应用程序都会立即开始通过Fiddler发送流量。虽然这可能有用,但通常会产生大量无趣的"噪音",特别是对于希望仅查看浏览器流量的Web开发人员而言。Fiddler丰富的过滤系统可以根据无数标准隐藏流量,但出于性能和稳健性原因,最好不要让不需要的流量通过Fiddler。

实现这一目标的最简单方法是不要注册为系统代理,而是启动一个单独的浏览器实例,其代理设置配置为指向Fiddler的端点。

向Fiddler工具栏添加按钮来实现这一点只需要一个简单的FiddlerScript代码块:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// Rules > Customize Rules, place this just inside the HANDLERS class…

// Add a button to Fiddler's UI for "Single Browser Mode", where only one browser window will
// send its traffic to Fiddler.
public static BindUIButton("SingleBrowserMode \uD83D\uDC40")
function LaunchSingleInstance() {
    // Tell the system we're not the proxy anymore
    FiddlerApplication.UI.actDetachProxy();
    // Launch a single browser instance pointed directly at Fiddler.
    System.Diagnostics.Process.Start('msedge.exe', 
        '–user-data-dir="%temp%\\throwaway" –no-first-run –proxy-server=127.0.0.1:' + CONFIG.ListenPort.ToString() + " about:blank");
}

一个新按钮出现了!#太棒了

这个按钮可能是我多年来对Fiddler副本所做的最有价值的更改,说实话,我有点懊恼几十年前从未想过要包含这个功能。

禁用ZSTD

ZStandard是一种非常快速的无损压缩算法,在过去几年中得到了越来越多的采用,与deflate/gzip和brotli并列。不幸的是,Telerik尚未向Fiddler Classic添加对Zstd压缩的支持。虽然可以通过扩展添加支持,但更简单的方法是简单地更改出站请求,使其不向Web服务器请求此格式。

这样做很简单:只需重写Accept-Encoding请求头:

1
2
3
4
5
6
7
// Add just inside here:
// static function OnBeforeRequest(oSession: Session) {

// Don't request zstd content-encoding because Telerik didn't bother adding support.
if (oSession.RequestHeaders.ExistsAndContains("Accept-Encoding", "zstd")) {
    oSession.RequestHeaders["Accept-Encoding"] = oSession.RequestHeaders["Accept-Encoding"].Replace(", zstd", "");
}

与VirusTotal集成

自从转到Microsoft Defender团队后,我花了更多时间查看恶意文件。您可以将Fiddler集成到VirusTotal中,以了解有关其捕获的任何二进制文件的更多信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static ContextAction("Show Hashes")
function doHash(arrSess: Session[])
{
    for (var i: int=0; i<arrSess.Length; i++)
    {
        FiddlerObject.alert(
            "_MD5_\n"+arrSess[i].GetResponseBodyHash("md5") + "\n\n" +
            "_SHA1_\n"+arrSess[i].GetResponseBodyHash("sha1") + "\n\n" +
            "_SHA256_\n"+arrSess[i].GetResponseBodyHash("sha256") + "\n"           
            );
    }
}  

ContextAction("VirusTotal")
public static 
function doVTCheck(arrSess: Session[])
{
    for (var i: int=0; i<arrSess.Length; i++)
    {
        var oS = arrSess[i];
        if (oS.bHasResponse)
        {
            Utilities.LaunchHyperlink(String.Format(
                "https://www.virustotal.com/en/file/{0}/analysis/",
                oS.GetResponseBodyHash("sha256").Replace("-","")));   
        }
    }                                       
}

除了查看哈希值外,我还花了更多时间查看恶意网站和二进制文件,其中许多将恶意内容嵌入到base64编码中。Fiddler的TextWizard(Ctrl+E)提供了一种将Base64编码的文本转换回原始字节的便捷方法,而Web会话列表的上下文菜单中的"Copy > Response DataURI"允许您轻松地对任何数据进行base64编码。

添加NetLog导入器

如果您的目标不是使用Fiddler修改流量,通常最好不要让Fiddler捕获浏览器流量。相反,将基于Chromium的浏览器定向将其流量记录到NetLog.json文件中,您以后可以将其导入Fiddler,使用Fiddler NetLog导入器扩展进行分析。

了解使用Fiddler分析NetLogs。

……还有更多……

您可能根据自己的需要向Fiddler添加无数其他有用的小脚本。如果您查看我过去十年的GitHub Gists,可能会找到一些灵感。

调整设置

配置现代TLS设置

在Tools > Fiddler Options > HTTPS中,使其看起来像这样:

[图片描述]

使用Visual Studio Code作为Diff工具

如果您更喜欢VSCode而不是Windiff,请在Web Sessions列表下方的QuickExec框中键入about:config以打开Fiddler的首选项编辑器。

添加/更新fiddler.config.path.differ条目以指向您的VSCode实例的文件路径。

将fiddler.differ.params值设置为--diff "{0}" "{1}"

杂项

在路上无法访问Fiddler?您可以使用一个简单的基于Web的工具快速探索Fiddler SAZ文件。

开发人员可以使用Fiddler的前端作为他们自己定制工具和流程的UI。例如,我不想为Native Messaging Meddler构建整个篡改UI,而是使用Fiddler作为前端。

恶意软件猎人Jérôme Segura已经整理了一套专为搜寻恶意Web流量而设计的Fiddler自定义包。

更多?您对如何将Fiddler定制到现代工作流程中有任何好的建议吗?给我发送评论!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计