Fiddler


一、Fiddler安装及原理

1、Fiddler安装

Fiddler官方网站:https://www.telerik.com/download/fiddler

在这里插入图片描述

(1)、选择怎么用Fiddler、你的邮箱、那个国家,勾选协议,点击Download for Windows按钮开始下载

在这里插入图片描述

(2)、下载成功后,找到FiddlerSetup.exe可执行程序,并双击

在这里插入图片描述

(3)、点击I Agree按钮

在这里插入图片描述

(4)、选择安装路径,点击Install按钮

在这里插入图片描述

(5)、安装完成后,点击Close按钮

在这里插入图片描述

(6)、在安装目录下,找到Fiddler.exe,双击即可打开Fiddler

在这里插入图片描述

2、Fiddler抓包原理

Fiddler是在客户端和服务端之间建立的HTTP代理服务器,能够监听客户端发出的请求和服务端返回的响应结果

差一张图

图解:

  • 在客户端和服务器之间,建立一个HTTP代理服务器

  • 当启动的时候,Fiddler会默认把自己设置为系统代理,来监听客户端的HTTP/HTTPS请求

  • 默认代理地址为:127.0.0.1默认端口为:8888

  • 浏览器访问WEB网站的时候,请求报文会先发送到Fiddler

  • Fiddler再把请求报文转发给服务器

  • Web服务器返回的响应报文,会先达到Fiddler

  • Fiddler再把响应报文返回给浏览器

系统代理

Fiddler启动后,会把自己设置为系统代理(以win 7为例)

启动Fiddler后,打开控制面板–>网络和Internet–>Internet选项–>连接–>局域网设置,可以看到<代理服务器>是勾选的转态,点击<高级>按钮可以看见Fiddler的代理地址127.0.0.1和默认端口8888

在这里插入图片描述

我们还可以看下Fiddler的操作页面。依次点击Fiddler菜单栏Tools–>Options–>Connections,可以看到Fiddler的默认端口是8888

在这里插入图片描述

3、Https协议导入证书

默认情况下,Fiddler只能抓取http协议的包,想要抓取https的包就需要安装证书

(1)、点击Tools–>Options–>HTTPS

在这里插入图片描述

(2)、勾选全部选项

在这里插入图片描述

(3)、点击Actions–>Reset All Certificates重置全部证书

在这里插入图片描述

注:一直点<确定><是><Yes>按钮即可

(4)、点击Actions–>Trust Root Certificates–>Yes信任证书

在这里插入图片描述

(5)、点击Actions–>Export Root Certificates to Desktop导出证书到桌面

在这里插入图片描述

在这里插入图片描述

(6)、桌面选择证书右键–>安装证书–>下一步–>下一步–>完成,弹出导入成功代表证书安装成功

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(7)、选择浏览器,点击设置–>高级–>系统–>内容–>证书–>导入,选择桌面的证书,一直点下一步,弹出导入成功代表浏览器证书安装成功

在这里插入图片描述

二、Fiddler菜单栏和工具栏

1、菜单栏的含义

在这里插入图片描述

File菜单

(1)、Capture Traffic:可以控制是否把Fiddler注册为系统代理

(2)、New Viewer:打开一个新的Fiddler窗口

(3)、Load Archive:用于重新加载之前捕获的以SAZ文件格式保存的数据包

(4)、Save:支持以多种方式把数据包保存到文件中

(5)、Import Sessions…:支持导入从其他工具捕获的数据包,也支持导入以其他格式存储的数据包

(6)、Export Sessions…:把Fiddler捕捉到的会话以多种文件格式保存

(7)、Exit:取消把Fiddler注册为系统代理,并关闭Fiddler

Edit菜单

(1)、Copy:复制会话

(2)、Remove:删除会话

(3)、Select All:选择所有会话

(4)、Undelete:撤销删除会话

(5)、Paste as Session:把剪切板上的内容粘贴成一个或多个模拟的会话

(6)、Mark:选择一种颜色标记选中会话

(7)、Unlock for Editing:解锁会话

(8)、Find Session…:打开Find Session窗口,搜索捕获到的数据包

Rules菜单

(1)、Hide Image Request:隐藏图片会话

(2)、Hide CONNECTS:隐藏连接通道会话(Tunnel to)

(3)、Automatic Breakpoints:自动在[请求前]或[响应后]设置断点。Ignore Image触发器控制这些断点是否作用于图片请求

(4)、Customize Rules…:打开Fiddler脚本编辑窗口

(5)、Require Proxy Authentication:要求客户端安装证书。该规则可以用于测试HTTP客户端,确保所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应码

(6)、Apply GZIP Encoding:只要请求包含具有GZIP标识的Accept-Encoding请求头,就会对所有响应使用GZIP HTTP进行压缩(图片请求除外)

(7)、Remove All Encoding:删除所有请求和响应的HTTP内容编码和传输编码

(8)、Hide 304s:隐藏响应为HTTP/304 Not Modified状态的所有会话

(9)、Request Japanese Content:选项会把所有请求的Accept-Encoding请求头设置或替换为ja标识,表示客户端希望响应以日语形式发送

(10)、User-Agents:把所有请求的User-Agent请求头设置或替换成指定值

(11)、Performance:模拟弱网测试速度

Tools菜单

(1)、Options…:打开Fiddler选项窗口

(2)、WinINET Options…:打开IE的Internet属性窗口

(3)、Clear WinINET Cache:清空IE和其他应用中所有使用的WinINET缓存中的所有文件

(4)、Clear WinINET Cookies:清空IE和其他应用中所发送的WinINET Cookie

(5)、TextWizard…:选项会启动TextWizard窗口,对文本进行编码和解码

(6)、Compare Session:比较会话

(7)、Reset Script:重置Fiddler脚本

(8)、Sandbox:打开http://webdbg.com/sandbox/

(9)、View IE Cache:打开IE缓存窗口

View菜单

(1)、Show Toolbar:控制Fiddler工具栏是否可见

(2)、Default Layout、Stacked Layout、Wide Layout:三种界面布局

(3)、Minimize to Tray:最小化Fiddler到系统托盘(快捷键:)

(4)、Squish Session List:控制会话列表是否水平收缩

(5)、AutoScroll Session List:添加新的会话时,自动滚动到会话列表底部

2、工具栏的用法

在这里插入图片描述

(1)、备注功能

(2)、Replay:重新发送请求,快捷键R键

(3)、删除请求

(4)、Go:当有请求前断点时,点击去发送请求

(5)、Stream:流模式(默认是缓冲模式)

(6)、Decode:解码

(7)、Keep: All sessions:保持会话的数量

(8)、Any Process:选择你想要抓包或者监听的程序

(9)、Find:查找

(10)、Save:保存所有会话,文件名以.saz为扩展名

(11)、截图

(12)、计时器s

(13)、Browse:快捷的打开IE浏览器

(14)、Clear Cache:清除缓冲

会话面板介绍

项目Value
在这里插入图片描述请求正发生到服务器
在这里插入图片描述响应正从服务器读取
在这里插入图片描述请求在断点处暂停
在这里插入图片描述响应在断点处暂停
在这里插入图片描述请求使用http head方法;响应应该没有body
在这里插入图片描述请求使用http post方法
在这里插入图片描述请求使用http connect方法;这建立了一个用于https流量的隧道
在这里插入图片描述响应是html
在这里插入图片描述响应是一张图片
在这里插入图片描述响应是一个脚本
在这里插入图片描述响应是叠加样式表
在这里插入图片描述响应是xml
在这里插入图片描述响应是json
在这里插入图片描述响应是一个音频文件
在这里插入图片描述响应是一个视频文件
在这里插入图片描述响应是一个silverlight小程序
在这里插入图片描述响应是一个flash小程序
在这里插入图片描述响应是一个字体
在这里插入图片描述通用的成功的响应
在这里插入图片描述响应是http/300、301、302、303或者307重定向
在这里插入图片描述响应是http/304:使用缓冲版本
在这里插入图片描述响应是对客户端凭据的请求
在这里插入图片描述响应是一个服务器错误
在这里插入图片描述会话被客户端、fiddler或服务器终止
在这里插入图片描述响应的Content-Type值为:text/html

三、Fiddler过滤与Inspector

1、Fiddler过滤规则

可通过设置Filters过滤规则,实现在会话中仅展示过滤后的请求。比如可以在会话列表中仅展示某个特定网站的HTTP请求,也可以通过过滤响应码设置仅显示过滤后的响应码。具体的过滤规则根据实际的使用场景进行配置。以下为过滤规则说明:

过滤规则说明
Hosts对主机进行过滤,仅展示内网、仅展示外网、仅展示特定网址等
Client Process对客户端进程进行过滤,仅展示特定进程流量等
Request Headers对请求头进行过滤,仅展示特定URL来源、标记请求头包含特定内容等
Breakpoints对断点进行过滤,对特定请求方法、请求内容进行断点等
Response Status Code对响应状态码进行过滤,仅展示过滤后的响应状态码
Response Type and Size对响应内容类型及大小进行过滤,仅展示特定响应内容类型及大小、阻塞响应内容特定类型文件等
Response Headers对响应头进行过滤,标记响应头包含特定内容、cookies、伪造响应头等

Hosts

在这里插入图片描述

在这里插入图片描述

Client Process过滤

(1)、Show only traffic from:可以指定只捕捉哪个Windows进程中的请求

在这里插入图片描述

(2)、Show only Internet Explorer traffic:只显示IE发出的请求

(3)、Hide Windows RSS platform traffic:隐藏Windows RSS平台发出的请求

Request Headers过滤

(1)、Show only if URL contains:显示包含某字符过滤

(2)、Hide if URL contains:隐藏包含某字符过滤

REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav|js|jpeg)(\?.*)?$

(3)、Flag requests with heads:标记带有特定header的请求

(4)、Delete request headers:删除请求header

(5)、Set request headers:替换某字符

在这里插入图片描述

Breakpoints

(1)、Break request on HTTP POST:给所有POST请求设置断点

(2)、Break request on HTTP GET with query string:给所有带参数的GET请求设置断点

(3)、Break response on Content-Type:给特定的Content-Type设置断点

在这里插入图片描述

Response Status Code过滤

(1)、Hide success(202,204,206):隐藏响应成功的session(202,204,206)

(2)、Hide Authentication demands(401):隐藏未经授权被拒绝的session(401)

(3)、Hide redirects(300,301,302,303,307):隐藏重定向的session(300,301,302,303,307)

(4)、Hide Not Modified(304):隐藏无变更的session(304)

在这里插入图片描述

Response Headers

(1)、Flag response that set cookies:标记会设置cookie的响应

(2)、Flag response with headers:标记带有特定header的响应

(3)、Delete response headers:删除响应header

(4)、Set response header:设置响应的header

注:隐藏Host为Tunnel to的会话,Rules—>Hide CONNECTs,把前面的勾勾起来。HTTPS解密失败的会话不会显示

注:隐藏图片类会话Rules—>Hide Image Requests,把前面的勾勾起来。图片类会话不会显示

2、Inspectors用法

在这里插入图片描述

(1)、Inspectors:主要是查看请求报文、响应报文,是Fiddler最主要的功能

(2)、Inspectors:界面上半部分为请求报文和下半部分分为响应报文

请求头

Request Headers:可以分层级分类显示请求头的信息,包含请求的Cache、Client、Cookies、Entity、Miscellaneous、Security、Transport等相关信息,但并不是所有请求都包含以上全部信息

请求消息体

Inspectors:根据请求的不同,可以选择多种格式化的形式展示请求报文的部分或全部信息,但是一个请求不可能有所有的展示形式

在这里插入图片描述

展示格式说明
TextView以文本格式展示
SyntaxView以语法格式展示
WebForms以表单格式展示
HexView以16进制格式展示
Auth仅展示鉴权信息
Cookies仅展示Cookies信息
Raw以元生格式展示
JSON以JSON格式展示
XML以XML格式展示

比较常用的展示格式有Cookies、RAW、JSON、WebForms等,RAW可以看到完整的请求信息,包含请求的方法、地址、路由、参数、协议版本、请求头信息。所以RAW最常用

Response响应报文

响应头

Response Headers:可以分层次级分类显示响应头的信息,包含协议版本、响应Code、Cache、Cookies/Login、Entity、Miscellaneous、Security、Transport等相关信息,但并不是所有响应都包含以上全部信息

在这里插入图片描述

响应消息体

(1)、Inspectors根据响应的不同,可以选择多种格式化的形式展示请求报文的部分或全部信息,但是一个响应不可能有所有的展示形式

(2)、比较常用的展示格式有Cookies、RAW、JSON、XML等,RAW可以看到完整的请求信息,包含协议版本、响应Code、响应头信息、响应结果

在这里插入图片描述

展示格式说明
TextView以文本格式展示
SyntaxView以语法格式展示
ImageView以图片格式展示
HexView以16进制格式展示
WebForms以表单格式展示
Auth仅展示鉴权信息
Caching仅展示Caching缓冲信息
Cookies仅展示Cookies信息
Raw以元生格式展示
JSON以JSON格式展示
XML以XML格式展示

四、Fiddler断点、重定向、发送请求

1、Fiddler断点

Fiddler可以通过设置断点修改请求,拦截响应数据,篡改响应。Fiddler有两种设置断点的方式:全局断点和局部断点。设置全局断点后,所有的HTTP/HTTPS请求都会被拦截;而设置局部断点后,仅针对设置断点的请求进行拦截。常用的是局部断点

全局断点

(1)、全局断点,所有的HTTP/HTTPS请求都会被拦截。设置全局断点的方式有2种,一种是通过点击菜单栏设置。另一种是通过快捷键设置

断点图标断点说明设置方式快捷方式
在这里插入图片描述请求前断点Before RequestsF11
在这里插入图片描述响应后断点After ResponsesAlt+F11
在这里插入图片描述取消所有断点DisabledShift+F11

(2)、设置方式:Rules—>Automatic Breakpoints—>Before Requests/After Responses

(3)、从全局断点和局部断点的区别可以看出,全局断点的应用和局部断点的应用场景是一样的

局部断点

局部断点,是针对某条特定的请求设置断点进行调试。在命令行中输入需要设置断点的请求指令,也是常用的一种断点调试方式。常用断点调试命令如下:

命令行断点说明
bpu 空格+接口地址,回车请求前断点
bpafter 空格+接口地址,回车响应后断点
bps 空格+响应状态码,回车HTTP响应状态码断点
bpm 空格+请求方式,回车请求方式断点
bpu+回车取消所有请求前断点
bpafter+回车取消所有响应后断点
bps+回车取消所有响应状态码断点
bpm+回车取消所有请求方式断点

请求前断点

案例:通过设置请求前断点,来篡改请求参数。以博客园的用户注册为例

第一步:浏览器打开网页:https://account.cnblogs.com/signup

第二步:在Filters中,添加主机:*.cnblogs.com

在这里插入图片描述

第三步:在Fiddler命令窗口输入:bpu https://account.cnblogs.com/signup

在这里插入图片描述

第四步:在第一步打开的网页中,填写注册信息,滑动验证码,点击【注册】按钮

在这里插入图片描述

第五步:在Fiddler会话列表中,可以看到这个请求已经被设置了请求前断点

在这里插入图片描述

第六步:点击这个会话请求,再点击右侧的WebForms表单,可以看到刚才填写的注册信息

第七步:篡改刚才填写的邮件地址、手机号码

第八步:点击【Break on Rep】、【Run to Comp】2个按钮

在这里插入图片描述

第九步:观察响应报文

web前端填写的邮件地址、手机号码等信息,可以在Fiddler中可以进行篡改。如果后端接口没有对数据进行校验,那么我们填写的不合法邮件地址、手机号码将变得合法了。但是后端接口,如果不通过篡改数据来做测试,web前端根本没办法输入非法的邮箱和手机号

响应后断点

断点设置

第一步:在浏览器中打开网站:https://account.cnblogs.com/signup

第二步:在Fiddler命令窗口输入:bpafter https://account.cnblogs.com/signup

第三步:正常填写注册信息,点击注册按钮

第四步:修改返回中的响应信息

2、Fiddler重定向:AutoResponder

添加规则

AutoResponder实现自动重定向,首先就需要添加规则。添加规则的方式有三种:手动添加、一键导入、引用会话请求

手动添加

(1)、通过点击“Add Rule”按钮手动添加,在规则编辑器中编辑需要匹配的请求,和篡改后的响应,完成后点击“save”按钮

(2)、AutoResponder匹配规则有四种:字符串匹配、NOT匹配(不匹配)、EXACT匹配(精确匹配)、REGEX匹配(正则表达式匹配)

字符串匹配

模糊匹配,不区分大小写,匹配包含该字符串的请求,匹配包含baidu的请求,网络延迟1s

在这里插入图片描述

NOT 匹配

模糊匹配,不区分大小写,发送不匹配包含该字符串的请求。语法:NOT:str(注意空格)

在这里插入图片描述

EXACT匹配

精确匹配,区分大小写,匹配包含该字符串的请求。语法:EXACT:URL

在这里插入图片描述

REGEX匹配

使用正则表达式进行匹配,REGEX:正则表达式

模拟mock请求,本地新建一个txt或者json文件

在这里插入图片描述

然后设置规则里:

在这里插入图片描述

在这里插入图片描述

再去请求:http://127.0.0.1/test

在这里插入图片描述

3、发送请求:Composer

(1)、设计或者构造一个请求,主要模拟发送请求,Fiddler提供了2种方式构造请求,一种是Parsed方式,一种是Raw方式

(2)、Parsed方式:可以翻译成语法解析方式。以图形界面的方式选择或者输入请求方法、请求URL、请求头、请求消息体,来构造请求

(3)、Raw方式:可以翻译为原始报文方式。没有图形界面选择,自能以HTTP请求报文的格式构造请求

Parsed方法构造百度请求

在Parsed界面,选择请求方法为GET、填写请求路径:https://www.baidu.com/,点击执行按钮,即可发送请求

在这里插入图片描述

Raw方式构造百度请求

在Raw界面,输入请求行、请求头Host,点击执行按钮,即可发送请求

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值