Fiddler 官方给 Fiddler 的描述语是 Web Debugging Proxy,也就是 Web 调试代理工具。
主要功能有:
截取 HTTP/HTTPS 请求
修改 Session
网络调试
安全测试
性能测试
本文,主要讨论前三项功能的使用方法,包括 Fiddler 的基础配置和功能以及使用内置 FiddlerScript 脚本进行复杂功能调试。
Fiddler 使用 C# 开发,支持 Windows XP 以上版本。对于 Linux 和 Mac 用户,有一个基于 Mono 的 Alpha 版本,经本人 Mac 实际测试,基本上算是不能用的状态。因此,不建议使用。
下载地址:http://www.telerik.com/download/fiddler
安装完毕后,为了使用后续功能,建议安装 FiddlerScript Editor 插件,否则修改 FiddlerScript 会比较麻烦。
准备完毕后,请打开 Fiddler 进入 Tools->Fiddler Options,在 Connections 中勾选 Allow remote computers to connect,并重新启动 Fiddler。
完成了上述设置后,Fiddler 就已经可以抓取本地的网络请求。如果需要对手机 app 进行调试,则需要设置手机代理。
选中请求后,可以查看 Headers、Cookies 和多种模式的(TextView/WebForms等)请求参数。
如果想查看 Response,则可以选中请求后点击 Inspectors 或者直接双击请求查看响应 Headers 和多种格式的响应内容。对于常见的数据结构,可以格式化展示 JSON 或 XML。
在进行调试时,我们可以使用 Fiddler 的几种调试功能:
HOSTS,等同于操作系统的 HOSTS 文件。
Filters,可以修改 Request 或 Response 的包体。
AutoResponder,可以截获请求,直接将请求代理到指定 URL 进行响应。
FiddlerScript,以 FiddlerScript(JScript.NET) 形式,实现 Filters 和 AutoResponder 的所有功能,并且可以定制 UI 界面。
Fiddler 自带有 HOSTS 功能,跟 Windows 自带的 HOSTS 应该是一回事,不过在 Fiddler 中操作比较方便。
而是直接从菜单进入 Tools -> HOSTS…,勾选 Enable remapping of requests(此处省略数十字),就可以把请求线上服务通过 HOST 方式,代理到沙盒或者测试机。
很多时候,客户端一次行为可能会产生多次 HTTP 请求,会造成很大的干扰,Filter 功能就可以选择性截取
首先进入 Filters 标签,勾选 Use Filters。
在Request Headers中,勾选 Show only if URL contains,并在后面的输入框中填写希望截取的 URL。同理,也可以勾选 Hide if URL contains,隐藏特定的请求。
除此之外,还可以直接修改 Request 或 Response 包体。
AutoReponder 可以截获 Request URL,并用其他 URL 进行 Respond。利用 AutoResponder,也可以实现将请求引导到指定机器的功能。
将原 URL 截获后,甚至可以直接修改 URL。截图请求时也可以有很多方式,包括URL正则匹配、包体匹配和 Headers 匹配等。
此外,AutoResponder 支持设置断点。可以在截获请求后,在断点处修改请求或者响应。
FiddlerScript 就是通过 JScript.NET 语言(可以约等于 JavaScript),直接修改 Request 和 Response,能够实现上述各种功能。对于熟练的专业用户来说,会更加方便灵活。
使用 FidderScript 建议安装第一节所说的插件,安装后就可以直接打开 FiddlerScript 标签,直接修改代码。
在 OnBeforeRequest
函数中修改:
oSession.oRequest["http_net_type"] = "1";
// 增加预览机标识
oSession.oRequest.headers.Add("Cookie", "pub_env=1");
if (oSession.uriContains("c.tieba.baidu.com")) {
// TODO
}
更多用法,请参考 Fiddler Documentation