博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FiddlerScript学习一:改动Request或Response
阅读量:7055 次
发布时间:2019-06-28

本文共 5268 字,大约阅读时间需要 17 分钟。

前两天因项目须要,简单看了一下FiddlerScript,功能挺强的。今天有时间细致看一下,做个笔记。

改动Request或Response

改动Request和Response要在FiddlerScript中的OnBeforeRequest和OnBeforeResponse函数中加入规则就可以。OnBeforeRequest函数是在每次请求之前调用。OnBeforeResponse函数是在每次响应之前调用。

1、加入请求头Header

oSession.oRequest["NewHeaderName"] = "New header value";
2、删除Response的Header

oSession.oResponse.headers.Remove("Set-Cookie");
3、将请求从一个页面转发到同一Server上的还有一页面

if (oSession.PathAndQuery=="/hello/hello.html") {      oSession.PathAndQuery="/hello/index.html";    }
注意:oSession.PathAndQuery的值为fiddler中session列表中的Url:

即图中红色标注出来的部分。图中黄色标注出来的部分有点特殊。host为Tunnel to ,url为还有一host。

查看该请求的Header为:

这样的特殊情况会在以下还有样例。

上面的样例,拦截请求地址为/hello/hello.html的请求,并将其转发到同样Server的/hello/index.html

4、将请求转发到同样port号的不同server(改动请求的Host)

if(oSession.HostnameIs("www.baidu.com")){      oSession.hostname = "www.sina.com.cn";}

 

这个样例是将发送到百度的请求转发到新浪。则会提示页面不存在。

这里仅仅是改变了host,并不改变后面的地址。因此。假设在新浪上不存在对应的页面。如以下图片所看到的:

假设我訪问的是例如以下地址:http://www.baidu.com/link?url=CQuVpjo9u9UQADcstwECPEmrziPMk5u5H9PlRN2TbWLkKZaxafVER2X8OEYzovr-yasX2Fwcgj0NANBtKVj0gN78jNJ3bXTmIsTeBk7hXem

则结果例如以下:(该页面实际是存在的,是百度搜索出来的结果页面,被fiddler转发到新浪。可是新浪上不存的此页面)

5、将请求转发到不同port号,不同Server

if (oSession.host=="192.168.0.70:8080") {      oSession.host="192.168.0.69:8020";    }
这个样例是将发送到192.168.0.70:8080的请求转发到192.168.0.69:8020,这里仅仅是改变host。并不改变后面的请求地址。比如,做以上的规则后。我请求的是:

http://192.168.0.70:8080/hello/hello.html

而实际我项目部署到的是:192.168.0.69:8020

6、将全部请求从一个server转发到还有一个server,包含Https

// Redirect traffic, including HTTPS tunnels    if (oSession.HTTPMethodIs("CONNECT") && (oSession.PathAndQuery == "www.example.com:443")) {         oSession.PathAndQuery = "beta.example.com:443";     }    if (oSession.HostnameIs("www.example.com")) oSession.hostname = "beta.example.com";

7、Simulate the Windows HOSTS file, by pointing one Hostname to a different IP address. (Retargets without changing the request's Host header)

// All requests for subdomain.example.com should be directed to the development server at 128.123.133.123    if (oSession.HostnameIs("subdomain.example.com")){    oSession.bypassGateway = true;                   // Prevent this request from going through an upstream proxy    oSession["x-overrideHost"] = "128.123.133.123";  // DNS name or IP address of target server    }
8、Retarget requests for a single page to a different page, potentially on a different server. (Retargets by changing the request's Host header)

if (oSession.url=="www.example.com/live.js") {      oSession.url = "dev.example.com/workinprogress.js";    }
9、Prevent upload of HTTP Cookies

oSession.oRequest.headers.Remove("Cookie");
10、Decompress and unchunk a HTTP response, updating headers if needed

// Remove any compression or chunking from the response in order to make it easier to manipulate    oSession.utilDecodeResponse();
11、Search and replace in HTML.

if (oSession.HostnameIs("www.bayden.com") && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){      oSession.utilDecodeResponse();      oSession.utilReplaceInResponse('','');    }
12、Case insensitive Search of response HTML.

if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "text/html") && oSession.utilFindInResponse("searchfor", false)>-1){      oSession["ui-color"] = "red";    }
13、Remove all DIV tags (and content inside the DIV tag)

// If content-type is HTML, then remove all DIV tags    if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){      // Remove any compression or chunking      oSession.utilDecodeResponse();      var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);      // Replace all instances of the DIV tag with an empty string      var oRegEx = /
]*>(.*?

)<\/div>/gi; oBody = oBody.replace(oRegEx, ""); // Set the response body to the div-less string oSession.utilSetResponseBody(oBody); }

14、Pretend your browser is the GoogleBot webcrawler

oSession.oRequest["User-Agent"]="Googlebot/2.X (+http://www.googlebot.com/bot.html)";
15、Request Hebrew content

oSession.oRequest["Accept-Language"]="he";
16、Deny .CSS requests

if (oSession.uriContains(".css")){     oSession["ui-color"]="orange";      oSession["ui-bold"]="true";     oSession.oRequest.FailSession(404, "Blocked", "Fiddler blocked CSS file");    }
17、Simulate HTTP Basic authentication (Requires user to enter a password before displaying web content.)

if ((oSession.HostnameIs("www.example.com")) &&      !oSession.oRequest.headers.Exists("Authorization"))     {    // Prevent IE's "Friendly Errors Messages" from hiding the error message by making response body longer than 512 chars.    var oBody = "[Fiddler] Authentication Required.
".PadRight(512, ' ') + ""; oSession.utilSetResponseBody(oBody); // Build up the headers oSession.oResponse.headers.HTTPResponseCode = 401; oSession.oResponse.headers.HTTPResponseStatus = "401 Auth Required"; oSession.oResponse["WWW-Authenticate"] = "Basic realm=\"Fiddler (just hit Ok)\""; oResponse.headers.Add("Content-Type", "text/html"); }
18、Respond to a request with a file loaded from the \Captures\Responses folder (Can be placed in OnBeforeRequest or OnBeforeResponse function)

if (oSession.PathAndQuery=="/version1.css") {      oSession["x-replywithfile"] ="version2.css";    }
以上样例我并没有都实践。仅仅实践了中间几个地址转发的,由于如今须要用。剩下的请大家有须要的自己实践吧。

你可能感兴趣的文章
FileWriter写数据
查看>>
【Andorid X 项目笔记】TextView字幕效果(3)
查看>>
HDU 1002
查看>>
练习markdown语法
查看>>
python 制作自定义包并安装到系统目录
查看>>
大文件排序问题
查看>>
php实现rar文件的读取和解压
查看>>
2014年天津市第一批科技计划项目
查看>>
@芥末的糖 ---------- node连接数据库两种方式mysql和moogoDB
查看>>
MongoDB 学习笔记2----条件操作符
查看>>
关于Hibernate5.x的那点事
查看>>
sk-learn 选择正确的估算器
查看>>
python操作mysql数据库
查看>>
erp的核心代码,替代orm
查看>>
字符串--manacher算法(回文串匹配)
查看>>
[LeetCode]: 242: Valid Anagram
查看>>
项目机器在开机器的时候做好标签,汉字标注
查看>>
expr判断整数是相加的值,返回命令的返回值$? 是0,但是少数情况是1,例如1 + -1 ,$? 的结果是1 ,判断要大于1最准确...
查看>>
Matplotlib
查看>>
DES 加密----笔记
查看>>