Fiddler 替换 Request Host ( 含 https 转 http )

2023-02-18 10:11:50 浏览数 (2)

替换的方法有两种,一种是暂时的,一种是永久的。

官网相关文档:https://docs.telerik.com/fiddler/knowledgebase/fiddlerscript/modifyrequestorresponse

一、暂时的方法

在 Fiddler 左下角输入框(ALT Q)输入:

urlreplace www.demo.com www.dev.demo.com

要清除转发,请在同一位置输入:

urlreplace

按 Enter 就可以了。

更详细的说明请参考 Fiddler 官方说明文件 - QuickExec Reference 。 可以发现 urlreplace 做的是整个网址字串的取代,所以可以动手脚的地方不只于此。

二、永久的方法

修改 Fiddler 的 CustomRules.js ,注意是 .js ! 点下 Fiddler 上方的 Rules ,再点 Customize Rules :

如果有安装 FiddlerScript Editor ,会用 FiddlerScript Editor 开启 CustomRules.js ,否则会用记事本打开。 或者也可以到「我的文件 Fiddler2 Scripts 」直接编辑 CustomRules.js 。

假设 内网的链接是:http://www.dev.xieboke.net ( http )

假设 外网的链接是:https://www.xieboke.net ( https )

代码语言:javascript复制
// 请先在CustomRules.js 找到:static function OnBeforeRequest
// 内网和外网是互斥的,不能同时启用

static function OnBeforeRequest(oSession:Session){
    
    /*// 注释
    // 内网转外网 http 转 https
    if (oSession.HostnameIs('dev.xieboke.net')){
        oSession.hostname = 'xieboke.net';
    }
    */

   // 外网转内网 https 转 http
    if (oSession.HostnameIs('ios.xieboke.net') || oSession.HostnameIs('android.xieboke.net')){
        if(oSession.isHTTPS){
            if (oSession.HTTPMethodIs("CONNECT")){
                oSession["x-replywithtunnel"] = "FakeTunnel";
                return;
            }
            oSession.fullUrl = oSession.fullUrl.Replace("https://","http://");
            oSession.port = 80;
            oSession.hostname = 'dev.xieboke.net';
        }

    }
}

将 CustomRules.js 存档, Fiddler 会自动重新载入 CustomRules.js ,原先发到 www.demo.com 的 HTTP Request 就会自动转发到 www.dev.demo.com 。

更详细的说明请参考 Fiddler 官方说明文件 - Script Samples 。

0 人点赞