Fiddler如何替换请求的域名
前言
由于url替换法替换域名有一个限制,就是一次只能替换一个规则,故写此教程。url替换法,请参考:如何使用fiddler中url替换法进行替换请求ip或者域名
Fiddler是Windows的桌面软件,在开发过程当中,经常用到 Fiddler对数据进行抓包,Fiddler有个非常好的功能,就是可以把自己机器设置成一个http代理服务器,这样手机就可以通过此代理上网,从而达到抓包的目的。
在抓包过程当中,遇到一个实际问题。有时候为了调试方便,需要将线上的服务定位到内网。比如我们线上的服务器域名为 api.ooxx.com。而内网的用于调试的服务器域名为 test.ooxx.com,那么就需要将所有域名 api.ooxx.com替换为 test.ooxx.com,上网查了一下,通过修改Fiddler的脚本文件可以实现。
正文
Fiddler菜单中,Rules->Custon Rules,或按Ctrl+R键,编辑 CustomRules.js 代码文件,在OnBeforeRequest函数里面加上几句代码:
staticfunctionOnBeforeRequest(oSession: Session) {
if(oSession.HostnameIs("api.ooxx.com")) {
oSession.hostname="test.ooxx.com";
}
……
}
这样就可以了,抓包后就发现所有 api.ooxx.com都变成了 test.ooxx.com。
如果是ip地址的话,需要这样写:
staticfunctionOnBeforeRequest(oSession: Session) {
if (oSession.uriContains("x.x.x.x")) {
oSession.host="127.0.0.1:9090";
}
……
}
如果需要替换多个ip,可以这样写:
staticfunctionOnBeforeRequest(oSession: Session) {
if (oSession.uriContains("x.x.x.x")) {
oSession.host="127.0.0.1:9090";
}
if (oSession.uriContains("y.y.y.y")) {
oSession.host="127.0.0.1:8080";
}
……
}