Fidder抓包是作为测试必须掌握的一项技能。
这篇详细介绍(保姆级)Fiddler在测试中常用的功能。
全文较长(6000字),建议先收藏,需要时再食用。
一、界面简介
先看一下完整的Fiddler界面布局
Fiddler界面主要包含四部分:菜单栏、工具栏、会话列表、会话详情
1.菜单栏
- File:用于打开新的Fiddler会话、导入/导出session、保存会话等
- Edit:用于复制/粘贴session、host、url、header;删除session;查找session(find sessions)等
- Rules:根据规则对会话进行过滤,比如‘Hide Image Request’隐藏图像请求,也可以自定义规则
- Tools:工具,可以在options中设置Fiddler端口号,设置获取https请求等,也可以清除缓存、cookie等。
- View:用于设置是否显示菜单栏、界面布局等
2.工具栏
在菜单栏View中可以设置是否显示工具栏。
工具栏主要是一些常用的操作按钮。
通过stream可以切换两种模式
- 缓存模式:Fiddler直到响应完成时才将数据返回给应用程序。在测试中可以用来控制响应、修改响应数据。
- 流模式:Fiddler即时将响应数据返回给应用程序,更接近真实环境。例如测试性能时需要选择此模式。
3.会话列表面板
界面左侧的部分,主要包括
Result:http的响应状态
Protocol:协议类型
Host:请求地址的域名
Url:请求的服务器路径
Body:请求的大小,单位byte
Content-Type:请求响应的类型
Process:请求发出者及进程ID
Comments:可以给会话添加备注
4.会话详情面板
会话详情面板分为两部分
1.上方为request请求的详细信息,查看方式常用headers(头部信息)、webforms(表单格式)、cookies、raw(完整信息,最常用)、json(json格式)
2.下方为response响应信息,查看方式与上方的请求框类似。
需要注意的一点:当响应信息里出现乱码时,直接点击下图黄色条即可解码。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】
5.命令行
窗口左下角还有一个不起眼的黑色框,这块命令行模式,可以输入指令。比如输入cls进行清屏。
二、Filters功能详解
Filters的功能是通过设置过滤规则,实现在会话中仅显示我们想要的请求。
过滤规则包含一下几种
过滤规则 | 说明 |
---|
1.Hosts(常用)
1)No Zone Filter:不对内网和外网进行过滤 show only Intranet Hosts: 内网 show only internet Hosts:外网
2)No Host Filter :不对主机名进行过滤 Hide the following Hosts:隐藏下边输入的主机名的会话 show only the following Hosts:标记以下主机的会话
例如:
- 如果要过滤本机,127.0.0.1 和 localhost都需要写
- 百度有很多二级域名,前边可以写*
2.Clients Process
- Show only traffic from
指定只显示某个 Windows 进程中的请求,右侧会列出当前所有的 Windows 进程。
- Show only Internet Explorer traffic
只显示 IE 发出的请求。 - Hide trafficfrom service host
隐藏来自service host的请求。
3.Request Headers(常用)
- show only if URL contains
仅显示URL中包含指定字符串的请求(字符串可以是URL中的一部分,多个字符串用空格分开(多个表示 或,即只要URL包含任一字符串,都会显示), 可以是正则或完整的URL) - Hide if URL contains
仅隐藏URL中包含指定字符串的请求(字符串可以是URL中的一部分,多个用空格分开, 可以是正则或完整的URL) - Flag requests with headers
标记带有特定header的请求(即加粗)。例如,我想突出显示header信息中带有token字段的URL请求,即可以勾选上这项,并在后面输入:token - Delete request headers
删除请求中的Header字段。在进行测试时非常有用,比如去掉URL中的token信息,判断服务器是否有做token校验 - Set request Header
在URL请求中添加头字段,与上一条对应。前面输入字段,后面输入值
4.Breakpoints
- Break request on Post
针对Post请求设置断点。 - Break request on GET with query string
针对Get请求设置断点。 - Break on XMLHttpRequest
针对Ajax请求设置断点。 - Break response on Content-type
针对响应报文中header字段 - Content-Type
匹配成功的请求设置断点。
5.Response Status Code
- Hide success(2xx)
隐藏响应状态码为2xx的URL请求,如响应状态码为200的URL请求将隐藏掉。 - Hide non-2xx
隐藏响应状态码不是2xx的URL请求。 - Hide Authentication demands(401,407)
隐藏认证(响应状态码为:401 407)的URL 请求。 - Hide redirects(300, 301, 302, 303,307)
隐藏重定向(响应状态码为:300 301 302 303 307)的URL请求。 - Hide Not Modifield(304)
隐藏不是缓存的状态码(304)的URL请求
6.Response Type and Size
- Show all Content-Type
显示所有类型Content-Type的请求,Content-Type即为响应结果header信息中Content-Type字段。 - Show only IMAGE/*
仅显示响应类型为图片的请求。(即响应header中Content-Type=IMAGE/*的请求,*为通配符) - Show only HTML
仅显示响应类型为HTML的请求。 - Show only TEXT/CSS
仅显示响应类型为TEXT/CSS的请求。 - Show only SCRIPTS
仅显示响应类型为SCRIPTS的请求。 - Show only XML
仅显示响应类型为XML的请求。 - Show only JSON
仅显示响应类型为JSON的请求。 - Hide IMAGE/*
隐藏所有响应类型为图片的请求。 - Hide smaller than
隐藏小于指定大小响应结果的请求。(大小可以在 Inpsectors 中响应结果部分的 Transformer 中查看) - Hide larger than
隐藏大于指定大小响应结果的请求。 - Block script files
阻止返回正常JS文件。 - Block image files
阻止返回正常图片文件。 - Block SWF files
阻止返回正常SWF文件。 - Block CSS files
阻止返回正常CSS文件。
7.Response Header
- Flag responses that set cookies
响应中有cookies信息的加上标识(斜体)。 - Flag responses with headers
标记响应中带有特定header的请求(即加粗)。 - Delete response headers
删除响应信息中指定的Header字段。 - Set response header
在响应中添加header字段。如添加Transfer-Encoding: chunked,前面填写Transfer-Encoding,后面填写chunked。
三、Inspectors检查器功能详解
Inspectors 主要是查看请求报文、响应报文,是Fiddler最主要的功能。Inspectors 界面上半部分为请求报文和下半部分为响应报文
1.请求报文
Request Headers 可以分层级分类显示请求头的信息,包含请求的Cache、Client、Cookies、Entity、Miscellaneous、Security、Transport等相关信息,但并不是所有请求都包含以上全部信息。
此外,Inspectors 根据请求的不同,可以选择多种格式化的形式展示请求报文的部分或全部信息,但是一个请求不可能有所有的展现形式。
TextView | 以文本格式展示 |
---|
2.响应报文
结构与请求报文相似,以多种格式化的形式展示请求报文的部分或全部信息。
3.应用场景
- 发送某个接口请求,返回的内容不是预期的结果时,抓包分析请求、响应报文
- 点击某个按钮没反应时,抓包分析请求、响应报文
- (测试常用)当没有接口文档时,可通过web端点击,抓包分析请求、响应报文,查看请求参数和响应内容
- 接口测试时,当构造的请求返回总是报错时,可以通过对比请求报文与接口文档中的信息,查找问题。
四、AutoResponder功能详解
Fiddler 的 AutoResponder 可以实现自动重定向,主要是通过事先添加好的 Rule,进行规则匹配。只要匹配,就会拦截请求,然后篡改原始响应内容到本地或者指定响应,从而实现自动重定向。
1.设置规则
1.1手动设置规则
比如我们把百度首页的响应结果改为一个测试的html文件
1.先写一个test.html
2.在AutoResponder中点击‘Add Rule’,输入匹配的内容(https://www.baidu.com)和修改后的响应内容(test.html)
步骤如下:
找到我们刚写的test.html,点击save保存
3.在浏览器在打开百度,看看效果
1.2引用会话设置规则
这个很简单,就是从左侧列表把某个会话拖到右侧AutoResponder窗口中来,然后修改我们想要的响应结果,最后点击save保存即可
可以勾选后边的‘Match only once’,代表该规则只匹配一次。
2.匹配规则
AutoResponder 匹配规则有四种:字符串匹配、NOT 匹配、EXACT 匹配、REGEX 匹配。
2.1字符串匹配
直接输入字符串,进行模糊匹配,匹配包含该字符串的请求。
打开百度查看
2.2NOT 匹配
对应字符串匹配,发现不匹配包含该字符串的请求
2.3EXACT 匹配
精准匹配,常用。
比如,我们精准匹配百度首页,如果匹配,请求前自动断点。
然后我们在浏览器访问百度,然后回来查看fiddler,断点成功
2.4REGEX 匹配
使用正则表达式匹配,测试中不常用,不作详解。
3.测试中的应用场景
- 1.在测试接口时,可以自定义返回内容,通过自定义的返回内容,进而测试程序接收到不同返回后,不同的处理逻辑
- 2.可以利用此功能在线上环境提前验证正在开发的功能。比如前端要换一个图片,我们可以直接在线上环境把之前的请求指向本地图片,进行页面布局、适配等验证。
举个例子:百度要换主页的logo了,我们可以自己改一下对应图片,先测起来。
然后再打开百度看一下
ok,改成功了,可以先测起来了,很明显,我这图片横向被压缩了,提bug。
五、Composer功能详解
Composer的功能是用来创建并发送http request请求的。
方式有两种,一种是Parsed方式,一种是Raw方式。
两种方式实现的功能是一样的,只是Parsed方式是以图形界面的方式构造请求,Raw方式是以HTTP请
求报文的格式构造请求的。
构建请求的方式也有两种:
1.手写
2.直接从左侧的会话列表拉过来,然后进行修改
1.Parsed方式
Parsed方式的功能和postman类似,但是没有postman好用,界面如下
请求构建好了,点击Execute发送即可。
2.Raw方式
请求构建好了,点击Execute发送即可。
3.应用场景
3.1常规接口测试
使用Composer发送request请求,其实就是当做postman来用,优点就是可以直接从左侧会话列表拉请求过来。
3.2篡改请求数据
抓取到请求后,拖拽到Composer窗口,根据测试需要修改请求报文,进行异常数据测试。
也可以用于调试接口。
六、断点功能详解
断点功能是Fiddler一个强大且常用的功能。
设置断点有两种方式:
1.通过菜单栏断点(全局断点)
2.命令行断点(局部断点)
1.通过菜单栏断点
通过菜单栏设定的断点会对之后的所有HTTP请求有效,即全局断点。
路径:Rules--Automatic Breakpoints
- Before Requests
Fiddler收到请求,发送给服务器之前,对请求进行拦截,这时候可以修改请求的数据。 - After Responses
Fiddler收到服务器响应,返回给客户端之前,对响应数据进行拦截,这时候可以修改响应的数据。
我们选择Before Requests后打开百度试一下:
显示如图界面就代表断点成功了,这时候可以修改请求,然后按绿色位置‘run to completion’继续。
2.通过命令行断点
可以通过在命令行输入指令,实现对特定类型的请求进行断点,即局部断点。
常用的断点命令:
需求 | 命令 |
---|
命令行输入对应请求后,按回车生效。
3.应用场景
测试中,设置断点可篡改请求和返回的数据包。根据测试的不同场景,有时需要在测试过程中更改请求、或者更改响应内容,从而达到最终的测试目标。
ok,这些就是测试在Fiddler中常用到的功能。我也是在学习阶段,目前只接触到这些模块,之后用到其他模块再写,争取把Fidder摸透。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】