# 一、Fiddler介绍
Fiddler是最强大最好用的Web调试工具之一, 它能记录所有客户端和服务器的http和https请求。允许你监视、设置断点、甚至修改输入输出数据。Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。换言之,你对HTTP 协议越了解,你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。
Fiddler下载链接 (opens new window)
# 二、Fiddler的工作原理
Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。Fiddler是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,Fiddler就处于请求之间,当浏览器发送请求,会先经过Fiddler,然后在到服务器;当服务器有返回数据给浏览器显示时,也会先经过Fiddler,然后数据才到浏览器中显示,这样一个过程,Fiddler就抓取到了请求和响应的整个过程。
Fiddler界面介绍:功能区、工具区、会话列表区、命令行区、请求、响应区
(1)抓取HTTPS数据包设置:
点击“Tools->Options...->HTTPS”初始情况:
修改完成后界面:
在首次设置该配置的时候会有提示安装证书弹窗显示,点击安装,安装完成后,点击OK,重启Fiddler就可以了。
但有时候没有弹窗安装证书或根本就没有提示,这种情况一般在Win7中较多出现,Win7的系统https方面 在.net Framework4.0上有bug 解决方式: 1.cmd 命令行,找到fiddler的安装目录; 2.然后执行以下命令: makecert.exe -r -ss my -n “CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com” -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/11/2099 注意:这个命令最后的日期 09/11/2099 一定要大于现在的日期,否则创建证书是过期的;这样执行完之后,再去重新配置一次,就可以正确安装证书了。
(2)设置远程连接及端口
点击“Tools->Options...->Connections”初始情况:一般端口默认为8888,自己也可以自定义端口,点击OK
会话列表区界面展示
#:HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增
Result:HTTP响应的状态
Protocol:请求使用的协议(如HTTP/HTTPS)
Host:请求地址的域名/ip
URL:请求的服务器路径和文件名,也包含GET参数
Body:请求的大小,以byte为单位
Caching:请求的缓存过期时间或缓存控制header的值
Content-Type:请求响应的类型
Process:发出此请求的Windows进程及进程ID
Comments:用户通过脚本或者菜单给此session增加的备注
Custom:用户可以通过脚本设置的自定义值
请求、响应区显示
Statistics统计页签:通过该页签, 用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求, 可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多, 从而对页面的访问进行访问速度优化
inspectors检查页签:它提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,它分为上下两部分:上部分为HTTP Request(请求)展示,下部分为HTTPResponse(响应)展示
AutoResponse自动响应页签:在开发或测试过程中,由于各种原因不能得到想要的数据,所以利用相关技术模拟出想要的数据,这种技术也就是Mock挡板技术。在软件测试中,特别是外接第三方接口时,经常用挡板技术模拟相关数据进行开发测试。我们这里只是简单用Fiddler工具来实现挡板技术,模拟服务器响应数据,并把数据自动返给客户端。Fiddler工具中设置AutoResponder选项就可以实现档板技术,自动返回自定义响应数据
AutoResponder 可用于拦截某一请求,进行如下操作:
- 重定向到本地的资源;
- 使用fiddler的内置响应;
- 自定义响应;
composer构建页签:支持手动构建和发送HTTP, HTTPS和FTP请求, 我们还可以从web session列表中拖曳session, 把它放到composer选项卡中, 当我们点击Execute按钮, 把请求发送到服务器端
log日志页签:打印日志
Filters过滤页签:多维度的过滤规则,可根据主机、进程、请求头、响应头、状态码、响应类型和大小、断点进行请求的过滤
Timeline时间轴页签:时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。 每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴, 用图表的形式展现出来, 就形成了瀑布图。 在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间
# 三、模拟网络环境
(1)模拟网络延迟
单击选择Rules->Performance->Simulate Modem Speeds
再次打开浏览器访问系统,网络延迟几秒后打开页面。
(2)精准控制网速
点击选择Rules->Customize Rules...(或者快捷键Ctrl+R),打开Fiddler ScriptEdittor文件,并在该文件找到该部分
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
根据实际修需修改网速后保存