通过FiddlerScript修改response

static function OnBeforeResponse(oSession: Session){
        if (oSession.uriContains("/api/config")){//判断,当session的uri地址中包含“/api/config”时
            var responseJsonString=oSession.GetResponseBodyAsString();//获取response中的JSON数据,以字符串的形式接收 
            var responseJSON=Fiddler.WebFormats.JSON.JsonDecode(responseJsonString);//转化为JSON数据,以便于编辑
            var responseDataHashTable = responseJSON.JSONObject["data"];//获取“data”中的数据
            if(responseDataHashTable.Contains("currentVersionStatus")){//如果data中的数据中,包含“currentVersionStatus”字段
                responseDataHashTable["currentVersionStatus"]="0" ;//0审核中   1已审核,将该字段的值改为0
            }
            var myResponseJSON= Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);//转换回字符串
            oSession.utilSetResponseBody(myResponseJSON);//替换ResponseBody中的JSON数据
        }
}

以上代码为修改response的一段基本代码,首先看到oSession.uriContains()方法,用于判断抓包接口的uri是否包含了对应字符串。类似的方法有:

oSession.fullUrl == "XXX"//session的url是否等于“XXX”

oSession.fullUrl.Contains(“XXX”)//session的url是否包含“XXX”

oSession.host == “baidu.com”//session的地址是否是“baidu.com”

oSession.host.Contains(“baidu”)//session的地址是否包含“baidu”


oSession.GetResponseBodyAsString(),是将抓包的接口中,response内容以string类型获取到。然后通过Fiddler.WebFormats.JSON.JsonDecode()将获取到的string字符串转换为json格式数据,以便于编辑。


responseJSON.JSONObject["data"]则是将json数据中的“data”字段中数据获取到,不同的接口返回内容不同,可能字段就不同。我这里以公司的接口为例。


将json数据修改完成之后,要重新转换成string类型,然后用fiddler自带的工具赋值回去

Fiddler.WebFormats.JSON.JsonEncode()是将json类型数据转换为string类型

oSession.utilSetResponseBody()是将修改好的数据,重新赋值给response,执行完毕之后,接口的response就会按照脚本设置返回。

发表评论

电子邮件地址不会被公开。 必填项已用*标注