替换的方法有两种,一种是暂时的,一种是永久的。
官网相关文档: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 )
// 请先在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 。