接口-Fiddler-​功能介绍(二)

2022-07-25 13:40:56 浏览数 (1)

功能介绍(二)

第1章 监听类型

四种状态分别对应:监听所有请求、监听浏览器请求、监听非浏览器请求、全部隐藏

第2章 命令行

2.1?sometext

在已有的sessions中,将URL中包含sometext的session项高亮。

例如:?fiddler,搜索带有fiddler关键字的链接地址。

">2.2>size或<size< span=""></size<>

在当前的sessions中,高亮选择Response的Body大小大于或小于size指定的值。

例如:> 40000 将Response的body值大于40kb

<5k< span="">将Response的body值小于5kb

2.3=status

在当前所有的sessions中,将Result列中等于status值的session项高亮,即将与status值相同的http状态码高亮。

例如:=301即将http状态码为301的session是高亮。

2.4=method

在当前所有的sessions中,将Request请求中的http method与命令行中method值相同的session项高亮。

例如:=POST即将method为POST的session项高亮。

2.5@host

在当前的sessions中,将Request请求中host项中包含命令行@后内容的sessions项高亮。

例如:@baidu.com 将www.baidu.com、login.baidu.com等sessions项高亮。

2.6bold

将新记录的sessions,如果URL中包含sometext内容,就将该sessions的字体加粗。如果要取消加粗,直接输入bold即可。

例如:bold baidu.com,新记录的sessions中,URL内包含baidu.com字样的session字体加粗。

2.7bpafter

在URL中包含sometext内容的sessions的Resopnse位置设置断点,即该sessions的After Response位置。使用这个命令后,会将之前设置的策略清除。取消该拦截项,直接输入bpafter即可。

例如:bpafter du,拦截所有URL中包含du内容的Response返回值。

2.8bps

拦截所有状态码与sometext值相同sessions的Response返回值。使用这个命令后,会将之前设置的策略清除。取消该拦截策略,直接输入bps即可。

例如:bps 404,将所有返回404请求的Response全部拦截。

2.9bpv或bpm

拦截所有发送的http method与sometext内容相同的Session网络请求。使用这个命令后,会将之前设置的策略清除。取消拦截策略,直接输入bpv或pbm即可。

例如:bpv POST,会拦截所有以POST方法发送的网络请求。

2.10bpu

在URL中包含sometext内容的sessions的Request位置设置断点,即该session的before request位置。使用这个命令后,会将之前设置的策略清除。取消该拦截策略,直接输入bpu即可。

例如:bpu /myservice.asmx,拦截所有URL中包含/myservice.asmx内容的Request请求。

2.11cls或clear

cls或clear清除列表中所有的session,功能与Ctrl X相同。

例如:cls

2.12dump

将当前获取到的所有sessions保存成zip文件,并保存到我的文档中的 Fiddler2Captures文件夹中,命名为dump.saz。

例如:dump

2.13g或go

恢复所有被设置断点的session。

例如:g

2.14help

打开QuickExec的帮助页面。

例如:help

2.15hide

将Fiddler隐藏到系统状态栏中。

例如:hide

2.16urlreplace

自动将任意URL中的内容sometext1替换为sometext2。使用这个命令后,会将之前设置的策略清除。取消该拦截策略,直接输入urlreplace即可。

例如:urlreplace baidu qq,即如果发送的网络请求为www.baidu.com,通过该策略会自动更改为www.qq.com,并发送出去。

2.17start

将Fiddler设置为系统代理。

例如:start

2.18stop

取消Fiddler为系统代理。

例如:stop

2.19show

可以将已被隐藏的Fiddler置前。在Fiddler的安装目录下执行该命令需要使用到ExecAction.exe这个程序。

例如:show

2.20select MIME

在当前所有的Sessions中,将header的Content-Type字段包含sometext内容的sessions高亮。可用于选择文件格式等。

例如:select image,即将所有网络请求中,Content-Type字段包含image的sessions高亮。

2.21select HeaderOrFlag PartialValue

高亮SessionFlag或Header中包含指定sometext内容的session。

例如1:select text abc,即在名为text的SessionFlag中,高亮内容为abc的Session。

例如2:select @Response.Set-Cookie baidu.com,即在所有Session的Response中,查找name为Set-Cookie值为baidu.com的Session,并高亮。

例如3:select @Request.X-Requested-With XMLHttpRequest,即在所有的Session的Request中,查找name为X-Requested-With值为XMLHttpRequest的session,并高亮。

例如4:select @Request.X-Requested-With *,即在所有的Session的Request中,查找name为X-Requested-With且为任意值的session,并高亮。

2.22allbut或keeponly

隐藏所有除Content-Type内容包含sometext的session项。

例如:allbut xml,隐藏所有Content-Type为非xml的session项。

2.23quit

关闭 Fiddler。

例如:quit

2.24!dns hostname或者!nslookup hostname

进行目标域名为sometext的DNS查找,并在LOG选项卡上将结果输出。

例如:!dns www.baidu.com,即将www.baidu.com对应的IP地址解析并输出。

2.25!listen PORT [CERTHOSTNAME]

在另一个端口增设一个监听器,可选安全的HTTPS证。

例如:!listen 8889,即可同时截获通过8889端口的网络请求。

第3章 断点

断点可以直接点击Fiddler下图的图标位置,就可以设置全部请求的断点,断点的命令可以精确设置需要截获哪些请求。

共三种状态:

1、点击一下截获全部请求

箭头向上:表示断点请求。此时客户端的请求是无法直接到达目标服务器的,需要手动控制。

2、点击两下截获全部请求与返回

箭头向下:表示断点响应。此时目标服务器的响应是无法直接到达客户端的,需要手动控制。

3、点击三下解除断点设置

空白:不设置断点。

一、设置断点,修改请求区域操作:

1、访问接口地址,设置断点请求;

例如:访问百度首页后,输入“百度”后,点击百度一下。

此时打开Fiddler,点击一下断点,截获全部请求,断点图标为箭头向上。

2、点击对应的会话请求;

刷新一下刚才的百度搜索页面。

3、查看请求报文信息;

此时Fiddler截获到了刚才刷新后的请求信息,可以看到请求区域参数里有之前所输入的关键字“百度”。

4、修改请求内容;

在请求区域将”百度”修改为”百度一下”。

5、完成断点,放行,把该请求发送给目标服务器。

点击Run to Completion,放行该请求。

此时之前的搜索关键字“百度”变为了“百度一下”。

二、设置断点,修改响应区域操作:

1、访问接口地址,设置断点请求;

例如:访问百度首页。

此时打开Fiddler,点击两下断点,截获全部请求与返回,断点图标为箭头向下。

2、点击对应的会话请求;

刷新一下刚才的百度搜索页面。

3、查看响应报文信息;

此时Fiddler截获到了刚才刷新后的请求与响应信息,可以看到响应区域参数里有关键字“百度一下”。

4、修改响应内容;

在响应区域将”百度一下”修改为”百度一下下”。

5、完成断点,放行,把该响应发送给目标服务器。

点击Run to Completion,放行该响应。

此时之前的搜索关键字“百度一下”变为了“百度一下下”。

第4章 行数

选择的行数/总行数

例如:选择3行,总行数65

第5章 请求地址

显示所选择的请求地址,由Protocol Host URL 拼接而成。

第6章 请求列表

请求列表的信息分别有:结果(Result),协议(Protocol),主机名(Host),网页地址(URL),内容大小(Body),缓存(Caching),响应的HTTP内容类型(Content-Type),请求所运行的程序(Process),注释(Comments),自定义(Custom)等。

名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值

会话条目的默认文本颜色来源于HTTP状态(红色表示错误,黄色表示认证需求),流量类型(CONNECT表示灰色)或响应类型(CSS为紫色,HTML为蓝色,脚本为绿色,图像为灰色)。您可以使用FiddlerScript中的ui-color标志覆盖会话的文本颜色。

每个会话都标有一个图标以供快速参考:

结果(Result)是请求是否成功的代码。最常见的代码包括:

200—成功。请求已发送且响应已成功接收。

400—坏请求。当目的服务器接收到请求但不理解细节所以无法处理时发生。

404—页面找不到。如果目标API已移动或已更新但未保留向后兼容性时发生。

500—内部服务器错误。服务器端发生了某种致命错误,且错误并被服务提供商捕获。

第7章 请求与返回相关信息

工具最右方的是请求与返回相关信息的查看器,提供了数据多方面的查看方式。

7.1Statistics

统计信息,显示当前用户选择的Sessions的汇总信息,包括:选择的Sessions总数、发送字节数、接收字节数、响应类型的汇总表、世界各地通过不同请求方式所需的时间等。

Statistics页签底部图表:

1、Show Chart可以将汇总结果显示为一个饼状图,按照响应类型,在饼图中显示不同的比例和不同的色块。

2、Copy this chart可以将该饼图复制到剪贴板,粘贴到图形处理软件或者word中。

3、Collapse Chart收起饼图展示。

关于HTTP请求的性能分析:

我们可以从中看出一些基本性能数据:如DNS解析的时间消耗是33ms,建立TCP/IP连接的时间消耗是3ms等等信息。

7.2Inspectors

检查器,页签允许你用多种不同格式查看每个请求和响应的内容。

信息分为上下两个部分,上半部分是请求部分,下半部分是响应部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。

一、请求(Request)部分:

1、Headers:显示客户端发送到服务器的HTTP请求的header,显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等。

2、Textview:显示POST请求的body部分为文本,HTML/JS/CSS 使用 TextView 可以看到响应的内容。

3、SyntaxView:显示POST请求的body部分为文本,语法格式。

4、WebForms:显示请求的GET参数和POST的body内容,特别说明,这里body应该是 application/x-www-form-urlen-coded格式。

5、HexView:用十六进制数据显示请求。

6、Auth:显示header中的Proxy-Authorization和Authorization信息。

7、Cookies:显示Cookie信息。

8、Raw:将整个请求显示为纯文本。

9、JSON:显示Json格式。

10、XML:如果请求的body是XML格式,就是用分级的XML树来显示它。

二、响应(Response)部分:

1、Transformer:显示响应的编码信息。顶部的黄色提示文字表示,此请求为了提高性能,而做了编码或者压缩(例如 GZIP),需要转换后才能在TextView里正常浏览。点击该区域或者下面的Chunked Transfer-Encoding 按钮,都能执行转换或者解压缩。如果该请求没编码/压缩是看不见此提示的。

HTTP Compression显示当前请求使用的编码方式:

None:无压缩

GZIP:GZIP压缩

DEFLATE:DEFLATE压缩

BZIP2:BZIP2压缩

Brotli:Brotli压缩

对未编码压缩的请求,可以选择不同的模式,看Response body里显示压缩后有多大。从而根据这个决定是否需要采用这样的压缩技术来提升网站的性能。

2、Headers:用分级视图显示响应的header。

3、TextView:使用文本显示响应的body。

4、SyntaxView:使用文本显示响应的 body,语法格式。

5、ImageView:如果请求是图片资源,显示响应的图片。左侧灰色区域会显示图片的大小、宽高、文件格式等信息,在下方还可以选择缩放模式:自动缩放、缩放以适应显示区域大小、无缩放。JPG 格式使用 ImageView 就可以看到图片。

6、HexView:用十六进制数据显示响应。

7、WebView:响应在Web浏览器中的预览效果。

8、Auth:显示响应header中的Proxy-Authorization和Authorization信息。

9、Caching:显示此请求的缓存信息。

10、Cookies:显示Cookie信息。

11、Raw:将整个响应显示为纯文本。

12、JSON:显示Json格式。

13、XML:如果响应的body是XML格式,就是用分级的XML树来显示它。

7.3AutoResponder

自动回复器,用于将HTTP请求重定向为指定的返回类型。

此功能启用后,可以将某一请求的响应结果替换成指定的资源,可以是本地文件,也可以是 Fiddler内置的各种HTTP响应。主要用于临时拦截某一请求的响应,而无需修改服务器上的环境和代码,保证在最真实的环境中进行调试,也无需在BUG查找的时候就寻求相关部门的配合。

启用该功能,请将Enable rules打勾。

Unmatched requests passthrough表示允许未匹配到的请求正常响应。打勾才能让其他的请求继续;否则其他未匹配到的请求都会以404状态返回。

Enable Latency表示启动延迟,勾选后选中规则,右键Set Latency,输入延迟响应的毫秒数,保存后,执行规则会先等待所设置的延迟时间。

页签中间是一个列表,显示当前创建的匹配规则,左侧是匹配的条件,右侧是响应的结果。即:如果请求的地址包含左侧的字符串,那么就用右边设定的资源来替换来自服务器的响应。选中某条规则右键用 和 - 两个按键可以调整当前选择规则在列表中的位置。

页签底部是一个规则编辑器,可以进行编辑当前用户选择的匹配规则、保存编辑、删除此匹配规则等操作。

一、匹配的条件,可以自行输入字符串,也可以选择Fiddler内置的三个正则。Fiddler支持几种匹配模式:

1、String Literals:字符匹配

这种模式将匹配指定的字符串,不存在大小写敏感。例如:

*

通配符,匹配任何地址,如:http://www.example.com/Path1/query=example

EXAMPLE

匹配 http://www.example.com/Path1/query=example

path1/

匹配 http://www.example.com/Path1/query=example

query

匹配 http://www.example.com/Path1/q=Query

2、Exact Match:精确匹配

EXACT: 开头,将严格匹配字符串,包括大小写。例如:

EXACT:http://www.example.com/path

匹配 http://www.example.com/path

不匹配 http://www.example.com/Path(大小写不符)

不匹配 http://www.example.com/path/q=Query(有多余字符串)

3、Regular Expressions:正则表达式

regex: 开头,使用正则表达式来匹配session的URL。例如:

regex:.*

通配符,匹配任何地址,如 http://www.example.com/Path1/query=example

regex:.*.jpg 匹配包含.JPG的URL

匹配 http://www.example.com/Path1/query=foo.jpg&bar

匹配 http://www.example.com/Path1/query=example.jpg

regex:.*.jpg$ 匹配.jpg结束的URL

不匹配 http://www.example.com/Path1/query=foo.jpg&bar(不是.jpg结尾)

匹配 http://www.example.com/Path1/query=example.jpg

regex:.*.(jpg|gif|bmp)$ 匹配.jpg或.gif或.bmp结束的URL

不匹配 http://www.example.com/Path1/query=foo.bmp&bar(不是.bmp结尾)

匹配 http://www.example.com/Path1/query=example.gif

不匹配 http://www.example.com/Path1/query=example.Gif (是.gif结尾,但大小写不匹配)

匹配 http://www.example.com/Path1/query=example.bmp

regex:(?insx).*.(jpg|gif|bmp)$ 匹配.jpg或.gif或.bmp结束的URL,忽略大小写。

不匹配 http://www.example.com/Path1/query=foo.bmp&bar(不是.bmp 结尾)

匹配 http://www.example.com/Path1/query=example.gif

匹配 http://www.example.com/Path1/query=example.Gif

匹配 http://www.example.com/Path1/query=example.bmp

最后一个正则中的?insx是正则表达式的语法,其中各字母的含义如下:

I:指定不区分大小写的匹配。

m:指定多行模式。更改^和$的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。

n:指定唯一有效的捕获是显式命名或编号的(?…)形式的组。这允许圆括号充当非捕获组,从而避免了由(?:…)导致的语法上的笨拙。

s:指定单行模式。更改句点字符(.)的含义,以使它与每个字符(而不是除n之外的所有字符)匹配。

x:指定从模式中排除非转义空白并启用数字符号(#)后面的注释。请注意,空白永远不会从字符类中消除。

二、响应的结果,Fiddler内置的HTTP 200/204/302/303/304/307/401/403/404/407/502等各种响应范例、*bpu和*bpafter、本地文件(Find a file...)等。

Save按钮是保存对此匹配规则的修改。

新增匹配规则具体操作:

1、点击Add Rule,进行添加规则。

2、在RuleEditor添加请求与返回的地址,之后点击Save进行保存。

3、之后选中Enable rules进行启用规则。

4、打开浏览器访问www.baidu.com,请求地址重定向为www.163.com页面信息。

7.4Composer

Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求。

Parsed模式下你只需要提供简单的URL地址即可(也可以在Request Body定制一些属性,如模拟浏览器User-Agent等)。

点击Execute按钮执行请求,左边的请求列表会多出一项,双击它,可在Inspectors查看请求与返回的信息。

也可以粘贴一次请求的Raw http headers,达到模拟请求的目的。

7.5Fiddler Orchestra Beta

一个新的web远程调试器,分为控制器和客户端,控制器从中获取数据并控制任意数量的客户端,客户端报告数据并接收来自任意数量的控制器的命令。只有控制器保持端口打开并接收来自客户端的传入连接。所有客户端和控制器通信都是加密的。

1、设置控制器

这是控制器配置的起点。启动一个控制器只需要一个端口和一个私钥。端口必须为外部连接开放,以便客户端能够连接。私钥用于加密与客户端的通信。客户机必须具有相同的私钥集,以便能够连接到该控制器。只有当控制器停止时,才能重新生成私钥。

2、客户端安装(在Windows、Mac、Linux等)

下载安装.NET Core SDK v2.0.0

https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md

下载后,默认安装即可。

打开Fiddler,点击Fiddler Orchestra Beta

点击下载

下载后,对zip文件进行解压

在这个目录中打开命令提示符/终端

输入dotnet FiddlerOrchestra.Client.NetCore.dll

打开链接http://localhost:8800/,客户端开启。

3、控制器与客户端进行相连

控制器设置端口号、密钥后,点击Start开始。

客户端输入控制器IP地址、端口号、密钥后,点击Connect进行连接。

7.6FiddlerScript

用于通过脚本控制HTTP,使用的是JScript语言。

包含了一个CustomRules.js脚本文件可以自动修改Http Request和Response。位于: C:Documents and Settings[your user]My DocumentsFiddler2ScriptsCustomRules.js下,或者可以在Fiddler中打开CustomRules.js文件(启动Fiddler,点击菜单Rules->Customize Rules)。

7.7Log

查看抓取请求的日志信息

7.8Filters

筛选,在好多请求中只想关注所需要的请求,就可以用到此功能过滤指定的内容。

Hosts:Hosts 过滤规则

Client Process:客户端进程过滤规则

Show only traffic from-你可以指定只捕获哪个Windows进程中的请求,右侧会列出当前所有的Windows进程。

Show only Internet Explorer traffic-只显示IE发出的请求。

Hide traffic from Service Host-隐藏服务主机发出的请求。

Request Headers:请求header过滤规则

Show only if URL contains-支持基于URL显示某些请求;可以使用前缀EXACT来限定大小写敏感。

Hide if URL contains-和上面的是相反的含义,也就是隐藏的意思。

Flag requests with headers-支持指定某个http请求头名称,如果在请求列表中存在该请求头,会加粗显示该session。

Delete request headers-支持指定某个HTTP请求头名称,如果包含该请求头,会删除该请求头。

Set request header-支持创建一个指定了名称和取值的HTTP请求头,或将HTTP请求头更新为指定取值。

Breakpoints:断点设置规则

Break request on POST-给所有POST请求设置断点。

Break request on GET with query string-给所有带参数的GET请求设置断点。

Break on XMLHttpRequest-给所有XML请求设置断点。

Break response on Content-Type-给特定的Content-Type设定断点。

Response Status Code:响应HTTP状态过滤规则

Hide success(2xx)-隐藏响应成功的session(2xx)。

Hide non-2xx-会隐藏状态码不在200到299之间的响应。

Hide Authentication demands(401,407)-隐藏未经授权被拒绝的session(401,407)。

Hide redirects(300,301,302,303,307)-隐藏重定向的session(300,301,302,303,307)。

Hide Not Modified(304)-隐藏无变更的session(304)。

Response Type and Size:响应类型和大小过滤规则

设定响应类型过滤规则:

Show all Content-Types-显示所有响应类型。

Show only IMAGE/*-只显示图片。

Show only HTML-只显示HTML。

Show only TEXT/CSS-只显示TEXT/CSS。

Show only SCRIPTS-只显示脚本。

Show only XML-只显示XML。

Show only JSON-只显示JSON。

Hide IMAGE/*-隐藏所有图片。

Hide smaller than ? KB-隐藏小于指定大小的session。

Hide larger than ? KB-隐藏大于指定大小的session。

Time HeatMap-复选框会基于服务器返回给定响应所需要的时间为每session设置背景颜色。

Block script files-阻止脚本文件,显示为404。

Block image files-阻止图片文件。

Block SWF files-阻止SWF文件。

Block CSS files-阻止CSS文件。

Response Headers:响应header过滤规则

Flag responses that set cookies-标记会设置cookie的响应。

Flag responses with headers-标记带有特定header的响应。

Delete response headers-删除响应header。

Set response header-设置响应的header。

筛选指定URL操作:

1、勾选Use Filters,如我只想筛选baidu、163的请求地址,选择Show only the following Hosts,输入www.baidu.com;www.163.com(有多个的时候用分号隔开)。

2、浏览器访问多个请求地址(包含baidu、163),此时左侧的请求列表只抓取baidu、163的请求地址。

7.9Timeline

性能测试工具,同chrome浏览器开发者工具的Network项效果相似。

显示在请求列表面板中选择的session(一个或多个)请求到响应的时间表。横向是时间轴,以秒为单位;纵向是选择的session列表。

鼠标移到Timeline页签的某一session上,在Timeline页签底部会显示四个数据:

Session编号和URL;

Session的响应类型;

发送的字节数;

接收的字节数。

0 人点赞