自动修改服务器响应
Automatically Modify Server Response
Firefox 向服务器发出 get 请求。它得到 HTML 页面作为响应。
这个HTML响应页面有一部分需要修改。
在HTML的Head部分有jQuery代码:
<Head>
..
<script type="text/javascript">
jQuery(document).ready(function(){
init(var1, var2, var3, var4);
});
</script>
..
</Head>
目标是:
- 拦截原始回复。
- 在响应中找到这个javascript部分。
- 编辑变量 1 和 3,但保留变量 2 和 4。
- 发送响应到Firefox。
点 1 我使用 Fiddler 通过代理设置连接到 Firefox。目前我不知道如何第 2、3 和 4 点自动。
我最近才开始使用 Fiddler,文档中没有使用示例。
有没有更简单的方法send/modify requests/responses based on server requests/responses in Windows 自动 使用其他程序?
谢谢您的帮助!
您可以使用 Fiddlers CustomRules
脚本即时重写服务器响应:
- 打开
FiddlerScript
选项卡:
- (或者在编辑器中打开
%userprofile%\Documents\Fiddler2\Scripts\CustomRules.js
文件并找到 static function OnBeforeResponse(oSession: Session) {
。)
修改其主体 - 简单的字符串到字符串替换:
if (oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
oSession.utilDecodeResponse();
oSession.utilReplaceInResponse('find','replace');
oSession.utilReplaceInResponse('something','anything');
}
或者正则表达式:
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
var oRegEx = /([a-z]+) and ([a-z]+)/gi;
oBody = oBody.replace(oRegEx, " swapped ");
oSession.utilSetResponseBody(oBody);
}
(这在响应不是 UTF-8 的情况下应该不起作用。)
脚本文件是 "live":当 Fiddler 是 运行 时,您在其中保存的任何更改都会被传播(它会在文件更改时播放声音,或者当您使用相应的提示破坏某些内容时播放不同的声音提琴手 window).
文档:http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse
顺便说一句,对于简单的传入文件替换,您可以使用自动回复器:
披露:我对此了解不多,只是今天碰巧弄乱了Fiddler并且自己刚刚尝试了一些东西。我想可能会有更健壮的方法,甚至可能有更智能的代理,其中包含 HTML 解析器等,它们会更好地解决您的问题;愚蠢的字符串替换无法与真正的 HTML 解析器等竞争,但这是我所知道的第一个也是唯一的解决方案。
Firefox 向服务器发出 get 请求。它得到 HTML 页面作为响应。 这个HTML响应页面有一部分需要修改。 在HTML的Head部分有jQuery代码:
<Head>
..
<script type="text/javascript">
jQuery(document).ready(function(){
init(var1, var2, var3, var4);
});
</script>
..
</Head>
目标是:
- 拦截原始回复。
- 在响应中找到这个javascript部分。
- 编辑变量 1 和 3,但保留变量 2 和 4。
- 发送响应到Firefox。
点 1 我使用 Fiddler 通过代理设置连接到 Firefox。目前我不知道如何第 2、3 和 4 点自动。 我最近才开始使用 Fiddler,文档中没有使用示例。
有没有更简单的方法send/modify requests/responses based on server requests/responses in Windows 自动 使用其他程序?
谢谢您的帮助!
您可以使用 Fiddlers CustomRules
脚本即时重写服务器响应:
- 打开
FiddlerScript
选项卡: - (或者在编辑器中打开
%userprofile%\Documents\Fiddler2\Scripts\CustomRules.js
文件并找到static function OnBeforeResponse(oSession: Session) {
。) 修改其主体 - 简单的字符串到字符串替换:
if (oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){ oSession.utilDecodeResponse(); oSession.utilReplaceInResponse('find','replace'); oSession.utilReplaceInResponse('something','anything'); }
或者正则表达式:
if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "html")){ oSession.utilDecodeResponse(); var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes); var oRegEx = /([a-z]+) and ([a-z]+)/gi; oBody = oBody.replace(oRegEx, " swapped "); oSession.utilSetResponseBody(oBody); }
(这在响应不是 UTF-8 的情况下应该不起作用。)
脚本文件是 "live":当 Fiddler 是 运行 时,您在其中保存的任何更改都会被传播(它会在文件更改时播放声音,或者当您使用相应的提示破坏某些内容时播放不同的声音提琴手 window).
文档:http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse
顺便说一句,对于简单的传入文件替换,您可以使用自动回复器:
披露:我对此了解不多,只是今天碰巧弄乱了Fiddler并且自己刚刚尝试了一些东西。我想可能会有更健壮的方法,甚至可能有更智能的代理,其中包含 HTML 解析器等,它们会更好地解决您的问题;愚蠢的字符串替换无法与真正的 HTML 解析器等竞争,但这是我所知道的第一个也是唯一的解决方案。