修改请求或响应
修改请求或响应
要自定义更改web请求和响应,使用FiddlerScript来添加规则提琴手的OnBeforeRequest或OnBeforeResponse函数。哪个函数合适取决于代码使用的对象:OnBeforeRequest在每个请求之前调用OnBeforeResponse在每个响应之前调用。注意:
- 它是不可能的来访问内部的响应对象OnBeforeRequest因为它们还没有被创造出来。
- 它是可能的来使用请求内部的对象OnBeforeResponse;但是,您对这些对象所做的任何更改都不会被服务器看到,因为它已经收到了请求。
添加请求头
oSession。request ["NewHeaderName"] = "新报头值";
删除响应头
oSession.oResponse.headers.Remove (set - cookie”);
将对一个页面的请求更改为同一服务器上的另一个页面
if (ossession . pathandquery =="/version1.css") {ossession . pathandquery ="/version2.css";}
将对一台服务器的所有请求指向另一台服务器上的相同端口
if (oSession.HostnameIs("www.bayden.com")) {oSession.hostname="test.bayden.com";}
将对一个端口的所有请求指向不同服务器上的不同端口
if (oSession.host=="www.bayden.com:8080") {oSession.host="test.bayden.com:9090";}
将对一台服务器的所有请求指向另一台服务器,包括HTTPS隧道
//重定向流量,包括HTTPS隧道if (session . httpmethodis ("CONNECT") &&PathAndQuery == "www.example.com:443")) {session。PathAndQuery = "beta.example.com:443";} if (ossession . hostnameis ("www.example.com")) ossession。主机名= "beta.example.com";
通过将一个主机名指向不同的IP地址,模拟Windows HOSTS文件。(重新定位而不改变请求的主机头)
//所有对subdomain.example.com的请求都应该定向到128.123.133.123的开发服务器if (oSession.HostnameIs("subdomain.example.com")){oSession。bypassGateway = true;//阻止此请求通过上游代理session ["x-overrideHost"] = "128.123.133.123";//目标服务器的DNS名称或IP地址}
将单个页面的请求重新定向到不同的页面,可能在不同的服务器上。(通过更改请求的主机标头来重新定位)
if (session .url=="www.example.com/live.js") {session .urlUrl = "dev.example.com/workinprogress.js";}
防止上传HTTP cookie
oSession.oRequest.headers.Remove(“饼干”);
解压缩并解块HTTP响应,如果需要的话更新报头
//从响应中删除任何压缩或分块,以便更容易操作session . utildecoderresponse ();
在HTML中搜索和替换。
if (session . hostnameis ("www.bayden.com") && session . response .headers. existsandcontains ("Content-Type","text/html")){session . utildecoderresponse ();oSession.utilReplaceInResponse (< b >, < u >);}
不区分大小写搜索响应HTML。
如果(oSession.oResponse.headers。ExistsAndContains("Content-Type", "text/html") && session。utilFindInResponse("searchfor", false)>-1){oSession["ui-color"] = "red";}
删除所有DIV标签(以及DIV标签内的内容)
//如果content-type是HTML,那么删除所有的DIV标签。ExistsAndContains("Content-Type", "html")){//删除任何压缩或分块操作session . utildecoderresponse ();var oBody = System.Text.Encoding.UTF8.GetString(session . responsebodybytes);//将DIV标签的所有实例替换为空字符串var oRegEx = /< DIV [^>]*>(.*?)<\/ DIV >/gi;oBody = oBody。替换(oRegEx”、“);//将响应体设置为无div字符串ossession . utilsetresponsebody (oBody);}
假设你的浏览器是GoogleBot网络爬虫
oSession.oRequest(“用户代理”)= " Googlebot / 2。X (+ http://www.googlebot.com/bot.html)”;
请求希伯来语内容
oSession.oRequest(“接收语言”)=“他”;
拒绝。css请求
if (oSession. uriconcontains (".css")){oSession["ui-color"]="orange";oSession[“ui-bold”]= " true ";oSession.oRequest。FailSession(404, "Blocked", "Fiddler Classic Blocked CSS文件");}
模拟HTTP基本认证(要求用户在显示web内容之前输入密码)
如果((session . hostnameis ("www.example.com")) && ! session . orequest .headers. exists ("Authorization")){//防止IE的"Friendly Errors Messages"通过使响应体长度大于512字符来隐藏错误消息。var oBody = "[提琴手]需要身份验证。
"。PadRight(512, ' ') + "";oSession.utilSetResponseBody (oBody);//建立报头session . response .headers. httpresponsecode = 401;session . response .headers. httpresponsestatus = "401 Auth Required";oSession。response ["WWW-Authenticate"] = "基本领域=\"Fiddler Classic(只需点击Ok)\";oResponse.headers。Add(“内容类型”,“text / html”);}
使用从\ capture \Responses文件夹加载的文件响应请求(可放置在OnBeforeRequest或OnBeforeResponse函数)
if (ossession . pathandquery =="/version1.css") {ossession ["x-replywithfile"] ="version2.css";}