Fiddler 包含了一个脚本文件可以自动修改Http Request 和Response.这样我们就不需要手动地下"断点"去修改了,
实际上它是一个脚本文件CustomRules.js
位于: C:\Documents and Settings\[your user]\My Documents\Fiddler2\Scripts\CustomRules.js 下
你也可以在Fiddler 中打开CustomRules.js 文件, 启动Fiddler, 点击菜单Rules->Customize Rules...
Fiddler Script 的官方帮助文档必须认真阅读, 地址是:http://www.fiddler2.com/Fiddler/dev/ScriptSamples.asp
我从来没听说过JScript.NET语言,可能是JScript的升级版吧。 写起来有点类似C#
你可以直接用notepadCustomRules.js文件,
强烈推荐下载 Fiddler Script Editor 地址是: http://www.fiddler2.com/fiddler/fse.asp
Fiddler Script Editor 提供了语法高亮,以及智能提示的功能, 如下图:
// 在这个方法中修改Request的内容, 我们用得最多,
static function OnBeforeRequest(oSession: Session)
// 在这个方法中修改Response的内容,
static function OnBeforeResponse(oSession: Session)
// 在个方法中包含Fiddler 命令。 在Fiddler界面中左下方的QuickExec Box
static function OnExecAction(sParams: String[])
Fiddler可以模拟各种浏览器,你可以通过点击菜单 Rules->User-Agents
不过好像没有Iphone 4S safari 的, 我们现在添加一个。 先查询在网上Iphone 4S safari 的user-Agents, 然后添加如下代码代码就可以了
RulesStringValue(23, "Iphone 4S safari", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7")
保存脚本, 重启Fiddler就可以看到菜单中多了个Iphone 4s
你可以把你常用的操作,都定义成一个menu,
我们可以控制Session在Fiddler中显示的样式, 具体文档是: http://www.fiddler2.com/Fiddler/dev/SessionFlags.asp
把这段脚本放在OnBeforeRequest(oSession: Session) 方法下,并且点击"Save script", 这样所有的cnblogs的会话都会显示红色.
if (oSession.HostnameIs("www.cnblogs.com")) {
oSession["ui-color"] = "red";
}
运行效果如
cookie其实就是request 中的一个header.
// 删除所有的cookie
oSession.oRequest.headers.Remove("Cookie");
// 新建cookie
oSession.oRequest.headers.Add("Cookie", "username=testname;testpassword=P@ssword1");
注意: Fiddler script不能直接删除或者编辑单独的一个cookie, 你需要用replace方法或者正则表达式的方法去操作cookie的string
static function OnBeforeRequest(oSession: Session) { if (oSession.HostnameIs('www.example.com') && oSession.uriContains('pagewithCookie') && oSession.oRequest.headers.Contains("Cookie")) { var sCookie = oSession.oRequest["Cookie"]; // 用replace方法或者正则表达式的方法去操作cookie的string sCookie = sCookie.Replace("cookieName=", "ignoreme="); oSession.oRequest["Cookie"] = sCookie; }
方法一:
static function OnBeforeRequest(oSession: Session) { if(oSession.uriContains("http://www.cnblogs.com/TankXiao/")) { // 获取Request 中的body字符串 var strBody=oSession.GetRequestBodyAsString(); // 用正则表达式或者replace方法去修改string strBody=strBody.replace("1111","2222"); // 弹个对话框检查下修改后的body FiddlerObject.alert(strBody); // 将修改后的body,重新写回Request中 oSession.utilSetRequestBody(strBody); } }
方法二: 提供了一个非常简单的方法,可以直接替换body中的数据
oSession.utilReplaceInRequest("1111", "2222");