Fiddler在处理每个session时,脚本文件CustomRules.js中的方法都会运行,这些脚本可以使你任意修改复杂的session。 通常,使用的比较多的全都是用脚说起来应该修改请求或响应
两个重要的函数
OnBeforeRequest
请求经过Fiddler发送给服务器之前会先调用这个函数,因此,如果想要修改请求,可以写在这个函数里
OnBeforeResponse
从服务器读完响应后,且在将响应发送给客户端之前执行的。 通过修改这个函数,可以修改服务器的响应头或者响应体
一、、修改请求的显示样式
在Fiddler的FiddlerScript里面有一个Go to下拉框,可以选择OnBeforeRequest,然后定位到该方法里面,其中,如下Fiddler给出的一个脚本示例
if(oSession.uriContains(".aspx")){ oSession["ui-color"]="red";}
意思很明白,就是当请求中含有.aspx,将请求的颜色置为红色,根据示例,我们可以自己写一些其他的脚本,例如:
if(oSession.uriContains("sogou")){ oSession["ui-backcolor"]="green";}
修改之后点击FiddlerScript左上角的Save Script进行保存,访问搜狗的任意网站,就能看到这些包含sogou的请求的背景色被设置为绿色,相应的,也可以修改ui-bold使字体加粗
二、修改请求
客户端发请求 http://www.sogou.com?c=XXX,其中,c=0,1。 c=0在客户端能够模拟,但是c=1没办法在客户端模拟,这时,借助Fiddler就可以达到修改请求的目的
if(oSession.uriContains("sogou")){
oSession.url = "www.sogou.com?c=1";
}
三、、切换HOST请求头
当Fiddler接收到URL和Host请求头不匹配时,会在session的X-Original-Host标记中保存原始的Host值,然后用从URL解析到的Host 替换它。 下面这段脚本会把请求发到原始Host请求头中指定的Host
if (oSession.BitFlags & SessionFlags.ProtocolViolationInRequest){
var sOverride = oSession["X-Original-Host"];
if (!String.IsNullOrEmpty(sOverride)){
oSession["X-overrideHost"] = sOverride;
oSession["ui-backcolor"] = "yellow";
}
}
四、、隐藏返回图像的session
if (oSession.oResponse.MIMEType.Contains("image"))
{
oSession["ui-hide"] = "Script hiding images";
}