目录
前言:之前总结过关于使用断点的方式可以修改请求、修改响应
零、首先,看一下界面
一、Fiddler定制菜单(User-Agents)
二、特殊的http请求在Fiddler中特殊显示、特殊设置断点
三、修改HTTP请求(cookie、替换host地址、header、body)
3.1 cookie的修改
3.2 替换host地址
3.3 header的修改
3.3.1修改referer
3.4修改body内容
四、修改HTTP响应(body)
前言:之前总结过关于使用断点的方式可以修改请求、修改响应
现在是使用FiddlerScript的方式,编写脚本进行修改;在FiddlerScript中主要是CustemRule.js;其中,OnBeforeRequest函数在每次请求之前调用;OnBeforeResponse函数在每次响应之前调用;分别在这两个方法中修改请求、响应的值;
备注,在FiddlerScript,都是以oSession作为对象,调取方法,而且都是有提示的;
零、首先,看一下界面
一、Fiddler定制菜单(User-Agents)
Fiddler中,可以模拟各种浏览器;在菜单【Rules -> User-Agents】中,可以看到有很多浏览器可供选择;里面可能没有你需要的,举例:user-Agents中添加iPhone4S safari;
首先,百度一下iPhone4S safari的user-Agents;
结果:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7
步骤二:在FiddlerScript选项卡中,添加:
RulesStringValue(5,"iPhone4s", "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7")
再次进入菜单【Rules -> User-Agents】,就可以看到我们刚刚添加的【iPhone4s】;
二、特殊的http请求在Fiddler中特殊显示、特殊设置断点
有时候,我们需要对特别的请求有特别的标注、或者设置断点,通过bpu url的方式设置单个断点可以,但是在这里FiddlerScript可以根据url中包含的特殊字符来设置断点;同时,在 OnBeforeRequest(oSession: Session)函数中,里面有举例sampler;例如使用颜色、字体来对特别的Session进行标注;
//设置颜色:
if (oSession.uriContains("73910")) { oSession["ui-color"] = "red"; }
// Sample Rule: Flag POSTs to fiddler2.com in italics(设置斜体)
if (oSession.HostnameIs("blog.csdn.net") && oSession.HTTPMethodIs("POST")) { oSession["ui-italic"] = "yup"; }
// Sample Rule: Break requests for URLs containing "/sandbox/"(设置断点)
if (oSession.uriContains("/api/")) {
oSession.oFlags["x-breakrequest"] = "yup"; // Existence of the x-breakrequest flag creates a breakpoint; the "yup" value is unimportant(后面的值不重要).
}
下面截图:
三、修改HTTP请求(cookie、替换host地址、header、body)
3.1 cookie的修改
if(oSession.uriContains("maoniuchuxing")){
//1.删除所有的cookie
oSession.oRequest.headers.Remove("Cookie");
//2.新建cookie
oSession.oRequest.headers.Add("Cookie","JSESSIONID=f682ff50-e961-428d-bc22-110");
//3.修改Cookie.不能删除或编辑单独的一个cookie,需要替换cookie字符串
var oldCookie = oSession.oRequest["Cookie"];
oldCookie=oldCookie.Replace("cookieName=","ignoreme=");
oSession.oRequest["Cookie"]=oldCookie;
//4.全新的cookie
var newCookie ="iThing";
oSession.oRequest["Cookie"]=newCookie;
}
注意:上面的内容也可写在OnBeforeResponse函数里面
抓包结果:
3.2 替换host地址
if(oSession.HostnameIs("xxxx.com")){
oSession.hostname="www.baidu.com";
}
如果写在OnBeforeResquest函数里面,直接访问对应的host对应的uri;
上面的内容也可写在OnBeforeResponse函数里面,那样就是下面的截图结果:
抓包结果:
3.3 header的修改
if(oSession.uriContains('csdn')){
//添加header
oSession.oRequest.headers.Add("iThing","ihing");
oSession.oRequest.headers.Add("iThing111","ihing");
//删除header
oSession.oRequest.headers.Remove("iThing111");
//修改Referer
oSession.oRequest["Referer"]="www.csdn.net/test";
}
抓包结果:uri中包含“api”字段的,cookie全部变了:
3.3.1修改referer
抓包结果:
3.4修改body内容
3.4.1:方式一:
if(oSession.uriContains("api")){
oSession.utilDecodeRequest();
//获取request中的body字符串
var strBody=oSession.GetRequestBodyAsString();
//用正则表达式或者replace方法修改string
strBody=strBody.Replace("article","iThingok");
//弹个对话框检查下修改后的body
FiddlerObject.alert(strBody);
//将修改后的body,重新写会request中
oSession.utilSetRequestBody(strBody);
}
抓包结果:
将其放置在onbeforeresponse()函数中也可替换响应body,只需修改一下里面的方法(如:utilReplaceInRequest,换成utilReplaceInResponse);
3.4.2 方式二(就不截图了):
//直接替换body数据
if(oSession.uriContains("api")){
oSession.utilReplaceInRequest("article","iThingok");
}
四、修改HTTP响应(body)
上面的方式其实放到onbeforeresponse()函数中,也可以有不同的效果;下面就简单说一下响应body的方式,也是两种:
if(oSession.uriContains("api")){
oSession.utilDecodeResponse();
//获取request中的body字符串
var strBody=oSession.GetResponseBodyAsString();
//用正则表达式或者replace方法修改string
strBody=strBody.Replace("ok","iThing ok");
//弹个对话框检查下修改后的body
FiddlerObject.alert(strBody);
//将修改后的body,重新写会Response中
oSession.utilSetResponseBody(strBody);
}
//直接替换body数据
if(oSession.uriContains("api")){
oSession.utilReplaceInResponse("article","iThingok");
}
这里就不分别截图了,只截图一张,抓包结果: