使用fiddler修改url返回结果(包括callback结果)

本文介绍了在测试过程中如何使用Fiddler的AutoResponder和Fiddler Script功能,通过实时更改或预设结果来模拟不同长度的影片名称,以检查前端页面是否正确处理。同时,对比了这两种方法的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试场景

举一个实际测试过程中会遇到的例子来说,如:暴风影音官网,头部菜单‘看过’列表,如下所示,在影片名称超长的情况下,页面显示是否会错乱。
产品定的规则是:10字之内显示全称,大于10个字则截断显示以…代替。
暴风影音-头部菜单-看过

测试方法

一般情况下,我们可以轻松找到各种长短的影片名称,但是超长的名称而且还是有特定字数的(边界值测试法)或许一时半会儿想不到,这时我们就要借助fiddler这一强大的工具来帮助我们简化这个过程,方法很多种,我们一一来看:

AutoResponder->bpafter手动实时更改

步骤

  1. 启动fiddler ,开启抓包;

  2. 浏览器请求暴风影音官网 www.baofeng.com,成功登录用户;

  3. 在fiddler工具左侧面板找到看到列表的url请求,鼠标左键将其拖拽至右侧AutoResponder面板中,此时在下方rule列表中新增了一行规则;
    在这里插入图片描述

  4. 在下方的Rule Editor第二行,点击右侧下拉三角按钮,在下拉框中选择bpafter,点击右侧Save按钮,此时设置完成。
    在这里插入图片描述

  5. 返回浏览器刷新当前页面,点击fiddler,查看抓到的‘看过列表’请求,接口的正常请求结果已返回,但被fiddler拦截,并未返回给浏览器;

  6. 此时,光标移入结果区,修改返回结果中某一个影片名称为超长,如下图所示,点击上方的绿色按钮run to completion,此时fiddler将修改后的结果返回给浏览器;
    在这里插入图片描述

  7. 此时查看页面显示,已为我们修改后的名称了
    在这里插入图片描述

说明

1.确保AutoResponder面板中选择了’Enable rules‘(使此规则可用)、‘Unmatched requests passthrough’(使不符合规则的依然能按正常请求顺利进行),且新加规则前的复选框是勾选状态
2.rule规则中手动拖拽的默认是完全匹配,在url前有‘EXACT:’,如果是要模糊匹配,去掉此前缀,且修改url;
3.也可以直接fiddler左下角的命令行使用bpafter命令来操作~

优点

每次请求都可以设置不同的返回结果

缺点

一般前端js对于接口的响应都会有超时处理,修改的时间超过了预设的超时时间,前端则视为未响应来处理,这样我们就看不到想要的效果了

AutoResponder->一次性手动预设结果

步骤

  1. 启动fiddler ,开启抓包;

  2. 浏览器请求暴风影音官网 www.baofeng.com,成功登录用户;浏览器请求暴风影音官网 www.baofeng.com,成功登录用户;

  3. 在fiddler工具左侧面板找到看到列表的url请求,鼠标左键将其拖拽至右侧AutoResponder面板中,此时在下方rule列表中新增了一行;
    在这里插入图片描述

  4. 此时右击此规则,在弹出的右键菜单中点击在下方的Edit Response此时弹出窗口,如下,fiddler已自动将正常结果也保存了下来
    在这里插入图片描述

5.在窗口中修改要返回的结果,点击Save
6.返回浏览器刷新当前页面,此时查看页面显示,已为我们修改后的名称了

说明

1.确保AutoResponder面板中选择了’Enable rules‘(使此规则可用)、‘Unmatched requests passthrough’(使不符合规则的依然能按正常请求顺利进行),且新加规则前的复选框是勾选状态
2.rule规则中手动拖拽的默认是完全匹配,在url前有‘EXACT:’,如果是要模糊匹配,去掉此前缀,且修改url;

优点

设置成功后,且勾选状态下,每次请求都立马自动返回已设定的结果;

缺点

如果接口是jsonp形式的,此方法无效,因为要返回请求参数中所带的动态参数callback,而我们全是写死的

Fiddler Script脚本编写

步骤

1.打开fiddler的CustomRules.js脚本文件(一般情况下位置为C:\Documents and Settings[your user]\My Documents\Fiddler2\Scripts\CustomRules.js)建议下载FiddlerScriptEditor直接在fiddler面板中编辑,相当方便。
在这里插入图片描述
2.找到OnBeforeResponse方法,修改其为如下代码:

    static function OnBeforeResponse(oSession: Session) {
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
        if (oSession.fullUrl.Contains("http://www.baofeng.net/history/?a=list&page=1&pagesize="))
        {
            oSession.utilDecodeResponse();//这句加上吧,据说是预防乱码的,可我还没遇到过
            var responseStringOriginal =  oSession.GetResponseBodyAsString();
            var regex = /"title":"(.*?)",/i;
            responseStringOriginal = responseStringOriginal.replace(regex, '"title":"一二三四五六七八九十好开心呀",');
            oSession.utilSetResponseBody(responseStringOriginal);
        }
    }

3.点击左上角的’Save’按钮保存脚本(注意Ctrl+S在此处不生效)

4.刷新页面,查看结果,已为我们修改后的了,且按需求截断显示了,哦耶!!
在这里插入图片描述

说明

1.如果需要调试,可以用FiddlerObject.alert(变量名)或MessageBox.Show(变量名)来弹窗显示结果
2.我上边使用的是正则匹配,如果修改的是固定的字符串,如将结果中"pid":“2"修改为"name”:2,可以直接一条语句就够了oSession.utilReplaceOnceInResponse(’“pid”:“2”’,’“name”:2’,0)

优点

可以轻松修改带有动态参数值的返回结果,非常灵活方便

缺点

需要有一些编程基础,但其实并不难

其它方法

其实还有很多方法可以实现,我习惯用这几种,方便且容易,如果大家有好的方法也可以留言,大家互相学习。
**PS:第一次写博客,各位多担待!3Q**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值