Fiddler是一个http协议调试代理工具,方便进行http请求的拦截处理、改写请求、返回值等。
在Rules菜单下:
此次更改请求 头 ,so go to OnBeforeRequest
或者
-更改RequestHeaders中的内容
//根据host判断 if(oSession.host=="www.baidu.com"){ oSession.RequestHeaders.Remove("User-Agent"); oSession.RequestHeaders.Add("User-Agent","Dalvik/2.1.0 (Linux; U; Android 9.0.1; onePlus666 Build/MOB31K)"); }
-请求重定向,路径重写
//请求拦截 var isTelecomAuth: boolean = false; if(oSession.host == 'www.xxxxxx.com' && oSession.url.Contains("/api/")){ isTelecomAuth = oSession.url.Contains("/api/web/telecom/getTel"); isTelecomAuth = isTelecomAuth || oSession.url.Contains("/api/web/telecom/addAuthRecord"); //如果不是运营商授信,进行拦截 if(!isTelecomAuth){ oSession.host = 'api.xxxxx.com'; oSession.url = oSession.url.Replace("/api/", "/"); } }
-更改ResponseBody中JSON数据
Go->go to OnBeforeResponse定位到OnBeforeResponse函数,在末尾添加:
if(oSession.host == 'www.xxxx.com' && oSession.url.Contains("/api/xxx")){ //更改后的JSON数据 var mylogin='{"uids":[200005445],"card_type":1,"cmd":"2124525","token":"26fed74802233c112bb7e9fcb97a11ac"}'; var requestJson=Fiddler.WebFormats.JSON.JsonDecode(mylogin); var reJsonDes=Fiddler.WebFormats.JSON.JsonEncode(requestJson.JSONObject); oSession.utilSetRequestBody(reJsonDes); //替换字符串 //var strBody = oSession.GetRequestBodyAsString(); //oSession.utilSetRequestBody(strBody.Replace("com.jyblife.risk.profile.service.AuthStateService","com.jyblife.risk.profile.service.AuthStateService")); //打印修改后的内容 //MessageBox.Show(oSession.GetRequestBodyAsString()); }
这里没有对原JSON数据修改,而直接定义了新的JSON数据替换。
PS:
https://blog.csdn.net/qq_37299249/article/details/70558861
https://www.cnblogs.com/yanjc/p/6716733.html