以下是使用 Fiddler 进行弱网模拟的详细步骤,帮助您快速模拟低带宽、高延迟、高丢包等网络环境:
步骤 1:启动 Fiddler 并配置全局代理
-
启动 Fiddler:
-
打开 Fiddler(需Windows系统),确保代理已启用(右下角显示 Capturing)。
-
-
设置移动设备代理(可选):
-
若需测试手机APP,需将手机连接到与电脑相同的WiFi,并手动设置代理:
-
IP:电脑的局域网IP(Fiddler顶部显示
Running: [IPv4] 192.168.x.x:8888
)。 -
端口:
8888
(默认)。
-
-
步骤 2:启用弱网模拟规则
-
打开网络节流功能:
-
点击菜单栏 Rules → Performance → Simulate Modem Speeds。
-
快捷键:直接按
Ctrl + M
切换开关(勾选表示启用弱网模拟)。预设规则说明:
-
-
-
Fiddler默认的 Simulate Modem Speeds 规则模拟传统调制解调器的低速网络:
-
延迟:300ms(上行/下行)。
-
带宽:约 56 Kbps(上行/下行)。
-
-
此模式适用于极端弱网场景(如2G网络),但需进一步自定义参数。
-
步骤 3:自定义弱网参数(高级配置)
-
修改节流脚本:
-
点击菜单栏 Rules → Customize Rules(或按
Ctrl + R
),打开CustomRules.js
文件。 -
找到
OnBeforeRequest
函数中的节流代码段(搜索m_SimulateModem
)。
-
-
调整网络参数:
-
修改以下代码段中的数值(单位为毫秒和字节):
javascript
Copy
if (m_SimulateModem) { // 延迟:上行/下行各增加 300ms oSession["request-trickle-delay"] = "300"; oSession["response-trickle-delay"] = "300"; // 带宽:限制为 56 KB/s(即 56*1024=57344 B/s) oSession["request-trickle-bandwidth"] = "57344"; oSession["response-trickle-bandwidth"] = "57344"; }
-
参数说明:
-
trickle-delay
:每个数据包的延迟时间(单位:毫秒)。 -
trickle-bandwidth
:带宽限制(单位:字节/秒)。
示例:1 Mbps = 125,000 B/s,500 Kbps = 62,500 B/s
-
-
-
保存并生效:
-
修改后保存文件(
Ctrl + S
),Fiddler会自动重新加载规则。
-
步骤 4:验证弱网效果
-
测试网页或APP:
-
在浏览器或手机APP中访问任意页面,观察加载速度是否明显变慢。
-
-
查看请求详情:
-
在Fiddler会话列表中选中某个请求,右侧 Statistics 选项卡 会显示实际传输时间和带宽。
-
步骤 5:创建自定义规则模板(可选)
-
保存自定义配置:
-
在
CustomRules.js
中复制修改后的代码段,创建多个条件分支,例如:javascript
Copy
// 模拟3G网络 if (m_Simulate3G) { oSession["request-trickle-delay"] = "100"; oSession["response-trickle-delay"] = "100"; oSession["request-trickle-bandwidth"] = "150000"; // ~1.2 Mbps oSession["response-trickle-bandwidth"] = "75000"; // ~0.6 Mbps }
-
通过菜单 Rules → Performance 切换不同模板。
-
常见弱网场景参数参考
场景 | 延迟(ms) | 下载带宽(B/s) | 上传带宽(B/s) | 丢包率(需脚本扩展) |
---|---|---|---|---|
2G网络 | 300 | 57344 (~56 KB/s) | 57344 | 3%-5% |
3G网络 | 100 | 150000 (~1.2 Mbps) | 75000 (~0.6 Mbps) | 1%-3% |
4G弱信号 | 50 | 500000 (~4 Mbps) | 250000 (~2 Mbps) | 2%-4% |
高延迟卫星 | 1000 | 250000 (~2 Mbps) | 125000 (~1 Mbps) | 5%-10% |
扩展功能:模拟丢包和乱序
Fiddler默认不支持丢包和乱序模拟,但可通过以下方法扩展:
-
自定义脚本注入丢包:
-
在
OnBeforeRequest
中添加随机丢包逻辑:javascript
Copy
// 随机丢包率5% if (Math.random() < 0.05) { oSession["ui-color"] = "red"; oSession.Abort(); // 丢弃请求 }
-
-
结合第三方工具:
-
使用 Clumsy 或 Network Emulator for Windows Toolkit(NEWT)叠加网络干扰。
-
注意事项
-
HTTPS流量捕获:
-
需安装Fiddler根证书(菜单 Tools → Options → HTTPS → Decrypt HTTPS traffic)。
-
-
性能影响:
-
高丢包率或低带宽可能导致测试工具自身卡顿,建议关闭无关流量捕获(Filters)。
-
-
恢复网络:
-
测试完成后,务必取消勾选 Simulate Modem Speeds(按
Ctrl + M
)并关闭Fiddler代理。
-
通过以上步骤,您可以灵活模拟不同弱网场景,验证应用在网络不稳定时的健壮性和用户体验!