Fiddler主界面
工具栏
- 给会话添加备注信息
- 重新加载当前会话
- 删除会话选项
- 放行,和断点对应,后面详细讲解
- 响应模式。也即是,当Fiddler拿到远程的response后是缓存起来一次响应给客户端还是以stream的方式直接响应。
- 解码。有些请求是被编码的,点击这个按钮后可以根据响应的编码格式自动解码。
- 查找会话。
- 保存会话。
- 截屏。截屏后,会以会话的方式返回一个截图。
会话列表
图标说明
标签
Statistics
Statistics页签显示当前用户选择的 Sessions 的汇总信息,包括:选择的 Sessions 总数、发送字节数、接收字节数、响应类型的汇总表、世界各地通过不同请求方式所需的时间等。
关于http请求的性能和其他数据分析,我们可以从中看出一些基本性能数据:如DNS解析的时间,建立TCP/IP连接的时间消耗等信息
我们可以从中看出一些基本性能数据:如DNS解析的时间消耗是8ms,建立TCP/IP连接的时间消耗是8ms等等信息。
Inspectors(常用)
Inspectors 页签允许你用多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片,HTML/JS/CSS 使用 TextView 可以看到响应的内容。Raw标签可以查看原始的符合http标准的请求和响应头。Cookies标签可以看到请求的cookie和响应的set-cookie头信息
Inspectors 页签分为上下两部分,上部显示的是发出的请求相关信息,下部显示的是接收的响应相关信息
请求 (Request) 部分详解
- Headers :显示客户端发送到服务器的 HTTP 请求的 header,显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等
- Textview : 显示 POST 请求的 body 部分为文本
- WebForms :显示请求的 GET 参数 和 POST body 内容,特别说明,这里的QueryString为url后接的内容;这里 body 为是 application/x-www-form-urlen-coded 格式
- HexView: 用十六进制数据显示请求
- Auth :显示 header 中的 Proxy-Authorization 和 Authorization 信息
- Cookies:显示请求的cookie信息
- Raw :将整个请求显示为纯文本(用的较多)
- XML:如果请求的 body 是 XML 格式,就是用分级的 XML 树来显示它
响应(Response) 部分详解
-
Transformer :显示响应的编码信息
有时候返回的数据过大,会对数据做编码或者压缩(例如 GZIP),需要转换后才能在 TextView 里正常浏览。点击该区域或者下面的 Remove HTTP Chunked Encoding 按钮,都能执行转换或者解压缩。如果该请求没编码/压缩是看不见此提示的。
HTTP Compression 显示当前请求使用的编码方式,这里没有压缩,所以显示为None -
Headers :用分级视图显示响应的 header
-
TextView : 使用文本显示相应的 body
-
ImageViews :如果请求是图片资源,显示响应的图片
左侧区域会显示图片的大小、宽高、文件格式等信息
在下方还可以选择缩放模式:自动缩放、缩放以适应显示区域大小、无缩放 -
HexView : 用十六进制数据显示响应
-
WebView :响应在 Web 浏览器中的预览效果
-
Auth:显示响应 header 中的 Proxy-Authorization 和 Authorization 信息
-
Caching : 显示此请求的缓存信息
-
Cookies:显示返回的cookie信息
-
Raw : 将整个响应显示为纯文本
-
JSON:返回的响应内容如果是一个json格式的,这里会显示
-
XML:如果相应的 body 是 XML 格式,就是用分级的 XML 树来显示它
AutoResponder(自动重定向)
主要用于临时拦截某一请求的响应,而无需修改服务器上的环境和代码,保证在最真实的环境中进行调试,也无需在 BUG 查找的时候就寻求相关部门的配合。
此处先空着以后再补
Composer
Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求
Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)
Filters
fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或小于指定大小
打开fiddler,找到Filters选项并点击打开,
默认情况下,这个页面是灰色的,代表默认不过滤任何请求。现在我们勾选 Use Filters 。
一般常用的有三种过滤条件:
-
Hosts过滤(用的较多)
可以过滤只显示intranet(局域网)或internet(广域网)的HTTP请求也可以选择特定域名的HTTP请求
如:我这里就默认只会抓取设置的这三个主机的请求
-
类型过滤,一般对各种图片、CSS、JS这类的静态素材也不需要看的情况下,直接全部过滤掉
.*\.(bmp|css|js|gif|ico|jp?g|png|swf|woff)
Breakpoints 断点设置
- Break request on POST: 给所有 POST 请求设置断点
- Break request on GET with QueryString :给所有带参数的 GET 请求设置断点
- Break response on Content-Type —— 给特定的 Content-Type 设定断点
-
根据返回的状态码过滤
- Hide success(202,204,206) : 隐藏响应成功的 session (202,204,206)
- Hide Authentication demands(401) : 隐藏未经授权被拒绝的 session (401)
- Hide redirects(300,301,302,303,307) :隐藏重定向的 session (300,301,302,303,307)
- Hide Not Modified(304) : 隐藏无变更的 session (304)
断点请求、响应
如图,箭头所指的位置时可以点击的。共三种状态:
- 空白:不设置断点。
- 箭头向上:表示断点请求。此时客户端的请求是无法直接到达目标服务器的,需要手动控制。
- 箭头向下:表示断点响应。此时目标服务器的响应是无法直接到达客户端的,需要手动控制。
还有一种打断点的方式:
在命令行中输入命令:
bpu www.baidu.com
(断点请求)
bpuafter www.baidu.com
(断点响应)
这种方法只会中断www.baidu.com
断点请求并修改
如图,操作步骤:
- 设置断点请求,访问网页
- 点击对应的会话
- 查看请求报文信息
- 修改请求内容
- 完成断点,放行,把该请求发送给目标服务器。
图中Break On Response表示把请求发给服务器,但是服务器的响应被fiddler拦截,此时可以修改响应内容(和断点响应类似)。
断点响应并修改
和断点请求操作类似,只是在响应区域修改报文信息即可。
在断点响应时,请注意超时时间。
Fiddler的内置命令
QuickExec 命令行
使用快捷键 Alt + Q 可以快速将焦点设置到命令行
select xxx :筛选
select 后边跟响应的类型(Content-Type),表示选中所有匹配的会话。
比如希望 Fiddler 选中所有的图片,可以使用 select image;
而 select css 则选中所有的 css 文件;
当然,select htm 就是选中所有的 html 文件
?text
问号(?)后边跟一个字符串,Fiddler 将所有会话中存在该字符串匹配的全部高亮显示(下图输入的是 ?google.com)
> 和 <
大于号(>)和小于号(<)后边跟一个数值,表示高亮所有尺寸大于或小于该数值的会话。
比如我输入 >5000,按下回车后结果如下:
温馨提示:你可以直接输入 >5k 表示你想高亮所有尺寸大于 5KB 的会话。
=
等于号(=)后边可以接 HTTP 状态码或 HTTP 方法,比如 =200 表示高亮所有正常响应的会话。
下图输入了 =POST,表示希望高亮所有 POST 方法的会话:
@
@ 后边跟的是 Host,比如我想高亮所有鱼C论坛的连接,我可以 @bbs.fishc.com
设置断点命令
会话被中断下来之后,点击页面上方的 Go 按钮放行当前中断下来的会话,但新的匹配内容还是会被断下来,输入命令但不带参数表示取消之前设置的断点。
bpafter
bpafter 后边跟一个字符串,表示中断所有包含该字符串的会话。
比如我想中断所有包含 fishc 的响应,那么我输入 bpafter fishc,然后在浏览器输入 bbs.fishc.com,发现并没有收到服务器响应,因此都给 Fiddler 断下来了:
bps
bps 后边跟的是 HTTP 状态码,表示中断所有为该状态码的会话。
bpv 或 bpm
bpv 或 bpm 后边跟的是 HTTP 方法,表示中断所有为该方法的会话。
bpu
跟 bpafter 类似,区别:bpu 是在发起请求时中断,而 bpafter 是在收到响应后中断。
cls 或 clear
清除当前的所有会话。
dump
将所有的会话打包成 .zip 压缩包的形式保存到 C 盘根目录下。
g 或 go
放行所有中断下来的会话。
hide
将 Fiddler 隐藏。
show
将 Fiddler 恢复。
urlreplace
urlreplace 后边跟两个字符串,表示替换 URL 中的字符串。比如 urlreplace baidu fishc 表示将所有 URL 的 baidu 替换成 fishc。
温馨提示:直接输入 urlreplace 不带任何参数表示恢复原来的样子。
start
Fiddler 开始工作。
stop
Fiddler 停止工作。
quit
关闭 Fiddler。
select
select 后边跟响应的类型(Content-Type),表示选中所有匹配的会话。
比如希望 Fiddler 选中所有的图片,可以使用 select image;
而 select css 则选中所有的 css 文件;
当然,select htm 就是选中所有的 html 文件啦~
allbut 或 keeponly
跟 select 类似,不过 allbut 和 keeponly 会将所有无关的会话删除。
比如我只想看图片,那么我可以 keeponly image,表示将所有与图片无关的会话删除:
!dns
后边跟一个域名,执行 DNS 查找并在右边的 LOG 栏打印结果:
!listen
设置其他监听的端口,默认是 8888。。