3.抓包神器Fiddler简介(转载)
转自:https://www.cnblogs.com/ailiailan/p/hanxiaobei.html
使用Fiddler的两个场景,1:客户端对服务端返回数据的容错;2:服务端对异常请求数据的处理。
以下是需要做的准备和要掌握的知识点





4.Fiddler抓包原理解析
打开tools-->Fiddler Options--Https/Connections,分别按下图勾选:


配置好了之后,File-->exit退出Fiddler再重新启动。
Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。Fiddler原理图:

5.Fiddler修改客户端发出的请求
Fiddler设置断点修改Request有两种方式:1.通过工具栏设置断点;2.通过命令设置断点。
方式1:通过工具栏设置断点。
Rules-->Automatic Breakpoints-->Before Requests;设置之后,Fiddler会拦截到所有发送给服务器的请求。

接下来要做的演示是:1.打开谷歌(www.google.com.hk),输入查询词“mook”;2.点击搜索;Fiddler要完成的任务是在浏览器发送查询词“mook”给服务器之前,把查询词修改为“test”。从下图可以看到此时发出的请求被Fiddler拦截了,接下来点击session,点击下图框中的“Run to Completion”。

如图2,会新弹出一个session,修改此session下"WebForms"中的“mook”为“test”;然后再点击“Run to Completion”,到此请求已经执行完成了,搜索关键词已经由“mook”变为“test
”,可以通过查看当前浏览器的效果(图3)验证是否成功。

另外,可以看到用这种方式会拦截所有的请求,而我们所需要测试的站点只是“www.google.com.hk”,想要做到只测试某个站点,可以采用第二种方式:通过命令设置断点。
方式2:通过命令设置断点。
在命令行中输入“bpu www.google.com.hk”,回车(如图4),然后可以看到在底部出现如图5框中的信息,这时就做到了只针对“www.google.com.hk”站点进行拦截(可以打开一个其他的网址查看,其他的网址是可以成功访问的)。以上可以看出,通过命令设置断点可以做到针对某个站点进行拦截,也就是方式2的好处所在。当想要撤除断点时,可以在命令行中输入“bpu”,回车,来完成撤除。

6.Fiddler修改服务器端返回的内容
Fiddler设置断点修改Response有3种方式:1.通过工具栏设置断点;2.通过命令设置断点;3.AutoResponse设置。
方式1:通过工具栏设置断点。
Rules-->Automatic Breakpoints-->After Responses;设置之后,Fiddler会拦截到所有服务器返回的响应。

接下来要做的演示是:1.打开谷歌(www.google.com.hk),输入查询词“mook test”;2.点击搜索;Fiddler要完成的任务是在服务器发出响应之后把查询词修改为“test”。从下图可以看到此时返回的响应被Fiddler拦截了,接下来点击session,点击下图框中的“Run to Completion”。

此时浏览器中的tittle已经变成了“test”,说明刚才的修改已经生效了。
方式2:.通过命令设置断点。
在命令行中输入“bpafter www.google.com.hk”,回车。然后在浏览器中执行搜索“mook test”,点击session,删除服务器返回的所有内容,输入“mook test”,点击下图框中的“Run to Completion”,此时再查看浏览器,返回的所有内容就是“mook test”。当想要撤除断点时,可以在命令行中输入“bpafter”,回车,来完成撤除。

方式3:AutoResponse设置
在浏览器中输入“mook test”并搜索,完成正常的搜索过程;点击session,按下图所示,选中AutoResponder并勾选下方三个选项,然后点击“Add Rule”选择匹配方式,这里默认是“EXACT...”精确匹配,如果两个请求完全相同,那么这个规则生效,由于此次请求内的内容很长(如图6所示),就可能会出现“两次不匹配的情况”,解决的办法是选择模糊匹配(正则表达式)的方式,修改的规则是正则表达式的内容可以唯一匹配要拦截的请求,这里修改为“regex:(?inx)^https://www.google.com.hk/serah?.+”,因为所有session中只有我们要拦截的session才包含正则表达式中的内容,“.+”的作用是连接多个符号(如图7),然后选择返回状态“404_Plain.dat”,然后点击“Save”。
此时刷新浏览器,可以看到如图8所示的结果,证明本次的拦截成功了。

这是Fiddler提供的默认的返回内容,如果想自定义返回内容该怎么办呢?如图9,选择“Find a file”,选择一个实现编辑好的文件(txt,如图10),然后点击“Save”。
此时刷新浏览器,可以看到如图11所示的结果,证明本次的拦截成功了。

通过以上3种方式,我们就可以测试当服务器返回异常数据时,客户端的稳定性。
7.Fiddler实现会话的过滤、对比及请求的编解码
7.1,会话的过滤
在浏览器中执行多次请求,session区域会有大量的请求,如果想过滤出“www.baidu.com”的请求,可以通过图12所示的方式来完成。

7.2,会话的对比
Ctrl键选中两个session,右键选择如下图中的“Compare”,对比的结果如图13所示,用“标红”、“标黄”的方式来表明两个session的差异。

7.3,请求的编解码
选择一个sesion,点击Tools-->TextWizard,弹出如下图14的窗口,其中‘...Decode’是解码,‘...INcode’是编码,图中将发送的请求中的“mook+test”解码为“mook test”,而“mook test”正是我们所搜索的内容。

8.Fiddler实现Host的配置
方法:Tools->HOSTS,按下图15勾选,并点击蓝色链接,就可以在窗口中设置host了。

9.Fiddler构造HTTP GET请求
举例:构造一个在www.google.com.hk中搜索“mook”的请求;步骤:1.在浏览器中搜索“mook”,2.在回话中找到这个请求的session,复制图16中绿色框中的请求的头部信息(header),3.如图17,请求区域选择“Copmoser”,把红色框中的内容复制到绿色框中(注意去掉尾部的协议“HTTP/1.1”),4.修改绿色框中url的关键字,5.点击棕色框中的“Execute”按钮;至此完成了本次HTTP GET请求的构造。

10.Fiddler构造HTTP POST请求
举例:构造如图18中登陆的一次post请求。步骤:1.复制图19中的header信息,2.切换到“Copmoser”,粘贴到绿色框中,然后把图20中的红色框内容剪切到“Request Body”中,修改header中的内容,最终如图21所示,点击“Execute”按钮,结果如图22所示,证明我们成功的构造了一次post请求。
很多时候,需要修改post请求中的参数,可以在“Copmoser”中的“Request Body”内修改。

11.Fiddler抓取手机上的网络数据包
设置环境:1.配置Fiddler允许监听https,2.配置Fiddler允许远程连接,3.手机端设置代理服务。
Fiddler上的设置如前文中“4.Fiddler抓包原理解析”,手机上的设置如图23,其中“代理服务器主机名”为fiddler所在电脑的ip地址,“代理服务器端口”为8888。经过这样的设置之后,手机上所有访问网络的请求都会转发到fiddler,然后再由fiddler转发给后端服务。
上文中提到的客户端为pc浏览器时Fiddler的应用,在客户端为手机app时也同样适用。
接下来演示一下如何使用“AutoResponder”来修改服务器返回给app端的内容,通过这样的修改可以模拟各种异常数据返回给app端,从而验证app端的容错情况。步骤:1.选择一个session,在服务端返回的Response中找到一个在app上可以明显被看到的内容,如图24中的“谈姐弟恋的,原来都是这样的女人”,2.点击图24中的绿框,弹出编辑窗口,修改“谈姐弟恋的,原来都是这样的女人”为“谈姐弟恋的,原来都是这样的人”(如图25),保存txt文档。3.切换到“AutoResponder”,再次选中图24中的session,选择模糊匹配规则,并把步骤2中保存的txt文档导入到如图26中的绿色框中,点击svae,4.清除所有session,退出APP,再重新启动,此时我们可以看到之前修改过的返回内容已经生效了。


那么,使用fiddler抓取手机包有哪些优点呢?
1.无需root权限;2.Android&IOS都适用;3.操作简单、界面清晰。
12.为什么使用PostMan做API接口测试
既然已经有很好用的fiddler工具了,为什么还需要用PostMan呢?因为在做API接口测试时,会遇到以下的问题:
1.后端服务的提测时间要早于客户端,很难去构造测试需要的请求;2.很难用客户端模拟异常请求;3.Fiddler的Composer无法实现自动化验证。
而PostMan能够弥补以上的问题,那么PostMan能够应用于哪些产品呢?PostMan的适用范围:1.PC;2.WAP(无线);3.APP。
13.PostMan测试HTTP GET请求
步骤:1.启动app,通过fiddler获取一个get请求(如图28),2.启动postman,在fiddler中选中步骤1中的session,右键copy出url,3.copy出header部分,点击Send。
如图30,得到了本次请求的返回值,这样我们就可以在发送请求后对返回值进行校验;步骤:1.选中Request区域的Test,再选择右侧验证方法中红色框住的“Response body:contains string”(验证返回值中是否包含哪些内容),把返回值中的数据copy到绿色框中(两个参数间用&&连接),点击Send,如图31,Response区域的Test中新增了一个Pass记录,说明本次对返回值的校验通过了。以上也就是对Request设置检查点。如果想在回归测试的时候再次执行这次请求的话,可以把这次请求保存到Cellection中(如图32)。
自动执行一个Cellection中的所有Request
方法:1.如图33,点击Cellection上的“箭头”,点击“Run”;2.如图35,弹出一个新的窗口,在新的窗口中点击“Start Test”,此时就会自动执行Cellection中的所有请求,另外,还可以设置执行Cellection的循环测试和延时。这就是postman带来的好处:可以收集请求,在需要的时候可以批量的的执行请求。


14.PostMan测试HTTP POST请求
步骤:1.启动app,通过fiddler获取一个post请求(如图35),2.启动postman,在fiddler中选中步骤1中的session,右键copy出url,3.copy出header部分(如图36),4.post请求和get请求的最大区别就在于post请求中包含body,在fiddler请求区“Inspectors”中找到“webForms”,把“body”中的内容也逐一复制到postman的请求区的body中(注意选择第二个选项“x-www-form-urlencoded”),至此一个post请求就构造完成了;点击Send。

同样的,也可以对post请求的返回值进行验证;如图39,postman返回数据选择“Raw”,校验方法和结果同get请求,就不多介绍了。

15.数据驱动DDT实现API接口自动化测试简介
以上,我们认识到postman会在回归测试当中帮我们节省很多的人力,那既然postman这么好用,为什么我们还要把数据驱动应用在API接口测试中呢?这是由于我们测试的内容是API接口,在测试的过程中需要输入大量的参数和不同的数据值,如果使用postman去完成的话,需要不断地构造各种请求,而构造各种请求的过程其实是很耗时的,如果我们把这一个过程就脚本的方式去实现的话,会变得更加简单高效。
既然决定要通过脚本的方式去实现,首先就需要选择一种技术去支持我们来完成这样的实现。使用Python requests模块来实现脚本的自动化,之后我们就可以写出HTTP GET/POST请求的脚本,并且利用DDT将脚本实现参数化。
16.Python requsts测试HTTP中的GET、POST请求
代码构成;1.首先代码中引入requests模块和unittest框架;2.TestCase中用字典的形式配置herder、cookies和get/post请求部分。

17.数据驱动DDT实现API接口自动化测试实战
以上我们已经实现了get、post脚本,下面来把两条脚本实现参数化,那么如何参数化呢?使用数据驱动的方式。
代码构成;1.引入ddt模块;2.ddt.ddt修饰TestCase;3.ddt.data设置不同的参数集合;4.测试类中引入参数化的device_id;5.修改请求中的device_id。


3.抓包神器Fiddler简介(转载)的更多相关文章
- 【Python+postman接口自动化测试】(5)抓包工具Fiddler简介
Fiddler简介 Fiddler 4.6 下载 http://www.downza.cn/soft/234727.html 为什么使用Fiddler? 可以抓到请求数据,查看Raw格式/表单格式/J ...
- 抓包神器Fiddler之Https请求随心转
随着AppleStore对APP的审核越来越严格,客户端请求服务端API的方式大多数都变更为了https,在更安全的同时又引起了另外一个问题——本地抓包开发调试的不便. 一般来说,我们在开发API的时 ...
- http请求抓包神器-Fiddler(记录和检查你电脑的所有http通讯)
Fiddler是做什么的,能帮助我们做什么? 1.能够监听http/httpS的流量,可以截获从浏览器或者客户端软件向服务器发送的http/https请求: 2.对截获之后的请求,我们还能够查看请求中 ...
- Mac上的抓包工具Charles[转载]
今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包 http://blog.csdn.net/jiangwei0910410003/article/details/198 ...
- 和我一起学习爬虫之HTTP/HTTPS抓包工具--Fiddler
HTTP/HTTPS抓包工具--Fiddler Fiddler[ˈfɪdlə(r)] 1. HTTP代理神器Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP ...
- 【转】抓包工具Fiddler的使用教程(十二)下:Fiddler抓取HTTPS
在教程十二(上),我们也了解了HTTPS协议,该教程就和大家分享Fiddler如何抓取HTTPS 抓包工具Fiddler的使用教程(十二):[转载]HTTPS协议 再次回忆一下关键内容: iddler ...
- Mac平台下的抓包神器 —— Charles
在开发界,“抓包”这个词想必大家耳熟能详.通过抓包工具,能够获取设备在网络通讯过程中的交换数据包.在 Windows 平台上,笔者使用较多的是 Fiddler 工具,但是由于 Fiddle 使用 C# ...
- 抓包工具fiddler下载配置(一):下载/安装&信任证书
简介 Fiddler一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件 ...
- 测试必备工具之最强抓包神器 Charles,你会了么?
前言 作为软件测试工程师,大家在工作中肯定经常会用到各种抓包工具来辅助测试,比如浏览器自带的抓包工具-F12,方便又快捷:比如时下特别流行的Fiddler工具,使用各种web和APP测试的各种场景 ...
随机推荐
- HDU 6125 Free from square (状压DP+背包)
题意:问你从 1 - n 至多选 m 个数使得他们的乘积不能整除完全平方数. 析:首先不能整除完全平方数,那么选的数肯定不能是完全平方数,然后选择的数也不能相同的质因子. 对于1-500有的质因子至多 ...
- Word 2010发布博客文章(修正)
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- org.eclipse.wst.common.project.facet.core.xml
Ctrl+Shift+R *core.xml 修改Dynamic Web module 由3.1 切至2.几
- CodeForces 519E A and B and Lecture Rooms(倍增)
A and B are preparing themselves for programming contests. The University where A and B study is a s ...
- config的配置文件
- vs2008编译opencv,不能copy CMakeVSMacros2.vsmacros
由于学习opencv,要查看源码文件,所以要先对opencv进行编译,可悲的是出错了 “不能copy CMakeVSMacros2.vsmacros” 通过上网查找资料,之所以出现这种情况,是因为 ...
- linux mysql 权限
原文地址:http://www.cnblogs.com/eczhou/archive/2012/07/12/2588187.html Linux下mysql新建账号及权限设置 1.权限赋予 说明:my ...
- Lazy<T> 提供对延迟初始化的支持
延迟初始化 就是在第一次使用的时候在 进行类的初始化 public class Student { public Student() { this.Name = "DefaultName& ...
- 本地连接腾讯云Mysql失败问题
腾讯云主机中MySQL无法远程连接的解决办法 在远程主机上,我开启了 mysql服务,用 phpmyadmin 可以打开,比如说用户名为 root,密码为 123456.不过用 Mysql 客户端远程 ...
- Centos故障01:Docker容器丢失
问题 一测试环境,配置及应用如下: [Centos ~]# rpm -q centos-release centos-release-7-6.1810.2.el7.centos.x86_64 应用: ...