fidller之使用c# 编写 fiddler script 动态修改请求,响应参数, 模拟弱网
fiddler script
打开fiddler script
fiddler script 默认使用的语言是微软的Jscript
可以通过配置修改为C#编写代码
Tools -> Scripting
Language: 选择fiddler script 语言
References: 如果使用到第三方dll库需要在此导入
1. 修改响应体
通过代码实现自动修改响应参数, 解决多个接口需要修改参数时, 导致频繁手工断点
在Tools -> Scripting ->References可导入Newtonsoft.Json.dll库(处理json的第三方库),在fiddler的根目录已经存在不需要下载
//顶部需要声明引入c#处理json的库
using Newtonsoft.Json;
修改响应体的可在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);
}
2.修改请求参数
修改方法OnBeforeRequest
方法体内加入如下逻辑
//修改请求内容, 如果uri包含你的域名信息则修改请求体
if (oSession.uriContains("xxx.xxx.xxx.xxx")) {
oSession.utilSetRequestBody('{"data": "578"}');
}
修改后保存生效
jmeter请求:
后端响应:
3. 模拟弱网
在OnBeforeRequest方法中设置如下,
修改参数后,需要在
rules -> performance -> Simulate Modem Speeds 勾选
或者修改fidller script代码m_SimulateModem参数为true
public static bool m_SimulateModem = true;
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使用参考: