网站如何判断请求是来自手机-移动端还是PC端-电脑端?如何让网站能适应不同的客户端?附常见设备-浏览器的user-agent(User-Agent)

如果网站需要实现手机和PC双界面适应,可以有两种方式:
第一种是响应式界面,根据屏幕宽度来判定显示的格式。这种需要前端来做,手机/PC共用一套代码,有一定的局限性。

第二种是后端通过request请求头中的内容来分析客户端设备类型,从而返回不同的参数响应。这种方法需要前端写两套代码,根据后台返回的参数不同而跳转到不同的界面。

个人比较倾向于第二种方法,第二种方法显示页面的兼容性更强,不会造成一些意想不到的由客户端不同造成的兼容性问题。

那么怎么判断呢?
可参照下面两篇博文进行:
https://blog.csdn.net/weixin_27322123/article/details/116516053

https://blog.csdn.net/qq_38084142/article/details/81663465

其实上面两篇博文的价值就告诉你在headers中,如果有哪些关键字就可判断为来自于移动端,否则就认为是电脑端。

在分析了自己网站的日志后,并结合上面的文章,总结出如下关键词为来自移动端:

mobile
android
mac os
windows phone
iphone
ipad

上面的mac os应该算作PC端,因为mac是用在苹果的个人笔记本(MacBook)和台式电脑(iMac)上的系统。所以正确的移动端包含的关键字如下:

mobile
android
windows phone
iphone
ipad

另外,我们还可以把含phone的合并,并把ipad变为pad,所以最终我们要判断user-agent里含不含下面这些字符串,如果含,则认为是移动端,如果不含,则认为不是移动端:

mobile
android
phone
pad

注意:先要对headers全部转换为小写哦。

附一些常见的浏览器的user-agent(User-Agent)

android、mobile:

"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Mobile Safari/537.36"

iphone、mobile、mac os:

"Mozilla/5.0 (iPhone; CPU iPhone OS 16_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.38(0x1800262b) NetType/WIFI Language/zh_CN qcloudcdn-xinan Request-Source=4 Request-Channel=99

ipad、mobile、mac os:

"Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"

华为平板移动端模式的uer-agent如下:

"Mozilla/5.0 (Linux; Android 9; HarmonyOS; JDN2-W09; HMSCore 6.12.2.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 HuaweiBrowser/14.0.4.301 Mobile Safari/537.36"

华为手机上自带的浏览器开移动端模式如下:

"Mozilla/5.0 (Linux; Android 12; HarmonyOS; BMH-AN10; HMSCore 6.12.2.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 HuaweiBrowser/14.0.0.330 Mobile Safari/537.36"

上面这个user-agent各部分意义解释如下:

  1. Mozilla/5.0: 这是标准的Mozilla格式标识符,表明该User-Agent字符串是为了与Mozilla浏览器兼容而设计的。实际上,现代浏览器的User-Agent字符串通常以"Mozilla/5.0"开头,即使它们不是Mozilla浏览器。

  2. (Linux; Android 12; HarmonyOS; BMH-AN10; HMSCore 6.12.2.302): 这部分提供了有关操作系统的信息。在这个例子中,用户代理运行在一个Linux内核上,版本为Android 12,同时还包括了HarmonyOS的信息,表明可能是华为设备。

  3. AppleWebKit/537.36 (KHTML, like Gecko): 这表示浏览器内核,通常用于渲染网页。在这里,浏览器内核是WebKit,支持KHTML(KHTML是一个用于Konqueror浏览器的渲染引擎)和Gecko(Mozilla Firefox浏览器的引擎)。Applewebkit/537.36是主流浏览器(如Chrome、Safari等)中的核心引擎,是用于处理网页显示的主要软件组件之一。它是由Webkit引擎(一个开源的Web浏览器引擎)衍生出来的。

  4. Chrome/99.0.4844.88: 这是浏览器的名称和版本信息。在这个例子中,浏览器是Chrome,版本号是99.0.4844.88。

  5. HuaweiBrowser/14.0.0.330: 这是另一个浏览器的信息,可能是设备上的另一个浏览器。在这里,浏览器是华为浏览器,版本号是14.0.0.330。应该说是华为浏览器在Chrome浏览器的基础上开发而来,而Chrome浏览器用的核是AppleWebKit/537.36。

  6. Mobile Safari/537.36: 这是指浏览器的用户代理是模拟移动设备的Safari浏览器,版本号是537.36。

总的来说,该User-Agent字符串表示一个在Android 12上运行的设备,可能是华为设备,同时使用了Chrome和华为浏览器来访问网页。

手机上的傲游浏览器的如下:

"Mozilla/5.0 (Linux; Android 12; BMH-AN10 Build/HUAWEIBMH-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/99.0.4844.88 Mobile Safari/537.36"

手机上的QQ浏览器如下:

"Mozilla/5.0 (Linux; U; Android 12; zh-cn; BMH-AN10 Build/HUAWEIBMH-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.5414.86 MQQBrowser/13.8 Mobile Safari/537.36 COVC/046801"

PC端上的360极速浏览器,开移动端模式,发现uer-agent如下:

"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Mobile Safari/537.36"

PC端上的360极速浏览器,开电脑模式,发现uer-agent如下:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"

华为平板开电脑模式,发现uer-agent如下:

182.149.202.20 - - [28/Nov/2023:13:36:26 +0800] "GET /index/ HTTP/1.1" 200 670 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Safari/537.36"

手机上的傲游浏览器开电脑模式,发现uer-agent如下:

"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36  MxBrowser/7.0.3.4000"

手机上的华为自带浏览器,开电脑模式,发现uer-agent如下:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Safari/537.36"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值