自动修改服务器响应

Automatically Modify Server Response

Firefox 向服务器发出 get 请求。它得到 HTML 页面作为响应。 这个HTML响应页面有一部分需要修改。 在HTMLHead部分有jQuery代码:

    <Head>
    ..
        <script type="text/javascript">

            jQuery(document).ready(function(){
                init(var1, var2, var3, var4);
                });

        </script>

    ..
    </Head>

目标是:

  1. 拦截原始回复。
  2. 响应中找到这个javascript部分。
  3. 编辑变量 1 和 3,但保留变量 2 和 4
  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 解析器等竞争,但这是我所知道的第一个也是唯一的解决方案。