客户端检测之软件与硬件检测

一 识别浏览器与操作系统

这些属性的值的初始化取决于浏览器和设备状态

属性作用类型参数例子特殊
navigator.oscpu通常对应用户代理字符串中操作系统/系统架构相关信息字符串/例子1
navigator.vendor通常包含浏览器开发商信息字符串/例子2
navigator.platform通常表示浏览器所在的操作系统字符串/例子3
screen.colorDepth && screen.pixelDepth返回一样的值,即显示器每像素颜色的位深//例子4根据CSS对象模型(CSSOM)规范
screen.orientation

返回一个ScreenOrientation对象,其中包含Screen Orientation API定义的屏幕信息(属性:angle、type)

/

/

例子5

例子5:

angle:返回相对于默认状态下屏幕的角度

type:返回4种枚举值之一

  • portrait-primary
  • portrait-secondary
  • landscape-primary
  • landscape-secondary

 

例子1:

 例子2:

例子3:

 例子4:

二 浏览器元数据

作用:可以提供浏览器和操作系统的状态信息

API 1 : Geolocation API

调用对象:navigator.geolocation 

作用:可以让浏览器脚本感知当前设备的地理位置(只在安全执行环境,通过HTTPS获取的脚本)中可用

地理位置信息的主要来源是GPS和IP地址、射频识别(RFID)、WiFi及蓝牙Mac地址、GSM/CDMA蜂窝ID以及用户输入等信息

方法:

  • getCurrentPosition()
    • 作用:要获取浏览器当前的位置
      (成功回调是第一个参数,失败回调是第二个参数,PositionOptions对象是第三个参数)
    • 获取成功的返回值:一个包含坐标信息的Coordinates对象(coords))+ 一个表示查询时间的时间戳(timestamp)
      • Coordinates对象:
        • 标准格式的经度和纬度: latitude longitude
        • 以米为单位的精度:accuracy
        • 海拔高度:altitude
        • 精度值:altitudeAccuracy
        • 设备每秒移动的速度:speed
        • 朝向:heading           

// getCurrentPosition()会以position 对象为参数调用传入的回调函数 
navigator.geolocation.getCurrentPosition((position) => p = position); 
console.log(p.timestamp);  // 1525364883361 
console.log(p.coords);     // Coordinates {...} 
console.log(p.coords.latitude, p.coords.longitude);   // 37.4854409, -122.2325506 
console.log(p.coords.accuracy);                       // 58
console.log(p.coords.altitude);          // -8.800000190734863 
console.log(p.coords.altitudeAccuracy);  // 200 
  • 获取失败的返回值
    • PositionError对象:
      • 属性:
        • code:
        • 错误定义
          PERMISSION_DENIED浏览器未被运行访问设备位置
          POSITION_UNAVAILABLE系统无法返回任何位置信息
          TIMEOUT系统不能在超时时间内返回位置信息
        • message:
// 浏览器会弹出确认对话框请用户允许访问Geolocation API 
// 这个例子显示了用户拒绝之后的结果  
navigator.geolocation.getCurrentPosition( 
  () => {}, 
  (e) => { 
    console.log(e.code);     // 1 
    console.log(e.message);  // User denied Geolocation 
  } 
); 
 

// 这个例子展示了在不安全的上下文中执行代码的结果 
navigator.geolocation.getCurrentPosition( 
  () => {}, 
  (e) => { 
    console.log(e.code);     // 1 
    console.log(e.message);  // Only secure origins are allowed 
  } 
);
  • PositionOptions对象
    • 属性定义
      enableHighAccuracy设备返回精确的坐标

      布尔值,

      true表示返回的值应该尽量精确,

      默认值为false

      timeout表示在以timeout状态调用错误回调函数之前等待的最长时间毫秒
      maximumAge表示返回坐标的最长有效期毫秒

API 2: Connection State && NetworkInfomation API

API 3: Battery Status API

浏览器可以访问设备电池及充电状态的信息

navigator.getBattery()方法会返回一个期约实例,解决为一个BatteryManager对象

navigator.getBattery().then((b) => console.log(b)); 
// BatteryManager { ... }

只读属性:(提供了设备电池的相关信息)

属性定义类型返回值
charging表示设备当前是否正接入电源充电boolean有电池,返回true
chargingTime表示预计离电量充满还有多少秒int如果电池已充满或设备没有电池,返回0
dischargingTime表示预计离电量耗尽还有多少秒int如果设备没有电池,返回Infinity
level表示电量百分比float

电量完全耗尽返回0.0

电池充满返回1.0

如果设备没有电池,则返回1.0

事件属性:(可用于设置在相应的电池事件发生时调用的回调函数)

  • onchargingchange
  • onchargingtimechange
  • ondischargingtimechange
  • onlevelchange
navigator.getBattery().then((battery) => {  

  // 添加充电状态变化时的处理程序 
  const chargingChangeHandler = () => console.log('chargingchange'); 
  battery.onchargingchange = chargingChangeHandler; 
  // 或 
  battery.addEventListener('chargingchange', chargingChangeHandler); 

  // 添加充电时间变化时的处理程序 
  const chargingTimeChangeHandler = () => console.log('chargingtimechange'); 
  battery.onchargingtimechange = chargingTimeChangeHandler; 
  // 或 
  battery.addEventListener('chargingtimechange', chargingTimeChangeHandler); 
 

  // 添加放电时间变化时的处理程序 
  const dischargingTimeChangeHandler = () => console.log('dischargingtimechange'); 
  battery.ondischargingtimechange = dischargingTimeChangeHandler; 
  // 或 
  battery.addEventListener('dischargingtimechange', dischargingTimeChangeHandler); 
 

  // 添加电量百分比变化时的处理程序 
  const levelChangeHandler = () => console.log('levelchange'); 
  battery.onlevelchange = levelChangeHandler; 
  // 或 
  battery.addEventListener('levelchange', levelChangeHandler); 
})

三 硬件

  1. 处理器核心数

    navigator.hardwareConcurrency属性返回浏览器支持的逻辑处理器核心数量,包含表示核心数的一个整数值
     
  2. 设备内存大小

    navigator.deviceMemory属性返回设备大致的系统内存大小,包含单位为GB的浮点数
     
  3. 最大触点数

    navigator.maxTouchPoints属性返回触摸屏支持的最大关联触点数量,包含一个整数值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 客户端性能测试主要是针对客户端软件或应用程序的性能进行测试,包括以下几个方面: 1. 响应时间测试:测试客户端软件或应用程序的响应时间,即用户发出请求到客户端系统做出响应的时间。 2. 负载测试:测试客户端软件或应用程序在承受大量数据和用户同时访问的情况下的性能表现。 3. 并发测试:测试客户端软件或应用程序在多个用户同时访问时的性能表现。 4. 稳定性测试:测试客户端软件或应用程序的稳定性,包括是否容易崩溃等问题。 5. 安全性测试:测试客户端软件或应用程序的安全性,包括是否容易被黑客攻击、是否存在漏洞等问题。 6. 兼容性测试:测试客户端软件或应用程序在不同操作系统、不同硬件设备、不同浏览器等不同环境下的兼容性。 测试方法包括手动测试和自动化测试,其中自动化测试可以使用工具如Selenium、Appium等来实现。测试时需要进行数据采集、分析,同时需要进行性能优化和问题排查。 ### 回答2: 客户端性能测试主要是为了评估客户端应用程序的性能表现,包括响应时间、负载能力和稳定性等方面。主要包括以下几种测试方法: 1. 响应时间测试:测试客户端应用程序处理各种请求的时间,包括启动时间、加载时间、操作响应时间等。通过监控和分析请求的完成时间,可以评估客户端应用程序的响应速度。 2. 负载能力测试:测试客户端应用程序在高并发请求情况下的性能表现,以确定其能够承受的最大负载和瓶颈点。通过模拟多个用户同时向客户端应用程序发送请求,可以评估其在高负载情况下的表现。 3. 稳定性测试:测试客户端应用程序在长时间运行和连续使用条件下的稳定性和可靠性。通过模拟持续的请求和使用场景,检测应用程序是否会出现崩溃、内存泄漏或其他异常情况。 4. 安全性测试:测试客户端应用程序在防护和抵御各种安全攻击的能力。通过模拟不同类型的攻击,如拒绝服务攻击、数据篡改等,评估客户端应用程序的安全性。 5. 兼容性测试:测试客户端应用程序在不同操作系统、不同硬件设备和不同网络环境下的兼容性和适应性。通过在各种环境下测试和验证客户端应用程序的功能和性能,确保其能够在各种条件下正常运行。 总之,客户端性能测试的主要内容包括响应时间、负载能力、稳定性、安全性和兼容性等方面的测试。这些测试方法可以帮助评估客户端应用程序的性能表现,并找出潜在的问题和改进的空间。 ### 回答3: 客户端性能测试主要是评估客户端应用程序在不同负载条件下的性能表现,以确定其在实际使用过程中的稳定性和响应能力。其主要内容包括以下几个方面: 1. 响应时间测试:测试客户端应用程序在不同压力下的响应时间,即请求到客户端应用程序响应完成的时间。通过测量不同负载下的响应时间,可以评估应用程序的性能。 2. 负载测试:测试客户端应用程序在大量并发用户请求的情况下的性能。通过模拟多个并发用户同时向客户端应用程序发起请求,并观察应用程序处理请求的能力,以确定其可承受的负载。 3. 稳定性测试:测试客户端应用程序在长时间运行情况下的稳定性和抗压能力。通过持续运行应用程序,并观察其在不同条件下的表现,包括资源利用率、内存泄漏等,以确定其在长时间运行情况下是否稳定可靠。 4. 安全性测试:测试客户端应用程序在面对安全威胁时的表现。例如,模拟网络攻击或恶意代码注入等情况,以评估应用程序的安全性。 测试方法包括以下几种: 1. 虚拟用户测试:通过模拟多个虚拟用户同时使用客户端应用程序,以模拟真实用户的行为,测试应用程序在实际使用时的性能。 2. 负载生成器测试:使用负载生成器工具模拟大量并发用户并发送请求,以测试应用程序在承受大负载时的性能。可以通过调整负载生成器的参数,模拟不同负载条件。 3. 压力测试:通过模拟高负载情况,测试客户端应用程序在极限压力下的性能。可以通过增加并发用户数、增大请求量等方式,测试应用程序的极限性能。 4. 安全测试:通过模拟各种安全威胁和攻击场景,评估应用程序在不同安全威胁下的表现。包括漏洞扫描、恶意输入测试等方法。 总之,客户端性能测试的主要内容是评估客户端应用程序在真实使用情况下的性能表现,通过响应时间、负载、稳定性和安全性等方面的测试,可以帮助发现和解决潜在的性能问题,提升客户端应用程序的质量和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值