Android使用Fiddler模拟弱网络环境测试

2023-11-05

前言

现在的Android软件,基本上都会有网络请求,有些APP需要频繁的传输数据时对于网络请求的稳定性和在特殊网络条件下的兼容性有要求,但是我们在测试的时候又很难模拟那种弱网络差网络的情况,今天就给大家分享一篇干货来模拟弱网络情况。

正文

第一步:下载抓包软件fiddler

官网:http://www.telerik.com/fiddler

这是PC端的软件,我们模拟弱网络环境的流程大概是:手机APP使用网络代理代理到我们的pc上,然后所有的网络请求都会经过pc,这个时候我们就可以通过fiddler来限制网络,从而达到模拟弱网络环境的目的。

这就是Fiddler的主界面了:

这里写图片描述

第二步:设置fiddler

fiddler还需要设置一下需要设置一下,找到头部的Tools功能,然后点击第一个功能Options,会弹出一个界面:

这里写图片描述

找到Connections,把port改为8888,这个时候就可以使用我们的手机代理到电脑上了。

这里写图片描述

第三步:设置安卓设备代理

打开我们的手机,进入wifi设置,这里要注意的是安卓设备连接的wifi必须和我们的PC是同一个网络才能设置成功。大部分的安卓设备都可以在wifi设置里面设置代理,但是不排除有少部分设备是系统有限制的。在设置代理之前我们需要知道PC的ip地址,可以通过系统cmd命令,然后ipconfig获取,如下:

这里写图片描述

然后就可以再手机里面设置代理了,这是我的手机的wifi设置代理的界面:

这里写图片描述

设置后之后,手机上所有的网络请求都会代理到Fiddler然后可以查看了:

这里写图片描述

第四步:设置网络限制

回到我们的fiddler中来,在工具栏中找到Rules,从名字很显而易见这个功能是用来干嘛的了。再到Rules列表中找到Customize Rules,这个时候会弹出一个类似于文本编辑器的东西:

这里写图片描述

在这个文本编辑器中使用Ctrl+F使用搜索功能搜索关键字:simulate,可以找到如下代码段:

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

这里写图片描述

这段代码其余的都不用管,你只需要知道request-trickle-delay代表的是你网络请求的延迟时间,response-trickle-delay代表的是网络响应的延迟时间,单位都是毫秒,这里默认给的是300毫秒和150毫秒,所以,只需要修改这2个值即可模拟网络延迟和弱网络环境了,比如可以修改上述2个值为:2000和2000,代表网络请求延迟2秒,网络响应延迟2秒:

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

改完之后记得按Ctrl+S保存。

第五步:开启网络延迟

接下来就可以开启网络延迟了,还是我们的Rules功能中,找到Performance,然后在子选项中可以看到一个Simulate Modems Speeds,选中它,大功告成,网络延迟已经开启,如果需要关闭网络延迟,再次点击即可。

第六步:扩展弱网络规则

可能我们在测试中不会想要一个一直虚弱的网络环境,而是随机强弱的网络,这样比较贴切我们的真是情况,那么我们可以修改上述代码为:

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,2000);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,2000);
}

这里的randInt(1,2000)应该很好理解,代表1-2000中的一个随机整数,这样就会出现偶尔有延迟偶尔网络又良好的情况

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android使用Fiddler模拟弱网络环境测试 的相关文章

  • 处理 Android 锁屏上的音量变化?

    我想做的是 能够在 android 4 4 上的锁屏上捕获音量增大 减小按钮操作 Google Cast 设计清单 https developers google com cast docs design checklist sender
  • 使用 GoogleServices 插件时忽略 Gradle ArchivesBaseName

    我经常使用 archivesbasename 来重命名我的输出 apk 但自从使用 google services 插件后 它就被忽略了 我能做些什么来让它再次工作吗 下面附上了我完整的 build gradle 感谢您的指点 apply
  • startActivity overridePendingTransition 只显示进入动画

    基本上 我遇到的问题是只显示输入幻灯片动画 调用 Activity 不会产生动画 startActivity intent overridePendingTransition R anim right in partly R anim le
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • 如何使用retrofit2进行GET请求?

    我有一个在本地主机上运行的安静的 Web 服务 我想在该剩余 URL 上发出 Retrofit2 GET 请求 MainActivity java private void requestData public static final S
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • FLAG_ACTIVITY_REORDER_TO_FRONT 被忽略

    我有一个包含项目列表的 FragmentActivity 当应用程序处于后台时 可以推送该项目列表 发生这种情况时 我想创建一个状态栏通知并提醒用户更新 当用户单击通知时 活动应重新排序到前面并显示在屏幕上 同时在列表底部显示新项目 所以我
  • 在浏览器中打开 URL,即使我的应用程序为其注册了意图过滤器

    我的应用程序为某些 URL 注册了一个意图过滤器 因为它可以处理来自这些 URL 的数据 但是 在应用程序内部 我想提供一个按钮来在浏览器中打开这样的 URL 也就是说 如果设置了默认浏览器 则在默认浏览器中打开它 否则提供一个选择器 就像
  • 多语言 Android 应用程序:在电子邮件和密码字段中显示英文键盘

    我们正在开发一款多语言 Android 应用程序 针对英语和阿拉伯语 面临的问题是在登录和注册屏幕中 我们希望仅以英文文本输入用户名和密码字段 从而显示英文键盘 无论设备区域设置语言如何 已尝试在 edittext 中设置 inputtyp
  • 更改 Android 中的媒体音量?

    我可以更改媒体音量吗 如何 到目前为止我用过这个 setVolumeControlStream AudioManager STREAM MUSIC 但有一个搜索栏并且想要更改媒体音量 而不是铃声音量 那么有人可以告诉我如何更改媒体音量onC
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • Android 消费品:“已经拥有该商品”,但 inventory.hasPurchase() 为 false

    我被 Google In App v3 困住了 我测试了一次没有消费的购买 例如 当应用程序在购买和消费之间崩溃时 现在我找不到出路 如果我尝试再次购买 它会显示 您已经拥有该商品 但是当我测试所有权时 它说我不拥有它 Inventory
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 截图显示黑色

    我正在拍摄快照并创建缩略图 然后共享此图像 但缩略图显示全黑 我使用了以下代码 Bitmap bitmap View v1 v getRootView v1 setDrawingCacheEnabled true bitmap Bitmap
  • 在 android 版本 7.0 上膨胀类 android.widget.DatePicker 时出错

    我想显示弹出日期选择器并且我使用此代码 Calendar mcurrentDate Calendar getInstance int mYear mcurrentDate get Calendar YEAR int mMonth mcurr
  • 在 android 中,第一次单击时按钮侦听器未注册

    因为我是 Android 新手 所以我遇到了按钮监听器的问题 我正在使用 OnClickListener 来处理胸像 但它第一次点击后不执行一旦我单击多个 它就会表现良好 但如何使其在第一次单击时成为可能 这是我的代码 public cla
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService

随机推荐

  • 使用KubeSphere3.3在Ubuntu20.04的Kubernetes1.24上部署Word Press

    使用KubeSphere3 3在Ubuntu20 04的Kubernetes1 24上部署Word Press 前言 之前已经部署了KubeSphere和K8S的基础环境 https lizhiyong blog csdn net arti
  • 基于SSM+JSP校园二手交易系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端 采用JSP技术开发 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mave
  • 数据分析回头看1——Pandas中数据处理总结

    0 前言 因为之前自己在学习pandas的过程中就简单做了下笔记 发现在用的时候还是会比较乏力 很多东西容易忘 所以我就决定结合之前笔记的内容 按照使用pandas的习惯 把知识点梳理一下 方便之后查找和记忆 1 说明pandas中的Ser
  • fiddler抓包工具的使用

    下载 Fiddler Web Debugging Proxy and Troubleshooting Solutions 安装 下载完成后 默认安装即可 使用 双击Fiddler exe进入界面 设置是否抓包 默认时开启的 表头介绍 序号
  • 在VirtualBox虚拟机中安装Linux 6.2 - 配置

    2 在VirtualBox虚拟机node1中安装Linux 6 2 配置 三 配置 一路Forward最后Finish完成 1欢迎界面 Forward gt 2接受红帽系统协议 Forward gt 3不用注册RHN Forward gt
  • 前端初学者必会技能

    1 HTML CSS HTML和CSS是Web开发最基础的部分 其中HTML构成了网页的 骨架 CSS为网页添加了颜色样式 是网页的 皮肤 网页上所看到的文本 图片以及花花绿绿的样式都是通过HTML和CSS实现的 因此学习Web开发首先要学
  • 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个结点

    一 思路 这里分为链表结点个数是 奇数 和 偶数 两种情况 如果是奇数 中间结点只有一个 返回即可 如果是偶数 中间结点则有两个 这里要求返回第二个 上述图片展示的就是奇数的情况 此时中间结点就是 34 以上展示的就是偶数的情况 此时看到中
  • 7种常见的PPT设计元素

    转载者 彩色的翅膀ppt 搜索 7种常见的PPT设计元素 PPT的设计制作是每个人都关心的技能 如何设计好的PPT模板 在设计PPT时 所运用的元素 能起到关键作用 有时候运用一些元素 就能让PPT成为夺人眼球的一份艺术品 设计的元素 可以
  • 锐龙微型计算机,技嘉推出新BRIX Pro微型电脑:锐龙处理器加持

    10月21日 技嘉推出了两款新的BRIX Pro型号 GB BSRE 1505 和 GB BSRE 1605 使用 AMD Ryzen 嵌入式处理器 与技嘉最新推出的 Tiger Lake BRIX PC相比 这些AMD型号的尺寸没有什么不
  • mysql 窗口函数_窗口函数_解决SQL累加问题

    业务场景1 求出每月数量 amount 的累计值 这个需求在Excel里面是非常好实现的 一个求和公式直接搞定 但Excel处理的数据量毕竟有限 这个需求在SQL里 怎么来实现呢 窗口函数 select sum amount over or
  • js 过滤数组,去掉不符合条件的一项

    var str value 1 key 1 name name1 value 4 key 2 name name2 value 3 key 3 name name3 value 4 key 4 name name4 value 4 key
  • 将本地代码上传至新建的远程仓库方法(git指令简单实现)

    第一步 win R 在框中输入cmd 打开命令行窗口第二步 分别输入以下代码 文字部分为代码的功能 1 cd URL 进入需要上传代码的文件夹 URL要替换成文件夹路径 2 git init 在该文件夹中初始化Git仓库 3 git rem
  • 使用CLion单步调试Caffe

    Caffe With CLion CLion介绍 CLion是JetBrain产品线较新的一员 主要针对C C 语言的一款IDE 说起JetBrain大家应该都用过他们出的Pycharm吧 一句话形容这家公司的产品就是JetBrain出品
  • 用Java实现递归策略算法的编写汇总

    算法设计与分析 实验一 递归策略运用练习 一 实验目的 本次实验是针对递归算法的算法设计及应用练习 旨在加深学生对该算法原理的理解 提高学生运用该算法解决问题的能力 二 实验项目 1 运用递归策略设计算法实现下述题目的求解过程 题目列表如下
  • vue cli 报错 WARNING in ..node_modulesVuedistvue.runtime.esm.js

    vue cli 报错 WARNING in node modules Vue dist vue runtime esm js 解决 src文件夹 main js中 修改 import Vue from Vue 为小写 vue
  • 终于搞定了stackoverflow的富文本编辑器pagedown

    原创不易 转载请注明出处 终于搞定了stackoverflow的富文本编辑器pagedown 这个编辑器在最代码平台上运行了大半年发现确实很多人不喜欢 所以选择了ckedidor 来show下非常符合攻城师的编辑器吧 虽然刚开始可能不习惯
  • 从Linux界面下载文件有空格问题报错

    解决关于从Linux界面下载文件有空格问题报错 原因 解决方案 从CMD界面 下载文件因文件名中有空格字符导致无法下载到本地 原因 查看截图 解决方案 在全路径加上双引号即可解决问题 注意一点 双引号是英文模式的 P S 我是Roy 纯手工
  • Dubbo知识点梳理

    文章预览 Apache Dubbo 1 应用架构的演进过程 目标 路径 讲解 1 1 主流的互联网技术特点 1 2 架构演变的过程 1 2 1 单一应用架构 all in one 1 2 2 垂直应用架构 1 2 3 分布式服务架构 1 2
  • 工具--Git详解

    工具 Git详解 零 文章目录 一 什么是版本控制 1 什么是版本控制 版本控制 Revision control 是一种在开发的过程中用于管理我们对文件 目录或工程等内容的修改历史 方便查看更改历史记录 备份以便恢复以前的版本的软件工程技
  • Android使用Fiddler模拟弱网络环境测试

    前言 现在的Android软件 基本上都会有网络请求 有些APP需要频繁的传输数据时对于网络请求的稳定性和在特殊网络条件下的兼容性有要求 但是我们在测试的时候又很难模拟那种弱网络差网络的情况 今天就给大家分享一篇干货来模拟弱网络情况 正文