fidller之使用c# 编写 fiddler script 动态修改请求,响应参数, 模拟弱网

fiddler script

打开fiddler script
image

fiddler script 默认使用的语言是微软的Jscript

可以通过配置修改为C#编写代码
Tools -> Scripting

Language: 选择fiddler script 语言
References: 如果使用到第三方dll库需要在此导入
image

1. 修改响应体

通过代码实现自动修改响应参数, 解决多个接口需要修改参数时, 导致频繁手工断点

在Tools -> Scripting ->References可导入Newtonsoft.Json.dll库(处理json的第三方库),在fiddler的根目录已经存在不需要下载

//顶部需要声明引入c#处理json的库
using Newtonsoft.Json;

image

修改响应体的可在OnBeforeResponse 方法体内加入逻辑
对应的修改响应体逻辑如下


                //判断是否url是否包含该字符串, 包含则进行修改响应体
            if (oSession.uriContains("xxx.xxx.xxx.xxx")) {
                //获取响应体字符串
                var str = oSession.GetResponseBodyAsString();
                FiddlerApplication.Log.LogString("修改前" + str);
                //转换为字典
                Dictionary<string, string> dic = JsonConvert.DeserializeObject<Dictionary<string, string>>(str);
                //字典添加参数
                dic.Add("name", "张三");
                //转换为字符串
                str = JsonConvert.SerializeObject(dic);
                //放入响应体内
                oSession.utilSetResponseBody(str);
                //日志打印
                FiddlerApplication.Log.LogString("修改后" + str);
            }

image

image

2.修改请求参数

修改方法OnBeforeRequest
方法体内加入如下逻辑

    //修改请求内容, 如果uri包含你的域名信息则修改请求体
        if (oSession.uriContains("xxx.xxx.xxx.xxx")) {
            oSession.utilSetRequestBody('{"data": "578"}');
        }

修改后保存生效
image

jmeter请求:
image

后端响应:
image

3. 模拟弱网

在OnBeforeRequest方法中设置如下,
修改参数后,需要在
rules -> performance -> Simulate Modem Speeds 勾选
或者修改fidller script代码m_SimulateModem参数为true

public static bool m_SimulateModem = true;

image

        if (m_SimulateModem) {
            // 每上传 KB 延迟发送 300 毫秒。
            oSession["request-trickle-delay"] = "300";
            // 每下载 KB 接收延迟 150 毫秒。
            oSession["response-trickle-delay"] = "150";
        }

可以使用随机函数做处理

        if (m_SimulateModem) {
            Random random = new Random();
            // 每上传 KB 延迟发送 300 毫秒。
            oSession["request-trickle-delay"] = "" + random.Next(50, 300);
            // 每下载 KB 接收延迟 150 毫秒。
            oSession["response-trickle-delay"] = "" + random.Next(50, 150);
        }

更多API使用参考:
image





参考文章

posted @ 2020-07-17 18:05  silence022  阅读(988)  评论(0)    收藏  举报