抓包工具Fiddler介绍以及常用功能
1.Fiddler简介
Fiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试,等等。现在抓包工具成为测试人员的必备使用工具,开发人员也在普遍使用,进行问题的定位分析,是非常有助于工作的一款工具。
2.Fiddler工作模式
浏览器给webserver发送一个Request,代理服务器fiddler接收到Request,fiddler将Request发送到webserver,webserver接收到Request后进行处理,Response到代理服务器fiddler,Fiddler将Response返回到浏览器,如图:
3.Fiddler功能强大,有以下常用功能:
Fiddler抓取HTTPS请求配置
Fiddler自带方便的编码工具:TextWizard
接口测试
设置断点,篡改和伪造数据
修改电脑系统hosts
HTTP请求统计视图
简单并发测试
慢网络测试(限制网速)
显示出服务器IP方法
命令行QuickExec用法
4.菜单栏
1、点击“会话记录”,“增加备注”即可
2、点击“会话记录”,点击“回放/重播”按钮,或者点击“快捷键R”即可回放
3、清空控制面板,选项:Images、Non-200s、Non-Browser等
点击“Remove all”按钮(全部清空)
4、调试Bug,可以请求断点的时候让断点往下走,结合状态栏使用
对发出的请求,设置断点,点击“箭头”(位于下方,箭头朝上并显示×),代表请求在发送阶段,会有断点,再次点击“箭头”(位于下方,箭头向上并显示×),代表请求在返回阶段,产生断点。
若遇上请求没有发出去,想让断点往下走,点击“GO”按钮
5、代理模式切换,默认缓冲模式,点击“切换流模式”
6、解压请求,帮助解压Http请求里面的东西,方便查看
7、保持会话,默认选择“All sessions”Fiddler保存的会话数量越多,Fiddler占用内存数量就会越大
8、过滤请求,过滤一些不想看到进程里面发出的请求,例如:打开谷歌浏览器,和Fiddler并列排放,把图标移到谷歌浏览器上面,过滤请求就会显示谷歌浏览器的相关信息
9、查找,当会话数量较多时使用,例如:查找baidu,选择“粉色”,即可显示效果
10、保存会话,例如:保存会话,取名Demo,清空会话,点击“File”-“Recent archives”,找到刚刚保存的会话打开即可
11、保存截图,点击“图标”之后,5秒钟后保存截图
12、计时器,点击“图标”,开始计时,再点击“图标”,返回计时结果
13、快速启动浏览器,显示电脑本身已安装的浏览器,点击“浏览器”,即可打开使用
14、清除缓存,清除IE浏览器缓存的快捷键,点击“Clear Cache”,自动清除浏览器缓存
15、编码/解码,点击“TextWizard”,编码/解码文本内容,例如:URL被编码,选择“URLDecode”,即可解码
16、分离面板,显示浮窗效果,不用则关闭
17、MSDN搜索,针对MSDN
5.请求和返回报文查看选项卡功能说明
6.Fiddler抓取HTTPS请求配置
由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置。配置方式:
Tools—>Options—>HTTPS,勾选CaptureHTTPS CONNECTs、Decrypt HTTPS traffic 、ignore server certificate errors(unsafe),点击OK,会弹出证书直接确认即可。
7.抓取移动端APP的请求配置
Tools---->Connections---->勾选Allow remote computers to connect:
然后再手机上设置代理,以iPhone为例:
在手机上设置代理:设置—>无线网络,设置服务器ip和端口号:
然后手机safari浏览器输入地址:电脑ip:8888如:http://172.21.10.42:8888会出现如下页面:
点击“FiddlerRoot certificate”进行证书安装,安装完成后,如下说明安装成功:
此时,证书还不算完成安装完,假如手机是ios10.0以上系统,需要在手机系统设置—关于手机----证书信任设置,在此页面把证书开启即可,此时手机safari浏览器地址栏输入测试网址或者使用APP,在电脑端fiddler上即可显示出对应的请求:
8.Fiddler自带方便的编码工具:TextWizard
9.接口测试
Composer
10.设置断点,篡改和伪造数据
注册类 订单提交 支付类功能
请求时,可被篡改的两个点:Before Requests、After Responses。
修改Requests方法:Rules---->Automatic Breakpoints---->Before Requests
以论坛发布帖子为例,修改请求前数据内容,比如发布的内容如下:
点击发布帖子,此时请求被fiddler拦截掉,将右侧requests body里面的字段message内容前新增内容:“篡改requests数据成功!”,然后点击Run to Completion,先关闭掉拦截Rules---->Automatic Breakpoints---->Disabled,其他请求都放过,点击工具栏中的“Go”
修改Responses方法:Rules---->Automatic Breakpoints---->After Responses,方法跟修改Requests类似,无非修改的内容变成了Response。
10.修改电脑系统hosts
假如我要将www.baidu.com指向www.hao123.com对应的服务器上,www.hao123.com对应的服务器公网ip:47.94.18.31,配置如下:Tools---->Hosts---->勾选Enable remapping of requests for one host to a different host or IP,overriding DNS.然后host编辑区域,输入需要域名需要指向的服务器公网IP,比如我将www.baidu.com域名指向了47.94.18.31,保存即可。(如果不使用host,勾去掉即可)
11.HTTP请求统计视图
ctrl+点击需要统计的请求,右边Statistics可以看到总体明细。
12.简单并发测试
如一个人一天只能有一次抽奖机会,那么在点击抽奖按钮发出请求之前,要设置Before Requests Breakpoints,点击抽奖后在会话列表中会看到一个被断点的请求,此时鼠标选中此请求,按shift+u,会弹出并发次数的设置,按需求设置并发次数。
13.弱网络测试(限制网速)
Fiddler—》Rules—》Customize Rules ,
在CustomRules.js里搜索找到:m_SimulateModem,
在如下脚本中修改上传及下载延时毫秒数即可:
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";
}
修改完成后,重启下fiddler,Rules---->Performance---->Simulate Modem Speeds,选中即可生效。
14.显示出服务器IP方法
Fiddler默认配置中是看不到服务器IP的,接下来简单介绍下在fiddler上也能够看到请求的服务器IP:
1、Fiddler—》Rules—》Customize Rules ,
2、在CustomRules.js里搜索找到:static function Main() ,
3、添加如下一行脚本:
FiddlerObject.UI.lvSessions.AddBoundColumn(“Server IP”, 120, “X-HostIP”);
完整js代码如下:
static function Main() {
var today: Date = new Date();
FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today;
// Uncomment to add a “Server” column containing the response “Server” header, if present
FiddlerObject.UI.lvSessions.AddBoundColumn(“Server IP”, 120, “X-HostIP”);
}
添加完成后,重启下fiddler,就可以显示出请求的服务器ip。
15.fiddler过滤请求只要看自己想看的
在Filers面板中勾选“Use Filters”,并在Hosts区域,设置以下三个选项:
1).第一项有三个选项,分别是“No zone filter”“Show Only Intranet Hosts”“Show Only Internet Hosts”,不做更改;
2).第二项有四个选项,分别是:
No Host Filter”不设置hosts过滤“;
Hide The Following Hosts”隐藏过滤到的域名;
“Show Only The Following Hosts”只显示过滤到的域名;
“Flag The Following Hosts”标记过滤到的域名;
选中“Show Only The Following Hosts”,在文本框内输入需要过滤的域名,多个域名使用”;“分号分割。fiddler默认会检查http头中设置的host,强制显示http地址中德域名。以
15.Response乱码时的处理方法
问题:有时候我们看到Response中的HTML是乱码的, 这是因为HTML被压缩了, 我们可以通过两种方法去解压缩。
步骤:方法一:点击红框内容“Response body is encouded.Click to decode.”
方法二:选中工具栏中的"Decode"。 这样会自动解压缩。
推荐阅读