自动修改服务器响应

Sam*_*uel 2 firefox fiddler windows-10

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

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

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

        </script>

    ..
    </Head>
Run Code Online (Sandbox Code Playgroud)

目标是:

  1. 截取原始响应。
  2. 响应中找到这个javascript部分。
  3. 编辑变量 1 和 3保留它们是变量 2 和 4
  4. Firefox发送响应

第 1 点我使用通过代理设置连接到Firefox 的Fiddler。目前,我不知道该怎么做点2,3和4自动。我最近才开始使用Fiddler,文档中没有关于如何使用的示例。

是否有更容易的方式发送基于服务器的请求/修改请求/响应/响应的Windows 自动使用其他程序?

感谢您的帮助!

myf*_*myf 6

您可以使用 FiddlersCustomRules脚本即时重写服务器响应:

  • 打开FiddlerScript标签:带有 FiddlerScript 选项卡的 Fiddler 窗口
  • (或者%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');
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者正则表达式:

    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); 
    }
    
    Run Code Online (Sandbox Code Playgroud)

(这在响应不是 UTF-8 的情况下可能不起作用。)

脚本文件是“实时”的:您在 Fiddler 运行时保存在其中的任何更改都会传播(它会在文件更改时播放声音,或者当您在 Fiddler 窗口中用相应的提示破坏某些内容时播放不同的声音)。

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

顺便说一句,对于简单的传入文件替换,您可以使用 AutoResponder: Fiddler AutoResponder 示例


披露:我对此知之甚少,只是今天碰巧与 Fiddler 搞混了,刚刚我自己尝试了某些东西。我想可能有更健壮的方法,甚至可能有更智能的代理,其中包含合并的 HTML 解析器或类似的更适合您的问题;愚蠢的字符串替换无法与真正的 HTML 解析器等竞争,但这是我所知道的第一个也是唯一的解决方案。