修改请求或响应

修改请求或响应

要自定义更改web请求和响应,使用FiddlerScript来添加规则提琴手的OnBeforeRequestOnBeforeResponse函数。哪个函数合适取决于代码使用的对象: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, ' ') + "
Baidu
";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文件夹加载的文件响应请求(可放置在OnBeforeRequestOnBeforeResponse函数)

if (ossession . pathandquery =="/version1.css") {ossession ["x-replywithfile"] ="version2.css";}
在本文中
Baidu
map