使用User Agent分辨出Android设备类型的安全做法
随着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的一些共性了吧,我们看看这些共性吧。
最后
所以,当你依据检测ua来判断android手机设备,请同时检查android和mobile两个字符串。
上一篇: 历史上的慈安太后真的不问政事吗?
下一篇: Android双击退出的实现方法