自动修改服务器响应

时间:2016-09-06 13:42:46

标签: firefox windows-10 fiddler

Firefox 向服务器发出获取请求。它得到 HTML 页面作为回应。 此 HTML 响应页面中有一部分需要修改。 HTML Head 部分中有 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
  5. 第1点我使用通过代理设置连接到 Firefox Fiddler 。目前,我不知道如何自动积分2,3和4 。 我最近才开始使用 Fiddler ,而且文档中没有关于如何操作的示例。

    使用其他程序 Windows 自动 根据服务器请求/响应发送/修改请求/响应是否更容易?

    感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用Fiddlers CustomRules脚本动态重写服务器响应:

  • 打开FiddlerScript标签:Fiddler window with FiddlerScript tab
  • (或者在您的编辑器中打开%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');
    }
    
  • 或者regexp:

    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, "$2 swapped $1");
        oSession.utilSetResponseBody(oBody); 
    }
    

(当响应不是UTF-8时,这似乎不起作用。)

脚本文件是&#34;直播&#34;:当Fiddler正在运行时,您在其中保存的任何更改都会传播(它会在文件更改时播放声音,或者当您在Fiddler窗口中使用相应的提示中断某些内容时会发出不同的声音)

文档:http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrResponse

Btw for dead simple incoming files replacement,你可以使用AutoResponder: Fiddler AutoResponder example

披露:我对此并不了解,只是碰巧今天搞砸Fiddler并且我自己也尝试了这些东西。我想可能有更强大的方法,甚至可能更智能的代理,包含HTML解析器或更好地适合您的问题;哑字符串替换不能与真正的HTML解析器等竞争,但这是我所知道的第一个也是唯一的解决方案。