1. 什么是Fiddler?

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。

通过Fiddle这个目前最常用的抓包工具之一,我们可以更加方便地在Web开发时进行Debug,像之前,进行ajax接口调试时,都要console.log打印,比较麻烦。用Fiddler就可以省事很多。

抓包工具,HTTP和HTTPS调试用Fiddler,涉及TCP、UDP等其它的就用Wireshark。

其实官网这个图就非常简单地说明了Fiddler可以用来做什么,Fiddler就充当了图中放大镜部分的作用,位于客户端和服务器端之前的HTTP代理。

它能够记录客户端和服务器之间获取到的所有HTTP请求,并且可以针对特定的HTTP请求,分析请求的数据,还能设置断点,修改请求的数据,甚至可以修改服务器返回的数据。

官网地址:http://www.telerik.com/fiddler

2. 使用

2.1 下载

到官网免费下载,需要填一下邮箱:

2.2 安装

直接安装,安装过程很无脑。

安装完后启动Fiddler,然后用浏览器随便打开一个网页,发现Fiddler已经开始工作了,左边为获取到的请求列表,点击查看详情后可以在右边查看到请求的详情;列表下面有个小黑框,是执行命令行用的。

2.3 配置

2.3.1 代理设置

打开Tools -> Options -> Connections,可以看到默认端口为8888,把Allow remote computers to connect勾上,允许其他电脑的连接。

Fiddler可以代理PC端的请求,也可以代理移动端的请求,只需要将手机网络设置中的HTTP代理设置为电脑的IP地址,端口为Fiddler的默认端口号8888即可。

2.3.2  配置捕获HTTPS

会弹出一个Trust the Fiddler Root certificate的确认,点击Yes信任证书即可。

2.4 分析

2.4.1 性能数据分析(Statistics)

右侧第一个指标,Statistics,可以看到关于HTTP请求的性能以及数据分析,以及饼图。

2.4.2 会话内容(Inspectors)

Inspectors是用于查看会话的内容,上半部分是请求的内容(Request),下半部分是响应的内容(Response),可以查看header,json,text等等,选择就可以。

2.4.3 自动响应(AutoResponder)

AutoResponder允许你拦截指定规则的请求,并自动返回本地资源或Fiddler资源,从而代替服务器响应。

比如,正常打开百度是这样的:

我们在AutoResponder设置一条简单的规则,将baidu绑定到我本地的一张图片:

这个时候再打开百度,就被拦截下来了,并返回了我设置好的这张图片:

2.4.4 自定义请求发送服务器(Composer)

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

输入一个url地址既可以模拟请求,也可以填写一些其它属性。

2.4.5 日志(Log)

Log部分可以看到Fiddler的运行日志

2.4.6 请求过滤(Filters)

通过设置Filters设置规则来过滤掉一些请求;点击Use Filters开启功能,第一个框Hosts设置里,可以设置本地还是局域网,设置域名的过滤;下面还有一些更具体的设置。

2.4.7 请求响应时间线(Timeline)

2.5 命令使用

列表下面的黑色框框,可以输入命令进行操作:

2.1 基本命令

命令 对应请求项 介绍 示例
? All 问号后边跟一个字符串,可以匹配出包含这个字符串的请求 ?google
> Body 大于号后面跟一个数字,可以匹配出请求大小,大于这个数字请求 >1000
< Body 小于号跟大于号相反,匹配出请求大小,小于这个数字的请求 <100
= Result 等于号后面跟数字,可以匹配HTTP返回码 =200
@ Host @后面跟Host,可以匹配域名 @www.baidu.com
select Content-Type select后面跟响应类型,可以匹配到相关的类型 select image
cls All 清空当前所有请求 cls
dump All 将所有请求打包成saz压缩包,保存到“我的文档\Fiddler2\Captures”目录下 dump
start All 开始监听请求 start
stop All 停止监听请求 stop

2.2 断点命令(进行断点测试)

命令 对应请求项 介绍 示例
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

例如,运行命令bpu www.gzpblog.com,然后打开www.gzpblog.com,发现直接被怼掉:

我们看下这个请求,这个时候可以输入要传入的数据,然后可以选择黄色button断掉,或者绿色button继续加载:

点击绿色Run to Completion,就开始加载了:

有可能会挡掉下载的很多请求,我们可以运行go放行所有中断下来的请求。