由於url替換法替換域名有一個限制,就是一次只能替換一個規則,故寫此教程。
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";
}
……
}
方法二:var origin_host=“www.baidu.com”;
var replace_host=“www.taobao.com”;
if(oSession.host==origin_host){
oSession.fullUrl = oSession.fullUrl.Replace(origin_host,replace_host);
}
這樣就可以了,抓包後就發現所有 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";
}
……
}