使用Fiddler模拟网络速度

40

我正在使用 Fiddler 并希望模拟不同的网络速度。

是否有任何已发布的数据可以使用延迟值来模拟不同的速度?

以下是 Fiddler 默认代码,用于模拟 56kb 调制解调器速度。

if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = "300"; 
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = "150"; 
}

我希望获取256kbps、512kbps、1Mbps等速率的延迟数值...


16
如果你像我一样来到这里寻找 Fiddler 中的限速功能,请注意上面的 JavaScript 代码可以通过点击“规则”菜单 ==> “自定义规则...”找到。然后找到第 189 行附近的文本“m_simulateModem”。调整这些值,以将每个 Kb 的数据延迟 x 毫秒。 - Zymotik
3
感谢@Zymotik提供的快捷方式。对于那些调整这些值以进行限制的人,这里有另一个提示:每次保存CustomRules.js时,Fiddler都会关闭规则|性能|模拟调制解调器速度标志。如果你想要应用新的上传/下载延迟时间,则需要重新打开它。 - Drew
@Zymotik和Drew:感谢你们的评论,这真的帮了我很大的忙,因为我不知道如何改变速度,也不知道为什么它们没有生效。 - Karl Gjertsen
3个回答

48

这只是一个数学问题。

假设内容立即可用(例如,您正在从自动响应器回放它),那么唯一的延迟由请求滴入延迟响应滴入延迟标志控制。

每秒有1000毫秒。

所以,如果您想将连接限制为每秒1兆字节,您需要使用1毫秒的延迟。如果要将其限制为512千字节每秒,则使用2毫秒的延迟。对于每秒256千字节,使用4毫秒的延迟。

请记住,带宽通常以每秒比特而不是每秒字节计量。因此,如果您的目标是以比特/秒来衡量,请将每个值乘以8


2
谢谢Eric。我猜这个Fiddler插件也是一样的: http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/ - aneez
10
从软件作者那里得到答案是最好的事情!这就是我喜欢Stack Overflow的其中一个原因。 - Jim
有没有可能设置分数滴漏延迟?我尝试将其设置为“0.5”,以获得2056KB/s的速度,但似乎它会使连接锁死。 - Jarrod Smith
1
@JarrodSmith:今天不行,Fiddler将该值解释为整数。我期望Fiddler的带宽仿真功能在未来会变得更加丰富。 - EricLaw

38

我根据EricLaw的建议对请求滴流延迟和响应滴流延迟进行了更改。 我使用SpeedTest.Net验证了我做出的更改,但结果并不完全相符。例如,如果我将Trickle Delay值设置为8,预期下载速度为1 Mbps,但实际上得到的是2.05 Mbps。至少基于EricLaw的答复,我能够找出一些规律。感谢Eric。

每次更改Fiddler CustomerRule.js文件后,我都会重新启用“模拟调制解调器速度”功能。提醒一下,当您对CustomerRule.js文件进行更改时,“模拟调制解调器速度”将被禁用。因此,您必须重新启用该设置。

我添加了一些来自SpeedTest.net的结果图像。

以下是每个设置更改的结果:

输入图像描述

Fiddler 设置

输入图像描述

在这里,我将请求滴流延迟和响应滴流延迟设置为16。如您所见,我收到了1.03 Mbps的速度。

输入图像描述

在这里,我将请求滴流延迟和响应滴流延迟设置为32。如您所见,我收到了0.52 Mbps的速度。

输入图像描述


2
你是如何使用Fiddler影响speedtest.net的?在我的情况下,它会影响网页下载、图片下载等,但不会影响speedtest.net。 - Leonid Vasilev
@Leonid Vasilyev 在Firefox中,您必须手动设置代理。自动检测无法正常工作。 - The incredible Jan
3
在尝试更改脚本设置时,您可以将 m_SimulateModem 的声明更改为默认值 true,以便在脚本加载后启用它。只需记得在完成后将其改回 false - Corey

1

虽然这是一篇旧文章,但我想在这里添加一些信息,以使 Fiddler 速率控制更加用户友好。我们将创建一个新菜单,并为其提供一系列调制解调器速度供选择。

单击“规则”->“自定义规则”选项

Customize Rules menu option (CTRL+R)

搜索类似于以下代码的m_SimulateModem声明:

public static var m_SimulateModem: Boolean

并将其替换为RulesString

    // Cause Fiddler Classic to delay HTTP traffic to simulate typical modem conditions
    RulesString("Simulate &Modem Speeds", true) 
    BindPref("fiddlerscript.ephemeral.ModemSpeed")
    RulesStringValue(0,"5&6 kbps", "56")
    RulesStringValue(1,"&128 kbps", "128")
    RulesStringValue(2,"&256 kbps", "256")
    RulesStringValue(3,"&512 kbps", "512")
    RulesStringValue(4,"1 &mbps", "1m")
    public static var m_SimulateModem: String = null;

再次搜索 m_SimulateModem 的规则,我们正在寻找应用trickle的if语句。删除if块并将其替换为以下case语句:

switch (m_SimulateModem) {

    case "56": // 56kbps
        oSession["request-trickle-delay"] = "760"; 
        oSession["response-trickle-delay"] = "440";         
        break;
    
    case "128": // 128kbps
        oSession["request-trickle-delay"] = "380"; 
        oSession["response-trickle-delay"] = "220";             
        break;
    
    case "256": // 256kbps
        oSession["request-trickle-delay"] = "190"; 
        oSession["response-trickle-delay"] = "110";         
        break;
    
    case "512": // 512kbps
        oSession["request-trickle-delay"] = "95"; 
        oSession["response-trickle-delay"] = "55";          
        break;
    
    case "1m": // 1 mbps
        oSession["request-trickle-delay"] = "46"; 
        oSession["response-trickle-delay"] = "27";          
        break;
    
    case null:          
    default:
        break;
}

保存您的规则文件。现在,在规则 -> 模拟调制解调器速度下,您将有各种限速选项:

Throttling speeds to 512kbps

这些数字已经通过使用速度测试进行了调整,以接近实际生活中所需的速度。

Speed Test showing 512kbps throttling

加分项:尝试以56kbps的速度限制查看您最喜欢的互联网站。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接