js识别当前用户设备的几个方法
公司要做一个APP下载页面,里面需要判断是安卓还是苹果访问本页面,最开始想偷懒直接在给IOSAPP返回IOSAPP商店地址,然后Android直接进行访问。但想着毕竟做两个页面不利于后期维护和修改,打算还是随手写一段js进行判断。
js对客户端的操作系统进行判断主要通过navigator中的信息进行分析判断。其中常用于判断的有navigator.platform、navigator.userAgent这两个。
platform(运行浏览器的操作系统平台)
在windows下显示了Win32,在安卓设备下显示Linuxi586,在mac中显示了MacPPC,在iphone中显示IOS...找出我们需要的平台的信息,通过indexOf进行判断是否存在关键字,即可判断。
UserAgent(由客户机发送服务器的 user-agent 头部的值)
UserAgent中一般会附带部分操作系统特有的值,比如安卓设备中会有‘Android’、‘Adr’,IOS设备中会有'iPhone OS'等,通过这些特征即可进行判断。
方法远不止这两种,还有通过navigator中的appVersion等其他属性进行判断亦可,但所有的判断都做不到百分百准确,因为这些都是通过分析客户端发送的信息进行判断,但如果客户通过修改客户端进行伪造,亦是可以的。前段时间百度云不允许在网站上下载大文件,必须要下载客户端,很快就有网友发现了绕开的方法。其原理就是对于操作系统的判断,百度云网站中首先判断该用户使用的是否为windows操作系统,如果是则不允许下载超过一定大小的文件,而在linux中则可以,网友通过修改platform的信息简单实现了破解,其中涉及的知识不深,但需要灵活运用,还是要对navigator熟悉才可。