Fiddler使用介绍
目录
一、Fiddler工作原理
Fiddler以代理Web服务器形式工作,可以拦截所有的Request和Response。使用代理地址:127.0.0.1,端口:8888。当Fiddler退出时会自动注销代理,以免影响其他程序。如果非正常退出,则需要重启Fiddler解决。
二、Fiddler如何捕获Firefox的会话
能支持HTTP代理的任意程序的数据包都能被Fiddler嗅探到,其运行本质是监听8888端口的http代理。Fiddler启动时默认将IE的代理设置为127.0.0.1:8888,而其他浏览器需要手工设置。所以在Firefox浏览器中手动将浏览器的代理设置成127.0.0.1:8888便可监听数据。代理如何设置,这里不再介绍。
三、捕获HTTPS会话
Fiddler默认不会捕获HTTPS会话,需要手动设置,打开Fiddler Tool→Fiddler Options→HTTPS TAB,勾选上对应的选项即可,如图:
四、Fiddler使用界面
Fiddler界面包括菜单栏、工具栏、会话列表、命令行工具、以及详细信息。其中详细信息包含统计Statistics、Inspectors、AutoResponder、Filters、Log、Timeline等。
1、统计视图Statistic陈列出所有HTTP通信,可以通过选择多个会话得出这些会话的总的统计信息,比如多个请求和传输的数据大小、时间等各种信息,可以很方便得出哪些请求比较耗时,从而对页面进行访问速度优化,如下图:
五、Fiddler中设置断点
Fiddler最强大的功能莫过于修改断点,设置好断点后可以修改HttpRequest的任何信息,包括Host、Cookie或者表单中的数据。设置断点的方法有两种:
1、菜单中点击Rules→Automatic Breakpoint→Before Requests(这种方法会终止所有会话),清除的方法是Rules→Automatic Breakpoint→Disabled;
2、在命令行输入:bpu(设置response断点使用bpuafter) www.baidu.com(只会中断www.baidu.com),消除命令的方法是命令行输入bpu。
实例:
1. 用IE 打开百度的登录框 http://www.baidu.com;
2. 打开Fiddler, 在命令行中输入bpu https://passport.baidu.com/v2/api/?login;
3. 输入错误的用户名和密码,点击登录;
4. Fiddler 能中断这次会话,选择被中断的会话,点击Inspectors tab下的WebForms tab 修改用户名密码,然后点击Run to Completion,会发现页面登陆成功。
六、创建AutoResponder
创建Fiddler的AutoResponder是最常用的功能,它允许从本地返回文件,而不用将请求发送到服务器上。看个例子:
1. 打开百度首页,把百度的logo图片保存到本地,并且对图片做些修改;
2. 打开Fiddler找到logo图片的会话:http://www.baidu.com/img/baidu_sylogo1.gif,并将此回话拖动到AutoResponder Tab下;
3. 选择Enable automatic reaponses 和Unmatched requests passthrough;
4. 在下面的Rule Editor 下面选择 Find a file... 选择本地保存的图片. 最后点击Save 保存下。
七、Fiddler会话过滤
每次使用Fiddler, 打开一个网站,都能在Fiddler中看到几十个会话,看得眼花缭乱。最好的办法是过滤掉一些会话,比如过滤掉图片的会话。Fiddler中有过滤的功能, 在右边的Filters tab中,里面有很多选项, 稍微研究下,就知道怎么用。
八、会话比较功能
选中2个会话,右键然后点击Compare,就可以用WinDiff来比较两个会话的不同了(需要安装WinDiff)
九、QuickExec命令行的使用技巧
Fiddler界面左下角提供命令行工具,允许直接输入命令。
1、可用于命令行的快捷方式有:
ALT+Q:快速将光标移动到命令行中;
CTRL+ALT+F:将Fiddler窗口快速置顶;
CTRL+I:快速将最后选择的会话URL插入到命令行中;
2、命令有以下这些(由Fiddler官网翻译而来):
命令 | 描述 | 实例 |
?sometext | 按下Enter键后快速定位到含有sometext字符串的URL,并高亮显示 | ?searchtext |
>size | 选择response体积大于size的请求 | >40000 <-- 选择大于40Kb的response |
<size | 选择response体积小于size的请求 | <5k <--选择大于40Kb的response |
=status =method | 选择指定status与请求方法的请求 | =301 <-- 选择301响应的请求 =POST <-- 选择为POST方法的请求 |
@host | 删选主机包含host的请求 | @msn.com <-- Select www.msn.com, login.msn.com, etc |
bold | 标记url包含目标字符串的sessions列表 | bold /bar.aspx bold <-- 不传递参数则会取消 |
bpafter | 当请求的URI包含指定的字符串,中断任意响应 | bpafter /favicon.ico bpafter <--不传递参数则会取消 |
bps | 当状态码匹配是,中断任意的响应 | bps 404 bps <--不传递参数则会取消 |
bpv or bpm | 对请求的方法(POST/GET)创建请求断点。使用无参数的bpv指令,清除断点 | bpv POST bpv <--不传递参数则会取消 |
bpu | 对URI创建一个请求中断,该URI可以包含特定的字符串。使用无参数的bpu指令,清除断点 | bpu /myservice.asmx bpu <--不传递参数则会取消 |
cls or clear | 清空会话列表 | cls |
dump | dump all sessions to a zip archive in C:\ | dump |
g or go | 重置sessions里的所有断点响应 | g |
help | 显示帮助页面 | help |
hide | 将Fiddler隐藏到系统托盘中 | hide |
urlreplace | 用指定的字符替换请求中指定的字符,使用这个命令将会取消之前设定的命令。不传递参数则会取消命令 | urlreplace SeekStr ReplaceWithStr urlreplace <--不传递参数则会取消 |
start | 注册一个新的系统代理 | start |
stop | 停止指定的系统代理 | stop |
show | 恢复Fiddler在系统托盘中的隐藏 | show |
select MIME | 选择任何响应头包含此字符的会话 | select image select css select htm |
allbut or keeponly | Hide all sessions except those where Content-Type header contains the specified string. | allbut xml allbut java |
quit | 退出Fiddler | quit |
!dns hostname | 执行目标主机的DNS查找日志,并在LOG选项卡上显示结果 | !dns www.example.com
!nslookup www.example.com |
!listen PORT [CERTHOSTNAME] | 设置监听其他端口的监听, optionally secured by a HTTPS certificate | !listen 8889
!listen 4443 localhost
!listen 444 secure.example.com |
参考文档:http://kb.cnblogs.com/page/130367/#introduce
Fiddler官方帮助文档:http://www.fiddler2.com/fiddler/help