Fiddler的安装和配置
Fiddler Classic介绍
Fiddler Classic是一个适用于Windows操作系统的免费的网络调试代理工具,它会记录HTTP/HTTPS网络流量,方便从中找出引起问题的原因。使用Fiddler需要从官网下载进行安装。
配置Fiddler Classic Server
安装Fiddler Classic的机器即是Fiddler Classic Server。有时需要对Fiddler Calssic进行特定的步骤才能接收和发送网络流量,比如说:
- 解析HTTPS和使用通过绑定令牌(channel-binding)进行验证的流量类型
- Windows 8操作系统(Confiture for Windows 8 Metro-style applications)
- 监控一个远程机器(Configure Traffic from Another Machine)、链接到上游代理(Chain to Upstream Proxy)、使用Fiddler Classic作为反向代理(Use Fiddler Classic as Reverse Proxy)、监控本地流量或监控拨号(dial-up)与VPN链接这样的网络配置(Monitor RAS, VPN or Dialup Connections),验证到CBT-Protected Server(Authenticate to CBT-Protected Server)
配置客户端
客户端是Fiddler Classic监控的网络流量的来源。一些客户端应用、操作系统和设备可能需要额外的步骤才能发送或接收来去Fiddler的流量,包括:
- 浏览器,比如FireFox, Opera或者IE(当发送流量至本地)
- 应用,比如.NET应用(Configure .NET Applications),WinHTTP应用(Configure for a WinHTTP Application),Java应用(Configure for Java applications),PHP/cURL应用(Configure for PHP/cURL Applications),捕捉来自一个不同账户的流量(Capture Traffic from a Different Account),
- 设备,比如Mac(Configure Mac),安卓(Capture Android Traffic),IOS(Capture iOS Traffic),Windows Phone 7(Monitor Windows Phone)和PocketPC设备(Monitor PocketPC)
配置浏览器
在开始捕捉前,需要清空浏览器缓存以确保所有的请求都被发送和捕捉。大多数情况下,只需要启用File>Capcutre Traffic就可以捕捉来自大多数浏览器的流量。需要注意的是捕捉来自Opera的流量时,需要在启动Fiddler之前启动Opera。如果要记录从IE发送到http://localhost或http://127.0.0.1的流量还需要额外的配置:Monitor traffic to localhost from IE or .NET。同样的捕捉来自FireFox的HTTPS流量也要进行一些配置:Capture HTTPS traffic from FireFox 。
如果捕捉来自Firefox 4+的HTTP流量,需要进行以下操作之一:
通过Tools > Monitor with Fiddler > Use Fiddler automatically使用FiddlerHook对FireFox进行配置;
通过Tools > Options > Advanced > Network > Settings > Use System Proxy Settings配置FireFox如何连接到网络;
此外,还可以收到配置任何浏览器将流量发送给Fiddler,只需要将浏览器的Options或Preferences里的代理选项设置为连接到一个代理服务器:Address: 127.0.0.1 Port: 8888;使用结束后需要需要修改回原来的设置,否则会在加载页面时遇到问题。另外,还可以通过设置让Fiddler Classic自动启动或禁用代理:Proxy Auto-configuration。
至此, 我们已经可以通过启动Fiddler Classic抓取HTTP/HTTPS流量。
解析HTTPS流量
默认情况下,Fiddler Classic不会捕捉并解析安全的HTTPS流量。要捕捉通过HTTPS发送数据需要启用HTTPS流量解密。
启用HTTPS流量解析
Tools>Options>HTTPS>Decrypt HTTPS Traffic
跳过特定主机的流量解析
Tools>Option>HTTPS>在Skip Decryption输入主机名
跳过某个应用程序的流量解密
要跳过某个应用的流量解密或仅解密来自单个主机的HTTPS流量,必须在Fiddler Script中修改OnBeforeRequest函数,添加规则。
跳过某个应用程序的HTTPS流量的解密:
if (oSession.HTTPMethodIs("CONNECT") && oSession["X-PROCESSINFO"] && oSession["X-PROCESSINFO"].StartsWith("outlook")) { oSession["x-no-decrypt"] = "boring process"; }
仅解密来自某个主机名的HTTPS流量:
if (oSession.HTTPMethodIs("CONNECT") && !oSession.HostnameIs("SiteICareAbout.com")) { oSession["x-no-decrypt"] = "do not care."; }
配置Windows客户端以信任Fiddler Root Certificate
1 启用HTTPS流量解密
2 在弹出的对话框中点击Yes信任Fiddler根证书并安装证书
响应需要客户端证书的请求
要指定Fiddler Classic返回给给定会话的 .CER文件,需要添加以下Fiddler脚本:
oSession["https-Client-Certificate"] = "C:\\test\\someCert.cer";
要给Fiddler Classic指定否则返回的 .CER文件,将该 .CER文件放在以下路径:
%USERPROFILE%\My Documents\Fiddler2\ClientCertificate.cer
生成一个 .CER文件:
1 在当前用户的个人证书存储中安装证书(Importing an SPC into a Certificate Store)
2 在个人证书存储中右击证书
3 点击All Tasks>Export
绕过上游代理
要绕过对特定域名的所有请求的上游代理,需要添加规则绕过上游代理:Bypass Upstream Proxy