小工具知识网

当前位置: 首页 > 行业知识 > 使用Fiddler模拟网络

行业知识

使用Fiddler模拟网络

2026-11-03 17:53:09 来源:互联网转载

Fiddler已经预置提供了模拟Modem速度的选项,其位置位于: 

Rules->Performances->Simulate Modem Speeds 

勾选该选项后,所有通过Fiddler代理的流量都会变得用56k modem上网一般。

要直观观察限速后的效果,最好使用运行在浏览器中的测速工具,这里推荐用“http://www.speedtest.cn/”在线测速工具进行测试。

调整模拟恶劣网络环境的参数

直接模拟Modem速度实在是慢爆了,事实上就算是在很差信号的情况下,手机移动网络的速度都已经超过了56k 的Modem速度,所以采用默认的配置模拟出来的环境,并不一定符合需求,此时就需要对限速的参数进行调整。

Fiddler本身就提供了一个配置文件供调整这些参数,点击:

Rules – Customize Rules…

打开CustomRules.js文件(默认位于用户目录的文档目录下的Fiddler2Scripts),后缀名是js。在编辑内容中找到“m_SimulateModem”标志位:

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";         }

该标志位控制着oSession的两个参数值的设置,当勾选了Simulate Modem Speeds时,request-trickle-delay与response-trickle-delay就会被设置,其中request-trickle-delay中的值代表每KB的数据上传时会被延时多少毫秒,response-trickle-delay则对应下载每KB的数据会被延时多少毫秒,如果本身网速已经相当快的话,这里设置的值就可以近似地推算出开启模拟后的上传和下载带宽了,比如默认设置下下载延时为150ms,上传延时为300ms,对应可以推算出大致的模拟带宽为:

上传带宽=(1*8/1000)/0.300≈0.053Mbps

下载带宽=(1*8/1000)/0.150≈0.027Mbps

编写自定义脚本

进一步地扩展CustomRules.js里的逻辑,参照Jscript的文档可以在模拟恶劣环境中加入更多自定义的逻辑,这里实现了一个随机延时量设置,使得网络带宽不恒定为一个低速的值,而是会在一定范围内随机抖动:

static function randInt(min, max) {    return Math.round(Math.random()*(max-min)+min);}if (m_SimulateModem) {    // Delay sends by 300ms per KB uploaded.    oSession["request-trickle-delay"] = ""+randInt(1,50);    // Delay receives by 150ms per KB downloaded.    oSession["response-trickle-delay"] = ""+randInt(1,50);}

通过进一步扩展CustionRules.js可以实现很多需要的恶劣环境模拟场景,如果场景较为复杂的话,也可以通过编写Fiddler的插件的方式,编写C#插件代码来进一步控制Fiddler的行为,在这里就不多做赘述了。
Fiddler模拟恶劣网络环境的局限性

Fiddler进行限速较为简单和灵活,配置也较为方便,但是由于它是一个应用层的HTTP的代理,只能模拟该层上的行为,对于一些复杂的网络层的丢包、重传等恶劣情况就不能很好的模拟出来,而且对于其他协议的应用也不支持。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

上一篇:轻松下载tsr秘籍,超实用指南!

下一篇:新手怎么布置云服务器?