Fiddler

什么叫抓包?

说白了就是获取数据
F12中Network的内容就是一个个的包

为什么要抓包?

1.要分析数据,要对比数据是否正确(根据接口文档检查)
2完善接口文档
3.查看是否对数据进行加密,如果加密,看如何进行传参解密
4.抓到隐藏的内容,查看隐藏字段
5.对比数据,完成接口测试
6.可以查看bug是前端问题还是后端问题

怎么抓包?

F12,Fiddler

Fiddler的抓包原理

Fiddler就相当于一个漏斗,你往上放什么东西,原封不动下来的就是什么东西。
客户端请求,请求通过fiddler原封不动的发送到服务器,服务器给出响应后,再传给客户端的操作。中间的fiddler就相当于漏斗,什么都没存就漏过去了,但是漏过去的同时留下了痕迹,我们又截取到了数据。fiddler就相当于一个中间件。
Fiddler
在fiddler中添加Server IP,为了确定自己使用的是什么IP地址,确定自己的IP是否正确,因为每个项目中的IP是不一致的
在fiddlerScript中搜索static function Main(),在这个里边增加下边这句代码然后保存就可以
FiddlerObject.UI.lvSessions.AddBoundColumn(“ServerIP”,120,“X-HostIP”);

Fiddler该怎么用?

一种是web端,一种是移动端

天哪 太多了!!!

有很多的浏览器,怎么抓到想要的浏览器的内容
长按Any Process,光标移动到你想要测的浏览器
Fiddler

过滤,选择我想要的内容
打开fiddler会显示所有的包,很乱,我们直接选择想要测的项目就行
Fiddler

让接口变颜色
长按Ctrl选中多条接口,Ctrl+1,2,3,4,5,五个快捷键分别对应不同的颜色

弱网测试(模拟网络条件不好时进行测试)
FiddlerScript中搜索m_SimulateModem,把Boolean类型的fault改为true,再往下走第二个m_SimulateModem,有请求的延迟时间和响应的延迟时间,可以进行更改,更改完需要进行保存。看如果延迟时间长的话,是否影响用户体验,需要进行多线程同时运行

修改host
只有当项目特别多的时候才会用到
Tools——HOSTS

转其他人的笔记

第一节:Fiddler功能讲解及使用范围
1.1:Fiddler工具介绍
1.1-1Fiddler工具简介
Fiddler是比较好用的Web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试等。现在抓包工具成为测试人员的必备使用工具,开发人员也在普遍使用,进行问题的定位分析,是非常有助于工作的一款工具。已更新至5.0版本,Fiddler官网下载地址:https://www.telerik.com/fiddler。

1.1-2为什么抓包 学习接口,必须要学http协议,了解什么是协议、协议的报文、状态码等等!我们可以通过抓包工具Fidder进入接口的大门。
在程序运行的数据交互中,传输的数据一般都是以数据包的形式传输。在这个发送和接收的过程中,可能发出的数据包中有错误的数据,也可能接收的包中有错误的数据,从而导致后期的程序处理出错。因此我们直接抓取传输中的数据包,通过其他工具或方法解析数据包中的原始数据,就可以定位是否是因为数据出错而导致程序出错,如果出错又是哪一部分的数据出错等。
做接口测试时,开发提供的接口文档不完整或为提供接口文档时,需要用到抓包。(前提:需要依赖界面) 功能测试方面, Web
表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,预防 CRSF
攻击,防网络爬虫,以及一些其他用途。这些隐藏字段在界面上都看不到,如果想检测这些字段,就必须要使用抓包工具。
安全测试方面,我们需要检查敏感数据在传输过程中是否加密,也需要借助抓包工具才能检查;模拟黑客篡改数据,检验网站是否安全。

抓包工具可以做什么?
1.抓包(Web端和APP端数据包)
2.做接口文档(前提是需要有前端页面)
3.弱网测试(针对APP端)
4.安全测试(模拟数据篡改)
5.做接口测试
6.做并发测试(指标单一,不专业)
7.定位Bug(主要针对前端/后端)

1.1-3Fiddler原理讲解 以代理的方式来抓取客户端与服务器请求和响应的数据。 Fiddler是一个C#实现的浏览器抓包和调试工具,Fiddler启用后作为一个proxy存在于浏览器和服务器之间,从中监测浏览器与服务器之间的http/https级别的网络交互。目前可以支持各种主要浏览器IE,
Chrome, FireFox, Safari, Opera。
Fiddler未参与时,一个普通的客户端与服务端的请求流程图:浏览器访问一个网站:17lebo.com,浏览器给Webserver发送一个Request,Webserver接收到Request后进行处理,返回给浏览器Response,然后浏览器解析Response中的HTML,展现网页给用户。如下图:

Fiddler参与前,如果是Firefox浏览器,需要进行单独设置,因为Firefox代理是独立的,需要手动配置,如下图。IE/Chrome浏览器会自动设置局域网代理,无需配置。
Fiddler
Fiddler启动后,会监听本地127.0.0.1的8888端口(默认端口)。Fiddler在Client与Webserver之间以代理服务器的形式存在。浏览器访问17lebo.com的流程:浏览器给Webserver发送一个Request,代理服务器Fiddler接收到Request,Fiddler将Request发送到Webserver,Webserver接收到Request后进行处理,Response到代理服务器Fiddler,Fiddler将Response返回到浏览器,如图:
Fiddler

1.1-4Fiddler功能讲解 界面功能介绍:
Fiddler

工具栏功能介绍:
Fiddler
设置断点调试功能:设置断点类似于程序的Debug功能,Fiddler的断点设置在Fiddler界面左下侧区域,如下:
Fiddler

第二节:Fiddler实战抓取Web/App包
2.1 Fiddler抓取Web端包和断点设置
2.1-1Fiddler抓取Web端包前验证
在第一节中已经完成了Web端抓包前的相关配置。在抓包时,我们需要进行两项检查验证以确保成功抓包:
检查网络连接状态:在Fiddler右侧上方可以看到自己本机无线网卡的IP,如果没有,需要重启Fiddler,或者在cmd中ipconfig找到自己的网卡IP。
Fiddler
检查抓包功能是否开启:
Fiddler
Fiddler抓取Web端HTTPS请求配置:由于Fiddler安装后默认只能抓取HTTP请求,如果需要抓取HTTPS请求需要进行配置。配置方式如下:Tools—>Options—>HTTPS,点击OK,如果弹出证书直接确认即可。
Fiddler

2.1-2Fiddler Web端抓包操作
相关配置都完成之后,就可以进行抓包,如下:打开了谷歌浏览器,在地址栏输入乐搏官网(也可以通过百度搜索乐搏官网打开),点击回车,页面加载的同时在Fiddler端会立刻捕获到HTTP请求信息且请求状态码为200,表示请求成功。
Fiddler
Fiddler

2.1-3Fiddler Web端抓包数据结果分析
抓包过程比较简单,但抓到的包数据如何分析也是重点,在Fiddler抓包列表信息中的最左侧有各种图标显示,不同的图标含义也不同,以下是具体类型和释义:
Fiddler
Fiddler
Fiddler

2.1-4使用Fiddler 做简单的接口并发操作
在针对某一个/某一些接口,发送相同的请求,不考虑参数的变化时,可以使用fiddler进行简单的性能测试。选中请求–右键—Replay:
Fiddler
Reissue Requests:重发选中的请求(快捷键:r)
Reissue Unconditinally:无条件重发选中的请求(快捷键:u)
Reissue and eidt:重发并编辑,会打开一个加了断点的请求,可以进行请求和响应数据的修改(快捷键:e)
Reissue and verify:重发并验证,重新发送请求,并验证其请求结果,会自动加标识(背景颜色)(快捷键:v)
Reissue Sequentially:重发序列,打开一个数量设置界面,标识需要重发多少次请求(快捷键:s)
Reissue from Composer:重发并打开composer界面,可以编辑或发送
Revisit in IE:在IE上发起这个请求
如何做简单的并发操作,具体操作如下:
第一步:选中需要并发的请求会话:
Fiddler
第二步:设置并发数,点击确定即可。
Fiddler

2.2 Fiddler抓取APP端包
实际工作中,移动端项目大部分会在真机上进行测试。下面是针对手机端访问http/https请求在电脑端抓取到对应手机端发出的请求。IOS设备及Android设备设置方式基本类似。以下是以Android系统设置为例。

2.2-1移动端抓包如何访问网络
想要Fiddler抓取移动端设备的数据包,其实很简单,先来说说移动设备怎么去访问网络,看了下面这张图,就明白了。
Fiddler
由上图可知,移动端的数据包,都是要走wifi出去,所以我们可以把自己的电脑开启热点,将手机连上电脑,Fiddler开启代理后,让这些数据通过Fiddler,Fiddler就可以抓到这些包,然后发给路由器,如下图:
Fiddler

2.2-2Fiddler抓取APP端包网络设置
第一步:Fiddler配置移动端证书前需配置Connetions的参数值,配置路径是Tools—>Options—>Connections,如下:
Fiddler
第二步:在PC端设置热点用于手机端的连接(或者是连接的同一网络)
Fiddler
第三步:在手机端连接PC端设置的热点
Fiddler
第四步:在手机端浏览器中输入IP:端口,下载安装证书配置
Fiddler
第五步:验证移动端抓包,在移动端随便打开一个APP,在PC端的Fidller中查看是否能正常抓包,打开淘宝APP的抓包情况如下:
Fiddler

2.3Fiddler其他功能介绍
2.3-1Fiddler自带的解码工具TextWizard
在进行使用Fiddler来对抓起的包时,而使用的这个的抓包的话,所显示的数据包中的内容,是无法直接查看到数据的内容,是需要通过数据的解包之后才能进行观看需要的内容的,在Fiddler中提供了一个Textwizard的用来解码。通过解码可以得到一些密文信息用于接口的测试等。如下:
Fiddler

2.3-2接口测试工具Composer
接口测试工具有不少,比如Postman、SoapUI、Jmeter等,那么平时在测试的时候一般都会抓包,那么有可能开发会说帮忙再重现一下,那么又要重新造数据,太麻烦,此时就可以把这个接口保留下来,在Fiddler中根据实际情况修改下请求数据,点下Execute即可调用。如下:
Fiddler
Get方法的接口测试:①在Composer区域地址栏输入Url地址②选择get请求,点Execute执行,请求就可以发送成功③请求发送成功后,左边会话框会生成一个会话记录,可以查看抓包详情④右侧history区域会多一个历史请求记录。
Fiddler
Post方法的接口测试:
Fiddler

2.3-3Fiddler模拟低速网络环境
第一步:基本设置
Fiddler
第二步:修改参数
Fiddler

2.3-4断点设置,篡改和伪造数据
设置断点,篡改和伪造数据,在测试中使用的也较频繁,比如使用支付宝购买虚拟商品,往支付宝跳转时,篡改了小的金额,结果购买虚拟商品成功了。(原本10元的商品,0.01元就搞定了)。多么可怕的一个bug啊,当然这个问题可能对于一个做过支付有过经验的测试朋友来说,可能会想:哎呀,这个问题都发现不了,还做什么测试?是的,问题是很简单,对于一个刚入职场的测试朋友或者没有支付相关经验的测试朋友来说,很有可能会忽略。前面讲过fiddler作为代理服务器时的请求流程图,请求时,可被篡改的两个点:Before Requests、After Responses。
Fiddler
案例演示:篡改帖子内容:
0. 打开Fiddler,开启抓包
1. 先在BBS写好帖子内容(不点发送)
2. 在fiddler设置断点
3. 在BBS上点击发送帖子按钮
4. 在fiddler修改帖子内容
5. 在fiddler点击run to Coplection, 禁用断点,点击Go放行

2.3-5辅助LR录制接口请求
使用LR进行接口性能测试时,如果不知道如何编写脚本,则可以通过LR录制Fiddler工具的方法来获取接口请求数据, 需要注意的是,Fiddler工具必须是32位的,因为LR暂时只支持32位应用程序的录制。

2.3-6Fiddler抓包数据分析
在Instpectors中主要是对请求和响应进行查看和分享,监听请求的响应内容。他有多个分页标签。界面分上下两部分,上面部分显示请求的相关信息;下面部分显示响应相关信息。
1.请求信息
(1) Headers:显示头信息,上半部分显示请求的头信息;下半部分显示响应的头信息
(2) TextView、SyntaxView、WebForms、HexView、JSON、XML:不同显示方 式,需要根据请求的不同格式进行选择;一个请求不可能同时可以用所有的方式进行显示。
(3) Auth:认证信息
(4) Cookies:Cookies信息
(5)Raw:请求的完整信息,这里可以看到请求的方法、地址、路径、协议版本、头信息和参数等
2.响应信息
(1)Headers:显示响应的头信息,包括协议版本、响应code、响应结果和头信息
(2)TextView、SyntaxView、ImageView、HexView、JSON、XML:不同的显示方式
(3)Auth:认证信息
(4)Caching:缓存信息
(5)Cookies:cookies信息
(6)Raw:响应的完成信息,包括:协议版本、响应code、响应结果、响应的头信息和响应体
3. 如何分析:
可以通过对比接口文档判断请求报错是前端的问题还是后台的问题。如:接口要求参数A必填,客户端未传请求参数,此时未报错,是前端和后端都未做校验导致。后端问题较大。
客户端传了正确的参数,但是响应失败,此时可以判断为服务端问题,进行反馈。

2.3-7Timeline数据分析
时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。 每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴, 用图表的形式展现出来, 就形成了瀑布图。 在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间。
Fiddler
Fiddler
说明:
1、绿色的请求表示这是一个“有条件的请求”。HTTP 协议定义了 5 个条件请求头部,最常见的两个是“If-Modified-Since”和“If-None-Match”。服务器根据这两个头部来验证本地缓存是否过期,如果过期则正常返回资源的最新版本;否则仅返回 304 Not Modified,浏览器继续使用本地缓存。包含条件请求头部的请求用绿色显示,否则用黑色。
2、有阴影线的请求是缓冲模式下的请求,实心的是流模式下的请求。Fiddler 提供了缓冲(Buffering)和流(Streaming)两种抓包模式:缓冲模式下,Fiddler 会在响应完成时才将数据返回给应用程序(通常是浏览器),这种模式下可以控制响应,方便地修改响应内容;流模式下,Fiddler 会实时返回响应数据给浏览器,但没办法控制响应。一般使用流模式,瀑布图会更真实一些。这两种模式可以通过 Fiddler 的工具栏选择。特别的,通过 Fiddler 的“AutoResponder”功能返回的响应,只能是缓冲模式。
3、请求条的不同颜色对应着不同类型的响应,根据响应头的 MIME Type 来归类。如浅绿色表示图片类型的响应;深绿色是 JavaScript;紫色是 CSS;其它都是蓝色。
4、请求中的黑色竖线,表示的是浏览器收到服务端响应的第一个字节这一时刻。这个时间受 DNS 解析、建立连接、发送请求、等待服务端响应等步骤的影响。
5、请求条后面的图标表示响应的某些特征。如软盘图标表示这个响应正文从本地获得,也就是说服务端返回了 304;闪电表示这是 Fiddler 的“AutoResponder”的响应;向下的箭头表示响应是 302,需要重定向;红色感叹号说明这个请求有错误发生(状态码是 4XX 或 5XX)。
特别的,如果请求条后面有一个红色的X,说明服务端响应完这个请求之后,断开了连接。出现这种情况一般有两种可能:HTTP/1.0 的响应中没有 Connection: Keep-Alive;或者是 HTTP/1.1 的响应中包含了 Connection: close。使用持久连接可以省去建立连接的开销,也可以减小 TCP 慢启动和其它拥塞控制机制带来的影响,总之是好处多多。
6、请求前面的红色圆圈表示这个连接是新建的,绿色表示是复用的。上面的圆圈表示的是浏览器到 Fiddler 的连接,下面的圆圈是 Fiddler 到服务端的连接。

上一篇:配置Fiddler抓包手机发送的请求数据


下一篇:linux网卡eth0配置桥接正常重启后网卡无法启动