【前端】用JS获取部分设备信息

概要

今天有人在群里问闲人:如何获得设备的WIFI状态
说到有关设备的信息,作为老司机,第一时间就要想到navigator
所有navigator相关的接口都有兼容性限制,使用前都需要先确定下兼容性
传送门:https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator

说明

查阅列表之后找到了navigator.connection只读属性,该接口返回一个NetworkInformation
里面包含:

type:网络类型,bluetooth、cellular、ethernet、none、wifi、wimax、other、unknown。
downlinkMax:底层连接技术的最大下行链路速度,以兆比特每秒 (Mbps) 为单位。

还有一个onchange监听网络状态变化的方法,该方法的回调函数返回的EventTarget中除了上面两个属性以外,还包含以下属性:

downlink:以兆比特每秒为单位的有效带宽估计值,四舍五入到 25 千比特每秒的最接近倍数。
effectiveType:返回连接的有效类型,表示“slow-2g”、“2g”、“3g”或“4g”之一。该值是使用最近观察到的往返时间和下行链路值的组合来确定的。
rtt:当前连接的估计有效往返时间,四舍五入到最接近的 25 毫秒的倍数。

saveData:用户是否在浏览器选项中限制了请求速度。

追问

如何获得用户的WIFI列表
思考:大家思考一下,WIFI路由器设置上是否都有一个隐藏SSID广播的功能?用来让无关人员不能尝试直接链接路由器。知道WIFI名称的用户,能够通过主动输入WIFI名称和密码来访问该WIFI。
假设:JS可以获得WIFI账户,那么网站管理员就可以获得到所用户隐藏的WIFI名称,这就对用户隐私造成了侵犯
结论目前浏览器不会开放获取WIFI列表的能力
附加解决方案:通过路由器功能,主动注入一些信息到网站,这样就可以通过这些自定义信息来判断当前是否链接到了你预期试用的路由器上了,此方案需要路由器嵌入开发的能力,不适合普通前端开发人员

总结

以上就是今天的分享了,希望能帮到大家。
小窍门:查询资料时一定要使用标准规范的专业网站。

你可能感兴趣的:(web前端,前端,javascript,信息安全)