强大的fiddler——用fiddler Script替换响应内容

之前最常用的是fiddler的AutoResponder,将某些请求用本地资源进行替换。但现在的需求是将响应body中的部分文本替换。了解了一下,发现fiddler script这个强大的功能。

要使用fiddler script,在fiddler的顶部菜单中选择Rules -> Customize Rules…  然后会提示你下载Fiddler2 ScriptEditor,按照要求下载即可。如果没有下载也无所谓,就用记事本打开编辑,但建议最好下载。

下载安装ScriptEditor后,打开ScriptEditor,就会发现左侧是代码框,里面已经有很多代码;右侧是参考手册,可以很方便的查阅相关的对象和方法。

要编辑代码,在左侧代码框中修改即可,我们要实现的功能是替换响应文本。那么就需要在OnBeforeResponse(oSession: Session)方法中加入处理代码。

不改动它默认的代码,在默认代码片段之后加入以下代码:

    if (oSession != null && oSession.oResponse != null && oSession.oResponse.headers != null
        && oSession.responseCode == 200 
        && oSession.oResponse.headers.ExistsAndContains("Content-Type", "text/html")
        ){
        // 必須先將原本的 HTTP Response 資料解碼過
        // 因為 HTTP Response Reponse 的資料可能是壓縮過或被分段(chunking)
        oSession.utilDecodeResponse();
        oSession.utilReplaceInResponse('邯郸市','成都市');
        oSession.utilReplaceInResponse('河北省','四川省');

            oSession.utilReplaceInResponse(‘百度’,’一度’);
}

如果想要其它更高级的功能,看看右侧的参考手册,继续写其它代码。

以上代码的效果如下:

百度