一.Fiddler的基本介绍
Fiddler的官方网站:http://www.telerik.com/fiddler
Fiddler官方网站提供了大量的帮助文档和视频教程,学习Fiddler的最好资料
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fidder包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展
你对http协议越了解,你就越能掌握Fiddler的使用方法.
二.Fiddler的工作原理
Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888.当FIddler退出的时候,它会自动注销,这样就不会影响别的程序.不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问.解决方法是重新启动下Fiddler
三.同类的其它工具
httpwatchfirebugwiresharkcharles
四.安装
1.安装Fiddler
下载地址:https://www.telerik.com/download/fiddler
一路next,安装完成即可
2.安装证书生成器
下载证书插件certmarker 下载地址:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2
一路next,安装完成即可
五.基本界面介绍
界面布局:
一)工具栏
工具栏各功能介绍按照图标从左往右介绍如下图所示:
二)websession面板(会话列表)
会话列表显示每条http请求的信息,各字段含义如下图所示:
#号列中的图标,每种图标代表不同的响应类型,具体如下:
三)QuickExec命令
QuickExec 命令行允许你快速执行脚本命令,在 Fiddler 中使用快捷键 Alt + Q 可以快速将焦点设置到命令行。
如果当前在 Web Sessions 面板选择了一个 Session,可以使用快捷键 Ctrl + I 快速将 Session URL 直接插入到命令行当前光标处。
QuickExec命令:可快速执行脚本命令
常见得命令有:
help 打开官方的使用页面介绍,所有的命令都会列出来
cls 清屏 (Ctrl+x 也可以清屏)
select 选择会话的命令
?.png 用来选择png后缀的图片
bpu 截获request
默认命令参考:
以下列表中的命令只能确保在最新版本的 Fiddler 中才生效。
多数命令是存在本地
CustomRules.js 文件中,如果不是最新版 Fiddler,可能没有最新的命令。如果要得到最新的命令,要么删除你的
CustomRules.js,要么复制 SampleRules.js 的 ExecAction 到 CustomRules.js 中。
1、?sometext
Fiddler 会高亮所有 URL 匹配问号后的字符的全部 session。按回车聚焦到匹配的 session 上。
范例:
?searchtext
2、>size
选择响应尺寸大于指定大小的全部 session。按回车聚焦到匹配的 session 上。
范例:
>40000 (选择响应大于 40kb 的请求)
3、<size
选择响应尺寸大于指定大小的全部 session。按回车聚焦到匹配的 session 上。
范例:
<5k (选择响应小于 5kb 的请求)
4、=status
选择响应 HTTP 状态等于指定值的全部 session。按回车聚焦到匹配的 session 上。
范例:
=301 (选择 301 重定向的请求)
5、@host
选择包含指定 HOST 的全部 session。按回车聚焦到匹配的 session 上。
范例:
@msn.com (选择 www.msn.com、login.msn.com 等 session)
6、bold sometext
加粗显示 URL 包含指定字符的全部 session。
范例:
bold test.php (加粗显示 URL 中包含 test.php 的 Session
bold (不带参数表示清空所有加粗显示的 Session)
7、bpafter sometext
中断 URL 包含指定字符的全部 session 响应。
范例:
bpafter test.php (中断 URL 中包含 test.php 的 Session
bpafter (不带参数表示清空所有设置断点的 Session)
8、bps
中断 HTTP 响应状态为指定字符的全部 session 响应。
范例:
bps 404 (中断所有响应 404 的 Session
bps (不带参数表示清空所有设置断点的 Session)
9、bpv 或 bpm
中断指定请求方式的全部 session 响应。
范例:
bpv POST (中断所有 POST 请求的 Session
bpv (不带参数表示清空所有设置断点的 Session)
10、bpu
中断请求 URL 中包含指定字符的全部 session 响应。
范例:
bpu test.php (中断所有请求 URL 中包含指定字符的 Session
bpu (不带参数表示清空所有设置断点的 Session)
11、cls 或 clear
清除所有 session
范例:
cls
12、dump
将所有 session 打包到 C 盘根目录下的一个 zip 压缩包中
范例:
dump
13、g 或 go
继续所有中断的 Session
范例:
g
14、help
用 IE 打开 QuickExec 在线帮助页
范例:
help
15、hide
将 Fiddler 隐藏到任务栏图标中
范例:
hide
16、urlreplace
将 URL 中的字符串替换成特定的字符串
范例:
urlreplace SeekStr ReplaceWithStr
urlreplace (不带参数表示清空所有之前的设置)
17、start
将 Fiddler 为系统代理
范例:
start
18、stop
将 Fiddler 从系统代理注销
范例:
stop
19、show
将 Fiddler 从任务栏图标恢复为图形界面,此命令在命令行工具 ExecAction.exe 中使用
范例:
show
20、slect
选择响应类型 (Content-Type) 为指定字符的所有 session
范例:
slect image
slect css
select htm
21、allbut 或 keeponly
选择响应类型 (Content-Type) 不是指定字符的所有 session
范例:
allbut xml
allbut java
22、quit
退出 Fiddler
范例:
quit
四)详情和数据统计面板
详情和数据统计面板,每条http请求的具体统计,下面是页签从左往右依次说明
1 Statistics页签:显示当前用户的session的汇总信息,包括session总数,发送字节数,接受字节数,响应类型的汇总表,世界各地通过不同请求方式所需的时间等
底部图标标签可现实、复制和收起饼图等
2、Inspectors页签:可使用不同格式查看请求和响应内容,上部显示发出的请求相关信息,下部显示接收的响应相关信息
中间的黄色提示文字表示,此请求为了提高性能,而做了编码或者压缩(例如 GZIP),需要转换后才能在 TextView 里正常浏览。点击该区域或者下面的 Remove HTTP Chunked Encoding 按钮,都能执行转换或者解压缩。如果该请求没编码/压缩是看不见此提示的
请求(Request)部分字段详解:
响应(Response)部分字段详解:
3.autoresponse页签:此功能启用后可将某一项请求的响应结果替换成指定的资源(本地文件或者fiddler内置的各种http响应),主要用于临时拦截某一请求的响应,而无需修改服务器上的环境和代码,保证在最真实的环境中调试,也无需在bug查找的时候就相关部门的配合
启用该功能,请将Enable automatic responses打勾
Permit passthroughfor unmatched requests 表示允许未匹配到的请求正常响应。应该打勾才能让其他的请求继续;否则其他未匹配到的请求都会以 404状态返回。
页签中间是一个列表,显示当前创建的匹配规则,左侧是匹配的条件,右侧是响应的结果。即:如果请求的地址包含左侧的字符串,那么就用右边设定的资源来替换来自服务器的响应。用 +和 - 两个按键可以调整当前选择规则在列表中的位置。
页签底部是一个规则编辑器,可以进行编辑当前用户选择的匹配规则、保存编辑、删除此匹配规则等操作。
第一个 Combox 是匹配的条件,可以自行输入字符串,也可以选择 Fiddler 内置的三个正则(都是匹配图片的,没什么用)。Fiddler 支持几种匹配模式:
- 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 - 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(有多余字符串) - 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 —— 指定唯一有效的捕获是显式命名或编号的 (?<name>…) 形式的组。这允许圆括号充当非捕获组,从而避免了由 (?:…) 导致的语法上的笨拙。
- s —— 指定单行模式。更改句点字符 (.) 的含义,以使它与每个字符(而不是除 之外的所有字符)匹配。
- x —— 指定从模式中排除非转义空白并启用数字符号 (#) 后面的注释。(有关转义空白字符的列表,请参见字符转义。)请注意,空白永远不会从字符类中消除。
第二个 Combox 是响应的结果,可以选择:Fiddler 内置的 HTTP 200/204/302/303/304/307/401/403/404/407/502 等各种响应范例、*bpu 和 *bpafter( 表示在此中断,关于 bpu 和 bpfater 见 QuickExec 命令参考)、本地文件 (Find a file...)。
Save 按钮是保存对此匹配规则的修改,Remove 按钮是删除此匹配规则。
增加匹配规则
1.点击 Add... 按钮,新增一条规则。
此时会激活页签底部的 Rule Editor。如果你在 Web Sessions 面板里选择了一个 Session,则匹配规则是该 Session 的 URL,否则是 StringtoMatch[数字]。然后可以使用 Rule Editor 编辑它。
2.点击 Import... 按钮,导入在 Web Sessions 中保存下来的压缩包 (*.saz)。
3.在 Web Sessions 面板中选择你要捕获的请求,直接拖拽到 AutoResponder 的列表中
四) composer页签:可模拟向服务器发送数据的过程(这就是灌水机器人的原理,也是部分http flood的一种方式),也可粘贴一次raw
http header达到模拟请求的目的:
五) filter页签:过滤器功能,可分别对host过滤,客户端进程过滤,断点设置规则,请求和响应过滤等
HOST-hosts过滤规则:
你可以在文本框中输入多个 HOST,多个之前用半角逗号或者回车分隔。
1- No Host Filter - —— 无 HOST 过滤
2Hide the following Hosts —— 隐藏如下 HOST
3Show only the following Hosts —— 只显示如下 HOST
4Flag the following Hosts —— 加粗显示如下 HOST
Client Process —— 客户端进程过滤规则:
1、Show only traffic from —— 你可以指定只捕获哪个 Windows 进程中的请求,右侧会列出当前所有的 Windows 进程
2、Show only Internet Explorer traffic —— 只显示 IE 发出的请求
3、Hide Windows RSS platform traffic —— 隐藏 Windows RSS 平台发出的请求
Breakpoints —— 断点设置规则:
1、Break request on HTTP POST —— 给所有 POST 请求设置断点
2、Break request on HTTP GET with QueryString —— 给所有带参数的 GET 请求设置断点
3、Break response on Content-Type —— 给特定的 Content-Type 设定断点
Response Status Code —— 响应 HTTP 状态过滤规则:
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 Type and Size —— 响应类型和大小过滤规则:
1、设定响应类型过滤规则
Show all Content-Types —— 显示所有响应类型
Show only IMAGE/* —— 只显示图片
Show only HTML —— 只显示 HTML
Show only TEXT/CSS —— 只显示 CSS
Show only SCRIPTS —— 只显示脚本
Hide IMAGE/* —— 隐藏所有图片
2、Ignore smaller than ? KB —— 忽略小于指定大小的 session
3、Ignore larger than ? KB —— 忽略大于指定大小的 session
4、Block script files —— 阻止脚本文件,显示为 404
5、Block image files —— 阻止图片文件
6、Block SWF files —— 阻止 SWF 文件
7、Block CSS files —— 阻止 CSS 文件
Request Headers —— 请求 header 过滤规则:
1、Flag requests with header —— 标记带有特定 header 的请求
2、Delete request header —— 删除请求 header
3、Set request header —— 设置请求的 header
Response Headers —— 响应 header 过滤规则
1、Flag responses that set cookies —— 标记会设置 cookie 的响应
2、Flag responses with header —— 标记带有特定 header 的响应
3、Delete responses header —— 删除响应 header
4、Set responses header —— 设置响应的 header
6 Timeline 页签:显示session请求到响应的时间表,横向为时间轴,纵向为session列表,鼠标移到timeline页签上,在底部会显示四个数据:session编号和URL、session的响应类型、发送字节数和接收字节数