欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

使用User Agent分辨出Android设备类型的安全做法

程序员文章站 2022-07-03 19:01:14
随着android设备增多,不少网站都开始设备android设备,而android主流设备类型以手机和平板为主。网站在适配时通过user agent(用户代理,以下简称ua...

随着android设备增多,不少网站都开始设备android设备,而android主流设备类型以手机和平板为主。网站在适配时通过user agent(用户代理,以下简称ua)又如何区分呢,本文部分内容翻译自google官方博客mo' better to also detect “mobile” user-agent。

一针见血

标准判断规则:mobile android has “mobile” string in the user-agent header. tablet android does not.
在android设备ua字符串中,移动设备包含mobile字符串,而平板设备没有。

旁征博引

在最初的android设备(即手机)中ua字符串中包含着android,所以那时候可以使用检测ua字符串中是否包含(不区分大小写)android来判断。

但是后来一个新的android设备出现了,就是android平板,不幸的是,android平板上的ua也包含android,而对于平板上更适合展示桌面(pc)的网页版式。而如果仅仅以上述的判断规则,会给平板用户带来不是很好的用户体验。

鉴于上述问题,google的android工程师提出了一个解决方案。对于引导到移动版式的设备,即手机,需要从ua字符串中同时判断是否包含mobile和android这两个单词。我们先看一些示例。

比如这个ua字符串

复制代码 代码如下:

mozilla/5.0 (linux; u; android 3.0; en-us; xoom build/hri39) applewebkit/534.13 (khtml, like gecko) version/4.0 safari/534.13

因为这个ua字符串中没有mobile,所以需要把它引导到桌面版式(或者一个为android大屏设备定制的版式)。从这个ua字符串中我们可以了解到,它来自一个大屏设置,即摩托罗拉的xoom平板。

我们再看另一个ua字符串

复制代码 代码如下:

mozilla/5.0 (linux; u; android 2.2.1; en-us; nexus one build/frg83) applewebkit/533.1 (khtml, like gecko) version/4.0 mobile safari/533.1

包含了mobile和android,所以把这台nexus one手机导向到移动版式吧。

相信通过上面两个ua字符串对比,你发现了ua的一些共性了吧,我们看看这些共性吧。

使用User Agent分辨出Android设备类型的安全做法

最后

所以,当你依据检测ua来判断android手机设备,请同时检查android和mobile两个字符串。