使用UserAgent分辨出Android设备类型的安全做法
2023-06-13 09:15:41 时间
随着Android设备增多,不少网站都开始设备Android设备,而Android主流设备类型以手机和平板为主。网站在适配时通过UserAgent(用户代理,以下简称UA)又如何区分呢,本文部分内容翻译自Google官方博客Mo"bettertoalsodetect“mobile”user-agent。
一针见血
标准判断规则:MobileAndroidhas“Mobile”stringintheUser-Agentheader.TabletAndroiddoesnot.
在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;Android3.0;en-us;XoomBuild/HRI39)AppleWebKit/534.13(KHTML,likeGecko)Version/4.0Safari/534.13
因为这个UA字符串中没有mobile,所以需要把它引导到桌面版式(或者一个为Android大屏设备定制的版式)。从这个UA字符串中我们可以了解到,它来自一个大屏设置,即摩托罗拉的XOOM平板。
我们再看另一个UA字符串
Mozilla/5.0(Linux;U;Android2.2.1;en-us;NexusOneBuild/FRG83)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1
包含了mobile和android,所以把这台NexusOne手机导向到移动版式吧。
相信通过上面两个UA字符串对比,你发现了UA的一些共性了吧,我们看看这些共性吧。
最后
所以,当你依据检测UA来判断Android手机设备,请同时检查android和mobile两个字符串。
相关文章
- android 混淆不起作用,Android代码混淆的写法总结
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- Android实现点击两次返回退出APP
- Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式
- Android开发笔记(一百八十五)使用设备浏览器Device File Explorer导出存储卡的文件
- android 获取屏幕分辨率_安卓系统分辨率设置
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- Android修改字体_android设置字体样式
- Android 数据库加密 android-database-sqlcipher 开源版本编译过程
- 【Android 应用开发】Android 平台 HTTP网速测试 案例 API 分析
- 【Android 热修复】热修复原理 ( 加载 Dex 文件到内存中 | DexClassLoader | PathClassLoader | 反射 Element[] dexElements )
- [android] 用fragment创建一个选项卡详解手机开发
- 教你自己写Android第三方库详解手机开发
- java Android 检查当前是否已经连接上 Internet详解编程语言
- Android Linux开发之路(安卓linux开发)
- 硬核观察 | Android 12 发布,小米等设备可以提前测试
- 安卓编年史(25):Android 4.4,奇巧——更完美,更少的内存占用(2)
- 如何搭建适用于Android设备的Linux手游服务器(linux手游服务器搭建)
- 谷歌发布Android系统年度安全报告,一半的设备一年都没收到安全更新
- asp.net通过UserAgent判断智能设备(Android,IOS)
- Android布局控件之LinearLayout详细介绍