通过Fiddler Script替换请求/响应内容

首先点击菜单栏中的Rules->Customize Rules(Crtl+R)打开脚本编辑器。千万千万不要直接点击Fiddler右侧的Fiddler Script,在那里面直接改是不生效的。

抛砖引玉就举一个例子来讲吧

修改Response里的JSON内容

假设请求的接口为 http://test.example.com/api/test

响应内容为

{
    "ret": "OK",
    "data": {
        "id": 1001,
        "name": "James"
    }
}

我们想把Response里面的name改成Jack,其他不变,可以使用如下代码实现

首先找到static function OnBeforeResponse(oSession: Session)

在下面追加如下代码:

static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s && oSession.responseCode == 304) {
        oSession["ui-hide"] = "true";
        }
    //下面为追加代码
    if(oSession.fullUrl.Contains(http://test.example.com/api/test)){
        var responseStr = oSession.GetResponseBodyAsString(); //获取响应内容
		var jsonStr = Fiddler.WebFormats.JSON.JsonDecode(responseStr); //解析JSON,如果需要改变的是Body内容,则不需要解析JSON这步
        jsonStr.JSONObject["data"]["name"] = "Jack";
        var mod_json = Fiddler.WebFormats.JSON.JsonEncode(jsonStr.JSONObject); //封装修改后的JSON,如果需要改变的是Body内容,则不需要封装JSON这步
		oSession.utilSetResponseBody(mod_json); //将封装后的JSON放入Response中
    }
}

如果我需要把id前面两个数字改为id_,则使用正则匹配比较方便,代码如下:

static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s && oSession.responseCode == 304) {
        oSession["ui-hide"] = "true";
        }
    //下面为追加代码
    if(oSession.fullUrl.Contains(http://test.example.com/api/test)){
        var responseStr = oSession.GetResponseBodyAsString(); //获取响应内容
		var jsonStr = Fiddler.WebFormats.JSON.JsonDecode(responseStr); //解析JSON,如果需要改变的是Body内容,则不需要解析JSON这步
        var reg_ex = /\d\d/; //正则表达式
        var id = jsonStr.JSONObject["data"]["id"]; //取出旧的id值
        var new_id = id.replace(reg_ex, "id_"); //使用正则将 1001替换为id_01
        jsonStr.JSONObject["data"]["id"] = new_id; //将新的id值赋值到id字段
        var mod_json = Fiddler.WebFormats.JSON.JsonEncode(jsonStr.JSONObject); //封装修改后的JSON,如果需要改变的是Body内容,则不需要封装JSON这步
		oSession.utilSetResponseBody(mod_json); //将封装后的JSON放入Response中
    }
}

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值