功能介绍(二)
第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的响应类型;
发送的字节数;
接收的字节数。