针对网络延迟与弱网下的测试

学习的时候看见大佬这样的回复

作为一个测试小白,我心想,这我不得上手试一试

大佬说的工具模拟,大概是指Charles和fiddler两个软件,都可以模拟弱网,但是Charles收费,我拿fiddler练手

另一个故意引入固定百分比的网络丢包,网上有很多教程,可以用更高级的测试软件,我查了一下,好像还可以自定fiddler脚本,fiddler本身是没有设置丢包率的功能的

使用工具模拟

自定义可以编辑 Fiddler 的 CustomRules文件来实现:

在打开的 CustomRules文件中,找到 OnBeforeRequest 函数或 OnBeforeResponse 函数。

我在里面找到了onbeforerequest函数,挺难找,注释太多了,关键就这几行,把值改小就行

js 复制代码
//限制网络延迟
static function OnBeforeRequest(oSession: Session) {
       ......
            // 设置每个请求的延迟为100毫秒
            oSession["request-trickle-delay"] = "100"; 
            // 设置每个响应的延迟为100毫秒
            oSession["response-trickle-delay"] = "100"; 
      ......

限制带宽

js 复制代码
static function OnBeforeRequest(oSession: Session) {
    // 限制上传速度为 20 KB/s
    oSession["request-trickle-speed"] = "20480"; // 速度单位是字节/秒
    // 限制下载速度为 20 KB/s
    oSession["response-trickle-speed"] = "20480"; // 速度单位是字节/秒
}

fiddler->rules->performance->simulate modem speeds(模拟调制解调器速度),重新启动就可以应用新的脚本

如果需要一些特定条件,比如只对特定的域或URL模式应用弱网设置,可以在添加延迟和带宽限制之前添加一些条件判断

js 复制代码
static function OnBeforeRequest(oSession: Session) {
    if (oSession.HostnameIs("example.com")) {
        oSession["request-trickle-delay"] = "100";
        oSession["request-trickle-speed"] = "20480";
    }
}

static function OnBeforeResponse(oSession: Session) {
    if (oSession.uriContains("/api/data")) {
        oSession["response-trickle-delay"] = "100";
        oSession["response-trickle-speed"] = "20480";
    }
}

故意引入固定百分比的网络丢包

可以通过编辑 Fiddler 的 CustomRules.js 文件来实现这种模拟。

但这样的模拟只是在应用层的层面,没办法完全模拟网络层的丢包。

这段脚本将随机地丢弃一定比例的入站或出站 HTTP 请求/响应:

cpp 复制代码
static function OnBeforeRequest(oSession: Session) {
    // 设置丢包率为 10%
    if (Math.random() < 0.1) { // 10% 的概率
        oSession["ui-hide"] = "true"; // 隐藏从 UI
        oSession.abort(); // 中止请求
        FiddlerObject.log("Request dropped: " + oSession.url); // 记录日志
    }
}

static function OnBeforeResponse(oSession: Session) {
    // 设置丢包率为 10%
    if (Math.random() < 0.1) { // 10% 的概率
        oSession["ui-hide"] = "true"; // 隐藏从 UI
        oSession.abort(); // 中止响应
        FiddlerObject.log("Response dropped: " + oSession.fullUrl); // 记录日志
    }
}

脚本解释

  • Math.random() < 0.1:这将产生一个从 0 到 1 的随机数,如果小于 0.1(即 10% 的概率),则执行中止操作。
  • oSession["ui-hide"] = "true":这将会从 Fiddler 的会话列表中隐藏这个会话,让它看起来像是被网络丢弃了。
  • oSession.abort():这会中止正在处理的会话,模拟了丢包的行为。
  • FiddlerObject.log():这一行用于将丢包的信息记录到 Fiddler 的日志中,便于调试和确认丢包行为。
相关推荐
树℡独3 小时前
ns-3仿真之应用层(五)
服务器·网络·tcp/ip·ns3
zhang133830890754 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
酣大智5 小时前
接口模式参数
运维·网络·网络协议·tcp/ip
24zhgjx-lxq6 小时前
华为ensp:MSTP
网络·安全·华为·hcip·ensp
ling___xi6 小时前
《计算机网络》计网3小时期末速成课各版本教程都可用谢稀仁湖科大版都可用_哔哩哔哩_bilibili(笔记)
网络·笔记·计算机网络
REDcker6 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络
Up九五小庞6 小时前
用arpspoof实现100%批量切断192.168.110.10 - 192.168.110.100 断网(双向欺骗)--九五小庞
网络·开源
躺柒7 小时前
读数字时代的网络风险管理:策略、计划与执行04风险指引体系
大数据·网络·信息安全·数字化·网络管理·网络风险管理
独角鲸网络安全实验室7 小时前
本地信任成“致命漏洞”:数千Clawdbot Agent公网裸奔,供应链与内网安全告急
网络·网关·安全·php·漏洞·clawdbot·信任机制漏洞
ai_xiaogui7 小时前
Tailscale实现家庭与公司网络双向通信教程:子网路由配置详解
网络·tailscale·双向通信·子网路由配置详解·tailscale双向互访