在如今这个网络遍布的时代,弱网环境却依旧是我们无法忽视的存在。不管是在偏远地区、地下停车场,还是人员密集场所,网络信号不佳、速度缓慢的情况时有发生。对于开发者而言,确保应用程序在弱网环境下也能稳定运行、拥有良好的用户体验,是一项至关重要的任务。而 Fiddler,这款强大的 Web 调试代理工具,就能帮助我们轻松模拟弱网环境,开展相关测试工作。接下来,就为大家详细介绍 Fiddler 的弱网设置方法

一、Fiddler 基础准备​

首先,你得确保已经在电脑上安装好了 Fiddler。若尚未安装,可以前往其官方网站(https://www.telerik.com/fiddler)下载对应版本。安装完成后,启动 Fiddler,你会看到如下界面:

此时,Fiddler 默认处于捕获网络流量的状态,右下角会显示 “Capturing”。若你需要捕获移动设备(如手机 APP)的网络流量,还得进行如下操作:​

1.查看电脑局域网 IP:在 Fiddler 顶部,会显示类似 “Running: (IPv4) 192.168.x.x:8888” 的信息,其中 “192.168.x.x” 就是你电脑的局域网 IP。​

2.设置移动设备代理:将手机连接到与电脑相同的 WiFi 网络,接着手动设置代理。在代理设置中,IP 地址填写上一步查看到的电脑局域网 IP,端口则使用默认的 8888。不同手机设置代理的路径可能有所差异,不过一般都能在 WiFi 设置的 “高级选项” 中找到。

二、启用弱网模拟规则​

打开网络节流功能:点击 Fiddler 菜单栏中的 “Rules”,选择 “Performance”,再点击 “Simulate Modem Speeds”。或者,你也可以直接使用快捷键 “Ctrl + M” 来切换开关,当该选项被勾选时,就表示弱网模拟已启用。后预设规则说明:Fiddler 默认的 “Simulate Modem Speeds” 规则,模拟的是传统调制解调器的低速网络。其具体参数为:延迟方面,上行和下行均为 300ms;带宽方面,上行和下行约为 56 Kbps。这种模式适用于模拟如 2G 网络这样的极端弱网场景。但在实际测试里,我们往往需要根据不同网络环境,进一步自定义参数。

三、自定义弱网参数(高级配置)​

倘若默认的弱网参数无法满足你的测试需求,别担心,Fiddler 允许我们通过修改节流脚本,来自定义弱网参数。操作方法如下:​

修改节流脚本:点击菜单栏中的 “Rules”,选择 “Customize Rules”,或者直接按下快捷键 “Ctrl + R”,这样就会打开 “CustomRules.js 文件。​

找到相关代码段:在打开的 “CustomRules.js” 文件中,搜索 “m_SimulateModem”,便能找到节流代码段。一般情况下,该代码段如下:

 调整网络参数:​ 

  • 延迟参数:“request-trickle-delay” 代表每个数据包上传时的延迟时间,单位为毫秒;“response-trickle-delay” 则代表每个数据包下载时的延迟时间,单位同样是毫秒。举例来说,若你想模拟网络延迟较高的情况,可将这两个值增大,比如改为 “6000”,这样上行和下行每个数据包的延迟时间就都变为了 6000ms。​
  • 带宽参数:“request-trickle-bandwidth” 和 “response-trickle-bandwidth” 分别用于限制上传和下载的带宽,单位是字节 / 秒。假设你要模拟 3G 网络的带宽,已知 3G 网络下载带宽约为 1.2Mbps1.2 * 1024 * 1024 / 8 = 153600 B/s),上传带宽约为 0.6Mbps(即 0.6 * 1024 * 1024 / 8 = 78643.2 B/s),那么你可以将代码修改为: 
		if (m_SimulateModem) {
			// Delay sends by 300ms per KB uploaded.
			oSession["request-trickle-delay"] = "6000"; 
			// Delay receives by 150ms per KB downloaded.
			oSession["response-trickle-delay"] = "6000"; 
			oSession["request-trickle-bandwidth"] = "157286"; // 上行带宽(近似值)​
			oSession["response-trickle-bandwidth"] = "78643"; // 下行带宽(近似值)
		}

备注:在Fiddler脚本中的注释快捷键是Ctrl+k+c,对应的取消注释快捷键是Ctrl+k+u

四、验证弱网效果​

完成上述设置后,就该验证一下弱网效果啦。你可以通过以下方式进行验证:​

  • 测试网页或 APP:在浏览器中打开一些常用网站,或者在手机 APP 中进行各种操作,观察页面加载速度是否明显变慢。比如,原本在正常网络下几秒钟就能加载完成的网页,在弱网环境下可能需要数十秒甚至更长时间才能完全加载出来。​
  • 查看请求详情:在 Fiddler 的会话列表中,选中某个请求,然后点击右侧的 “Statistics” 选项卡,这里会显示该请求的实际传输时间、带宽等详细信息。通过这些数据,你能更直观地了解弱网环境对网络请求的影响。

五、创建自定义规则模板​

在实际测试过程中,我们可能需要模拟多种不同的弱网场景,每次都去修改代码段会比较麻烦。这时,我们可以创建自定义规则模板,方便快速切换不同的弱网设置。具体操作如下:​

在 “CustomRules.js” 文件中,复制修改后的代码段,然后创建多个条件分支。注意保持方括号语法

// 模拟2G网络​
if (m_Simulate2G) {​
    oSession["request-trickle-delay"] = "300"; ​
    oSession["response-trickle-delay"] = "300";​
    oSession["request-trickle-bandwidth"] = "57344"; ​
    oSession["response-trickle-bandwidth"] = "57344";​
}​
​
// 模拟3G网络​
if (m_Simulate3G) {​
    oSession["request-trickle-delay"] = "100"; ​
    oSession["response-trickle-delay"] = "100";​
    oSession["request-trickle-bandwidth"] = "157286"; ​
    oSession["response-trickle-bandwidth"] = "78643"; ​
}​
​
// 模拟4G弱信号​
if (m_Simulate4GWeak) {​
    oSession["request-trickle-delay"] = "50"; ​
    oSession["response-trickle-delay"] = "50";​
    oSession["request-trickle-bandwidth"] = "500000"; ​
    oSession["response-trickle-bandwidth"] = "250000"; ​
}

六、常见弱网场景参数参考​

为了方便大家进行弱网模拟测试,这里为大家整理了一些常见弱网场景的参数:

场景 延迟(ms) 下载带宽(B/s) 上传带宽(B/s) 丢包率(需脚本扩展)
2G 网络 300 57344(≈56 KB/s) 57344 3% - 5%
3G 网络 100 157286(≈1.2 Mbps) 78643(≈0.6 Mbps) 1% - 3%
4G 弱信号 50 500000(≈4 Mbps) 250000(≈2 Mbps) 2% - 4%
高延迟卫星 1000 250000(≈2 Mbps) 125000(≈1 Mbps) 5% - 10%
WiFi 弱信号 80 800000(≈6.4 Mbps) 400000(≈3.2 Mbps) 1% - 2%
地铁移动网络 150 300000(≈2.4 Mbps) 150000(≈1.2 Mbps) 4% - 6%

七、扩展功能:模拟丢包和乱序​

Fiddler 默认是不支持模拟丢包和乱序功能的,但通过一些方法,我们可以对其进行扩展。

自定义脚本注入丢包:在 “OnBeforeRequest” 函数中添加随机丢包逻辑,需使用方括号语法,示例如下:

		// 随机丢包率5%
		if (Math.random() < 0.05) {
			oSession["ui-color"] = "red"; // 标记丢包请求为红色
			oSession.Abort(); // 丢弃请求
		}

结合第三方工具:你还可以使用如 Clumsy Network Emulator for Windows Toolkit(NEWT)等第三方工具,与 Fiddler 配合使用,叠加网络干扰,模拟更复杂的网络环境。

还可以在这里面添加空响应并绕过服务器,模拟请求失败

		// 随机丢包5%
		if (math.random() < 0.05) {
			osession["ui-color"] = "red";
        
			// 创建空响应并绕过服务器,模拟请求失败
			osession.utilcreateresponseandbypassserver();
			osession.responsecode = 503; // 服务不可用
			osession["ui-backcolor"] = "lightpink";
			return;
		}
		

八、注意事项​

  1. HTTPS 流量捕获:若要捕获 HTTPS 流量,需要安装 Fiddler 根证书。具体操作是点击 Fiddler 菜单栏中的 “Tools” -> “Options” -> “HTTPS”,勾选 “Decrypt HTTPS traffic”,按照提示安装证书即可。​
  2. 性能影响:当设置较高的丢包率或较低的带宽时,可能会导致测试工具自身出现卡顿现象。此时,建议关闭无关的流量捕获,可通过 “Filters” 功能进行设置。​
  3. 恢复网络:测试完成后,务必取消勾选 “Simulate Modem Speeds”(可通过快捷键 “Ctrl + M” 操作),并关闭 Fiddler 代理,让网络恢复正常状态。
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐