简介
Fiddler是一个抓包工具,可以将网络传输发送与接收的数据包进行截获、重发、编辑等操作。也可以用来检测流量。原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。
Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。在打开它的那一瞬间,它就已经设置好了浏览器的代理了。当你关闭的时候,它又帮你把代理还原了。Fiddler也可以抓取支持https代理的任意程序的数据包但是需要要先安装证书。
代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。
工具栏
说明注释、重新请求、删除会话、继续执行、流模式/缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除IE缓存、编码/解码工具、弹出控制监控面板、MSDN、帮助
开启抓包
Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。开启后再左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。
或者通过点击左下角图标
。开启的时候该图标显示,关闭的时候该图标隐藏。
一般直接打开Fiddler的时候就开始自动抓包了。
已抓取数据包列表
每个Fiddler抓取到的数据包都会在该列表中展示,点击具体的一条数据包可以在右侧菜单点击Insepector查看详细内容。主要分为请求(即客户端发出的数据)和响应(服务器返回的数据)两部分。
数据包列表字段
名称 |
含义 |
---|---|
# |
抓取HTTP Request的顺序,从1开始,以此递增 |
Result |
HTTP状态码 |
Protocol |
请求使用的协议,如HTTP/HTTPS/FTP等 |
Host |
请求地址的主机名 |
URL |
请求资源的位置 |
Body |
该请求的大小 |
Caching |
请求的缓存过期时间或者缓存控制值 |
Content-Type |
请求响应的类型 |
Process |
发送此请求的进程:进程ID |
Comments |
允许用户为此回话添加备注 |
Custom |
允许用户设置自定义值 |
数据包列表图标
图标 |
含义 |
---|---|
|
请求已经发往服务器 |
|
已从服务器下载响应结果 |
|
请求从断点处暂停 |
|
响应从断点处暂停 |
|
请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body) |
|
请求使用 HTTP 的 POST 方法 |
|
请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道 |
|
响应是 HTML 格式 |
|
响应是一张图片 |
|
响应是脚本格式 |
|
响应是 CSS 格式 |
|
响应是 XML 格式 |
|
响应是 JSON 格式 |
|
响应是一个音频文件 |
|
响应是一个视频文件 |
|
响应是一个 SilverLight |
|
响应是一个 FLASH |
|
响应是一个字体 |
|
普通响应成功 |
|
响应是 HTTP/300、301、302、303 或 307 重定向 |
|
响应是 HTTP/304(无变更):使用缓存文件 |
|
响应需要客户端证书验证 |
|
服务端错误 |
|
会话被客户端、Fiddler 或者服务端终止 |
Statistics选项
统计面板,这里显示请求性能,随意点击一个请求,就可以看到Statistics关于该HTTP请求的性能以及数据分析了。
Inspectors选项(常用)
Inspectors是用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容。
请求区域
名称 |
含义 |
---|---|
Headers |
|
TextView |
显示请求的数据 |
SyntaxView |
以表单形式显示所有的请求参数和参数值 |
WebForms |
|
HexView |
|
Auth |
显示认证信息 |
Cookies |
显示所有cookies |
Raw |
显示Headers和Body数据 |
JSON |
若请求数据是json格式,以json形式显示请求内容 |
XML |
若请求数据是xml格式,以xml形式显示请求内容 |
响应区域
名称 |
含义 |
---|---|
Transformer |
|
Headers |
|
TextView |
显示响应的数据 |
SyntaxView |
|
ImageView |
|
HexView |
|
WebView |
|
Auth |
显示认证信息 |
Caching |
|
Cookies |
显示所有cookies |
Raw |
显示Headers和Body数据 |
JSON |
若响应数据是json格式,以json形式显示响应内容 |
XML |
若响应数据是xml格式,以xml形式显示响应内容 |
AutoResponder选项
AutoResponder允许你拦截指定规则的求情,并返回本地资源或Fiddler资源,从而代替服务器响应。
Composer选项(常用)
Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求。常用于模拟GET和POST请求。
模拟GET请求
GET请求比较简单,接下来说下模拟POST请求。
模拟POST请求
这里模拟的是发送JSON数据,主要是需要在请求头设置下 Content-Type : application/json;charset=utf-8 ,然后在请求体里写上JSON数据。
如果发送普通文本数据的话,不需要设置请求头,默认的 Content-Type 是 application/x-www-form-urlencoded,表示普通的form表单元素提交,在发送前编码所有字符,提交的参数格式遵循:name=value&name=value&name=value...。也就是说要按照这种格式把数据写在请求体里。
请求结果
Fiddler Orchestra Beta选项
FiddlerScript选项
显示的是该请求的JS脚本。
Log选项
能够查看该次请求的日志。
Filters 选项(常用)
Fiters 是过滤请求用的,左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。这个时候通过过滤规则来过滤掉那些不想看到的请求。
勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host
Zone 指定只显示内网(Intranet)或互联网(Internet)的内容。
Host 可选择隐藏,展示,标记某个域名下的会话。
设定好后可点击Actions中的 Run Filterset now 来执行过滤条件。
Timeline 选项
Timeline显示请求响应时间,在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间。
Fiddler 命令行
命令行在左下角
FIddler断点功能就是将请求截获下来,但是不发送,这个时候你可以干很多事情,比如说,把包改了,再发送给服务器君。还有一大堆的事情可以做,就不举例子了。
命令 |
对应请求项 |
介绍 |
示例 |
---|---|---|---|
? |
All |
问号后边跟一个字符串,可以匹配出包含这个字符串的请求 |
|
> |
Body |
大于号后面跟一个数字,可以匹配出请求大小,大于这个数字请求 |
>1000 |
< |
Body |
小于号跟大于号相反,匹配出请求大小,小于这个数字的请求 |
<100 |
= |
Result |
等于号后面跟数字,可以匹配HTTP返回码 |
=200 |
@ |
Host |
@后面跟Host,可以匹配域名 |
@www.baidu.com |
select |
Content-Type |
select后面跟响应类型,可以匹配到相关的类型 |
select image |
cls |
All |
清空当前所有请求 |
cls |
dump |
All |
将所有请求打包成saz压缩包,保存到“我的文档Fiddler2Captures”目录下 |
dump |
start |
All |
开始监听请求 |
start |
stop |
All |
停止监听请求 |
stop |
断点命令 |
对应请求项 |
介绍 |
示例 |
bpafter |
All |
bpafter后边跟一个字符串,表示中断所有包含该字符串的请求 |
bpafter baidu(输入bpafter解除断点) |
bpu |
All |
跟bpafter差不多,只不过这个是收到请求了,中断响应 |
bpu baidu(输入bpu解除断点) |
bps |
Result |
后面跟状态吗,表示中断所有是这个状态码的请求 |
bps 200(输入bps解除断点) |
bpv / bpm |
HTTP方法 |
只中断HTTP方法的命令,HTTP方法如POST、GET |
bpv get(输入bpv解除断点) |
g / go |
All |
放行所有中断下来的请求 |
g |