当前位置: 首页 > news >正文

使用Fiddler模拟网络

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的代理,只能模拟该层上的行为,对于一些复杂的网络层的丢包、重传等恶劣情况就不能很好的模拟出来,而且对于其他协议的应用也不支持。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

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

http://www.lryc.cn/news/147600.html

相关文章:

  • 【Axure高保真原型】多图表动态切换
  • 笔试题-访问控制修饰符范围
  • 基于飞腾芯片的设计与调试入门指导
  • 了解 HarmonyOS
  • 【校招VIP】产品面试之面试官的真实意图
  • 实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
  • Go 1.21新增的 maps 包详解
  • 《向量数据库指南》——腾讯云向量数据库(Tencent Cloud VectorDB) SDK 正式开源
  • Tutorial: Mathmatical Derivation of Backpropagation
  • 如何在 Linux 中设置 SSH 无密码登录
  • 什么时候用增量式PID,什么时候用位置式PID
  • Go语言入门记录:从基础到变量、函数、控制语句、包引用、interface、panic、go协程、Channel、sync下的waitGroup和Once等
  • 位运算进阶操作
  • sql:SQL优化知识点记录(四)
  • Java----Sentinel持久化规则启动
  • Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单
  • 无涯教程-Android - Grid View函数
  • 【第四阶段】kotlin语言的解构语法过滤元素
  • 和24考研说拜拜,不考研读中外合作办学硕士——人大女王金融硕士
  • https比http安全在哪
  • 基于Java的代驾管理系统 springboot+vue,mysql数据库,前台用户、商户+后台管理员,有一万五千字报告,完美运行
  • 广播、组播
  • Spring MVC 三 :基于注解配置
  • 机器学习基础16-建立预测模型项目模板
  • ReID网络:MGN网络(4) - Loss计算
  • CountDownLatch、Semaphore详解——深入探究CountDownLatch、Semaphore源码
  • windows生成ios证书的方法
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(Physique 修改器)
  • 生态项目|Typus如何用Sui特性制作动态NFT为DeFi赋能
  • IOS打包上架AppStore被驳回信息记录