Fiddler本身是用来做web debugging的工具。其具体的介绍和更多的使用方法请参考知识库中以下文章:
Fiddler—Web调试代理工具
在线调试JavaScript和CSS
本文将详细介绍如何通过fiddler2录制http操作请求的脚本。
为了只保留操作过程中的关键请求数据,我们需要自定义fiddler的过滤项。
完整的录制步骤如下:
打开fiddler2,此时后台会启动一个代理服务器。此后所有的http请求都会经过此代理服务器进行请求转发。
配置fiddler2过滤项。 1:首先需要只保留fiddler对浏览器请求的捕捉。点击左下角处的”All processes”变成”Web Browers”即可。这样fiddler就只捕捉或Firefox的请求 2:指定默认的Rules。在fiddler的菜单栏中选择”Rules”,弹出下拉列表后,选择以下三项:”Hide Image Requests”,”Remove All Encodings”,”Hide 304s”. 自定义过滤规则。由于目前的平台4.0系统中存在有大量的循环或显示用的请求,因此还需要自定义过滤规则。 3:选择”Rules”—>”Customize Rules”,在弹出的文本文件中进行修改和补充后,自定义规则即时生效。或者使用Rules插件进行修改. 在该文件中找到static function OnBeforeRequest(oSession: Session),OnBeforeResponse方法,增加相应的过滤规则,就会相应的过滤请求。 以下为OnBeforeRequest中增加的过滤条件.附件为一修改后的脚本CustomRules.js 该文件位于C:\Documents and Settings\username\My Documents\Fiddler2\Scripts //过滤请求不显示到界面上. if(oSession.HTTPMethodIs(“GET”)){ oSession["ui-hide"] = “true”; } else{ if (oSession.uriContains(“BootAndPtStatus.do”)){ oSession["ui-hide"] = “true”; }if (oSession.uriContains(“Alarmlog.do”)){
oSession["ui-hide"] = “true”; }if (oSession.uriContains(“SystemRun.do”)){
oSession["ui-hide"] = “true”; }}保存脚本。在左侧的请求序列中,选择需要保存的请求数据后,点击右键在弹出的界面中,选择”Save “->”Sessions”->”As Text”.这样选中的请求就会以文本形式保存。
下面为保存的已录制脚本数据.该脚本中包含三个步骤的操作:登陆->强制登陆–>登出
POST /login.dof?action=userLogin HTTP/1.1
Accept: */* Accept-Language: zh-cn Referer: http://192.168.19.2:8080/login.html x-requested-with: XMLHttpRequest Content-Type: application/x-www-form-urlencoded; charset=UTF-8 UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Host: 192.168.19.2:8080 Content-Length: 30 Connection: Keep-Alive Pragma: no-cache Cookie: JSESSIONID=C404BA0368933D32FA08A5EF1BAE2D49username=admin&password=123456
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/json;charset=utf-8 Date: Mon, 16 Mar 2009 02:32:47 GMT Content-Length: 132{“success”:false,”errors”:{“exception”:”"},”isgrab”:”[admin]正在被IP= [192.168.12.154]的用户使用中,是否抢占登录?”}
——————————————————————
POST /login.force?action=userLogin HTTP/1.1
Accept: */* Accept-Language: zh-cn Referer: http://192.168.19.2:8080/login.html x-requested-with: XMLHttpRequest Content-Type: application/x-www-form-urlencoded; charset=UTF-8 UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Host: 192.168.19.2:8080 Content-Length: 30 Connection: Keep-Alive Pragma: no-cache Cookie: JSESSIONID=C404BA0368933D32FA08A5EF1BAE2D49username=admin&password=123456
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=FD32F2962420B7BA72A1BAD3ACBEB616; Path=/ Content-Type: text/json;charset=utf-8 Date: Mon, 16 Mar 2009 02:32:50 GMT Content-Length: 44{“success”:true,”message”:”操作成功!”}
——————————————————————
POST /logout.dof?action=logout HTTP/1.1
Accept: */* Accept-Language: zh-cn Referer: http://192.168.19.2:8080/index.html x-requested-with: XMLHttpRequest UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 1.7; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) Host: 192.168.19.2:8080 Content-Length: 0 Connection: Keep-Alive Pragma: no-cache Cookie: JSESSIONID=FD32F2962420B7BA72A1BAD3ACBEB616HTTP/1.1 200 OK
Server: Apache-Coyote/1.1 Content-Type: text/json;charset=utf-8 Date: Mon, 16 Mar 2009 02:33:00 GMT Content-Length: 59{“success”:false,”errors”:{“sessionout”:true,”outinfo”:”"}}
Fiddler 具有强大的分析、编码解码(带有一个编码解码工具)、伪装(可动态伪装为任意主流浏览器)等能力。
支持 GZIP 压缩,支持 IPv6,从 2.* 版本开始支持 HTTPS 协议以并可进行动态解密。 支持图像,XML 以及网页表单数据查看。 带有过滤器,方便过滤无关结果。还有“时间线”可以查看收到数据的先后顺序及总耗时。 还带有“请求生成器”可发送自定义数据到服务器。特有的“自动应答”功能可以直接拦截并处理来自浏览器的特定请求而不发送到服务器。 支持插件(扩展),可自定义规则(语法为 JavaScript),甚至设置断点。 不过,目前动态捕获功能似乎只适用于基于 内核的浏览器。 最后,此软件完全免费。我已经用了好几个月,稳定性还是不错的。下载:
2.* 稳定版本:http://www.fiddler2.com/dl/Fiddler2Setup.exe 2.* 测试版本(较新):http://www.fiddler2.com/dl/Fiddler2BetaSetup.exe 在线帮助及视频教程:http://www.fiddler2.com/Fiddler/help/ 官方扩展列表:http://www.fiddler2.com/Fiddler2/extensions.asp 系统要求: Windows 2000 / XP / 2003 / Vista 操作系统, Microsoft .NET Framework v2.0 或更高版本