fiddler基础 | 常用操作总结

fiddler基础 | 常用操作总结

Cosmos 571 2022-06-13

一、http协议

1、fiddler抓包工具的使用

1.1 fiddler抓包的原理

fiddler一启动就会自动作为系统的代理,这时电脑上所有的请求和响应都需要经过fiddler工具,所以就被fiddler抓包了。fiddler的默认监听端口为8888。
image-1655091179158
查询windows的代理配置:http=127.0.0.1:8888;https=127.0.0.1:8888
image-1655091184247
代理分为正向代理与反向代理:简单理解,正向代理的场景中客户端和代理处在一个网络中,反向代理的场景中服务器和代理处在一个网络。

1.2 设置过滤主机:

image-1655091190137

2、HTTP协议介绍:

HTTP定义

1.HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
2.HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端
3.http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议

请求报文

1.HTTP请求报文主要由请求行、请求头部、空一行、请求正文4部分组成(如果没有空一行,就算3部分组成)
image-1655091483376
如下图,post请求,内容:
image-1655091485727

响应报文

1.HTTP响应报文主要由状态行、消息报头、空一行、响应正文4部分组成
完整的HTTP内容:
1.请求内容
2.响应的内容
具体介绍一下:
1.请求行有三个主要参数:请求方法、url、协议版本。
2.请求方法包含:

请求方法

HTTP协议中共定义了9种请求方法,来指明客户端对服务端资源的不同操作方式,分别是:
GET:用于从服务器获取资源,get请求中如果要传参,参数是拼接到url后面发送给服务器,格式是:url?key1=value1&key2=value2&key3=value3…;获取资源的场景:查询、下载图片等;
POST:用于向服务器提交资源,post请求中如果要传参,参数是放到请求正文中发送给服务器的,格式是:key1=value1&key2=value2&key3=value3…;提交资源的场景:登录、注册、添加、修改等;
HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报文头部;
PUT:从客户端向服务器传送的数据取代指定的文档的内容;
PATCH:是对PUT方法的补充,用来对已知资源进行局部更新。
DELETE:请求服务器删除指定的页面;
CONNECT:HTTP/1.1协议中的预留方法;
OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送请求来测试服务器的功能;
TRACE:回显服务器收到的请求,主要用于测试或诊断;

3、URL格式

URL的格式:协议://主机:端口/路径
协议:常见的有http、https、ftp
主机:可以是ip地址或者域名
端口:如果没有写,那就采用协议的默认端口,比如http是80,https是443,ftp是21
路径:表示请求的资源
举例:https://www.baidu.com/s
协议:https
主机:www.baidu.com
端口:443
路径:/s

4、HTTP状态码

常见的HTTP状态码:
200 -请求成功
301 -资源重定向:资源被永久性转移到其它URL
302 -资源重定向:资源被临时性转移到其它URL
404 -请求的资源不存在
500 -内部服务器错误
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,HTTP状态码共分为5种类型:
image-1655091200700

5、常用断点

一、断点:

1.为什么要打断点呢?
比如一个购买的金额输入框,输入框前端做了限制100-1000,那么我们测试的时候,需要测试小于100的情况下。很显然前端只能输入大于100的。这是我们可以先抓到接口,修改请求参数,绕过前端,传一个小于100的数,检查服务端的功能是否OK;
也就是说接口测试其实是不需要管前端的,主要测后端的功能。
2.Fiddler可以修改以下请求
Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等
可以修改请求数据,突破表单限制,提交任意数字,如充值最大100,可以修改成10000
拦截响应数据,修改响应体,如修改服务端返回的页面数据

二、断点的两种方式

1.before response:这个是打在request请求的时候,未到达服务器之前
image-1655091383066

2.after response:也就是服务器响应之后,在Fiddler将响应传回给客户端之前。
image-1655091385957

三、全局断点

1.全局断点就是中断fiddler捕获的所有请求,先设置下,点击rules-> automatic breakpoint  ->before requests
image-1655091392711

2.选中before requests选项后,打开博客园首页:http://www.cnblogs.com/surewing/看到如下T的标识,说明断点成功
image-1655091398005

3.打完断点后,会发现所有的请求都无法发出去了,这时候,点下Go按钮,就能走下一步了
4.找到需要修改的请求后,选中该条会话,右侧打开WebFroms,这时候里面的参数都是可以修改的了
image-1655091402797

5.修改之后点Run to Completion就能提交了,于是就成功修改了请求参数了
6.打全局断点的话,是无法正常上网的,需要清除断点:rules-> automatic breakpoint  ->disabled

四、单个断点

已经知道了某个接口的请求地址,这时候只需要针对这一条请求打断点调试,在命令行中输入指令就可以了
请求前断点(before response): bpu
论坛登录接口:https://passport.cnblogs.com/user/signin
命令行输入:bpu https://passport.cnblogs.com/user/signin 回车
image-1655091410415

3.请求登录接口的时候,就会只拦截登录这个接口了,此时可以修改任意请求参数
4.取消断点,在命令行输入: bpu 回车就可以了
响应后断点(after  requests): bpafter
论坛登录接口:https://passport.cnblogs.com/user/signin
在命令行输入:bpafter https://passport.cnblogs.com/user/signin  回车
3.登录博客园,会发现已经拦截到登录后服务器返回的数据了,此时可以修改任意返回数据
4.取消断点,在命令行输入: bpafter 回车就可以了
命令行其它相关指令
Bpafter, Bps, bpv, bpm, bpu
Bpafter xxx: 中断  URL  包含指定字符的全部  session  响应
Bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应
Bpv xxx: 中断指定请求方式的全部  session  响应
Bpm xxx: 中断指定请求方式的全部  session  响应 、、同于 bpv xxx
Bpu xxx:与bpafter类似

6、会话保存

为什么要保存会话呢?举个很简单的场景,你在上海测试某个功能接口的时候,发现了一个BUG,而开发这个接口的开发人员是w外地的开发,如果我们截图,就不是很方便。如果我们保留会话就会很方便的;

一、保存文本

1.以博客园登录为例,抓到登录的请求会话
2.点左上角File>Save>SelectedSessions>asText,保存到电脑上就是文本格式的
image-1655091429506
3.文本格式的可以直接打开,结果如下图
image-1655091433662

二、几种保存方式

1.save-All Sessions :保存所有的会话,saz文件
2.save-Selected Session:保存选中的会话
in ArchiveZIP :保存为saz文件
as Text :以txt文件形式保存整个会话包括Request和Response
as Text (Headers only) :仅保存头部
3.Request:保存请求
ntir Request:保存整个请求信息(headers和body)
Request Body:只保存请求body部分
4.Response:保存返回
Entir Response:保存整个返回信息(headers和body)
Response Body:只保存返回body部分
and Open as Local File:保存Response信息,并打开文件
在保存文件的过程中如果遇到了,乱码的问题,就要重新解码并且重新保存就好了:
image-1655091440348
如何打开保存的会话呢?
比如我们刚刚保存了所有的会话,all.saz文件,这时候我们打开fiddler,然后直接把保存的这个.saz文件直接拖入到会话界面就好了;
image-1655091446078
也可以如下图,直接导入:
image-1655091449983
如何对于导入的文件重新请求呢?
1.导入请求后,可以选中某个请求,点击Repaly按钮,重新发请求
2.也可以ctrl+all全部选中后,点Repaly按钮,一次性批量请求

7、自定义会话框

在使用fiddler抓包的时候,查看请求类型get和post每次只有点开该请求,在Inspectors才能查看get和post请求,不太方便。于是可以在会话框直接添加请求方式。

一、添加会话框菜单

1.点会话框菜单(箭头位置),右键弹出选项菜单
image-1655091455462
2.选择Customizecolumns选项,Collection选项选择Miscellaneous
image-1655091458933
3.Field Name选择:RequestMethod
image-1655091461527
4.点Add按钮即可添加成功
image-1655091466093

二、隐藏会话菜单

1.选择需要隐藏的菜单,右键。选择Hide this column
image-1655091470829
2.隐藏后也可以让隐藏的菜单显示出来:Ensure all columns are visble
image-1655091473431

三、调整会话框菜单顺序

1.如果需要调整会话框菜单顺序,如:Content-Type菜单按住后往前移动,就能调整了
image-1655091477734

四、会话排序

1.点击会话框上的菜单,就能对会话列表排序了,如点body菜单
2.点完后上面有个上箭头(正序),或者下箭头(倒叙)。但是不能取消,取消的话关掉fiddler后重新打开就行了