zoukankan      html  css  js  c++  java
  • 微信内置浏览器和小程序的 User Agent 区别及判断方法

    通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,而对于微信开发和小程序也是同样的一个情况,我们可以通过微信内置浏览器 User Agent 信息来判断其具体类型或者设备。

    WeChat User-Agent

    所以子凡就通过徒儿和兄弟们的不同手机设备收集了一些微信内置浏览器的 UA,收集其主要目的是为了解决网站在小程序中打开博客页面后若页面有载入广告,在 iPhone 设备上会被直接拦截而导致无法访问。由于子凡移动端站点的页面是通过 js 方式插入广告代码,而且泪雪博客也使用了静态缓存,所以就无法直接使用 PHP 的方式来禁止广告代码,所以依旧选择用 javascript 代码来做个微信 UA 的判断。

    Android 系统下的微信 User Agent

    1
    2
    3
    4
    5
    
    Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN
    Mozilla/5.0 (Linux; Android 7.1.1; OD103 Build/NMF26F; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN
    Mozilla/5.0 (Linux; Android 6.0.1; SM919 Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN
    Mozilla/5.0 (Linux; Android 5.1.1; vivo X6S A Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN
    Mozilla/5.0 (Linux; Android 5.1; HUAWEI TAG-AL00 Build/HUAWEITAG-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043622 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN

    iPhone 系统下的微信 User Agent

    1
    2
    3
    4
    
    Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.6.1 NetType/4G Language/zh_CN
    Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C202 MicroMessenger/6.6.1 NetType/4G Language/zh_CN
    Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_1 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Mobile/15B150 MicroMessenger/6.6.1 NetType/WIFI Language/zh_CN
    Mozilla/5.0 (iphone x Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043632 Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/WIFI Language/zh_CN

    微信内置浏览器与小程序中的 User Agent 对比

    1
    2
    3
    4
    
    // 安卓系统中小程序 User Agent
    Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN miniProgram
    // 安卓系统中微信内置浏览器 User Agent
    Mozilla/5.0 (Linux; Android 7.1.1; MI 6 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/043807 Mobile Safari/537.36 MicroMessenger/6.6.1.1220(0x26060135) NetType/4G Language/zh_CN

    以上两段字符串均为子凡自用 MI6 安卓设备中获得,可以看出微信小程序的 UA 是和微信内置浏览器 UA 是不同的,后面会多出一小段,特别是最后的“miniProgram”字符串,就是小程序的特别的 UA,而在 iPhone 系统设备中 UA 都是一致的,小程序和内置浏览器 UA 是没有区别的。

    UA 检测和判断方法

    1
    2
    3
    4
    
    //php版本
    if( preg_match( '/MicroMessenger/', $_SERVER['HTTP_USER_AGENT'] ) ) {
    	echo '你真正使用微信访问';
    }
    1
    2
    3
    4
    5
    6
    7
    8
    
    //js版本 
    if(/MicroMessenger/i.test(navigator.userAgent)){
    	alert('你真正使用微信访问');
    }
    //或者
    if(navigator.userAgent.match(/(MicroMessenger)/i)){
    	alert('你真正使用微信访问');
    }

    以上子凡给出的两种判断方法默认都是直接使用正则表达式的方式判断是否为微信,也就是不论安卓还是苹果系统,是否小程序,都是通过 UA 中共有的“MicroMessenger”字符串来作为判断,只要判断为微信设备访问,代码中//true 就可以改为自己想要执行的代码。当然为了更准确的判断还可以自己写正则表达式匹配。

    例如:

    1
    2
    
    Android.*MicroMessenger.*miniProgram//安卓端的小程序
    iPhone.*MicroMessenger//苹果端微信或小程序

    简单总结

    相信通过以上的举例和这些 UA 可以帮助大家在微信开发 UA 方面有一丢丢小的了解,不知道大家有没有仔细的观察到,iPhone X 设备取得的 UA 和其它版本获取到的 UA 有较多的不同,并且 iphone x 的均为小写,更多的细节子凡就不详细说明了。

    最后还是要感谢徒儿和朋友们帮忙,我才能收集到这些 UA,以至于可以整理成文简单的分享,同时也必须要谢谢守望轩大叔提供开源的 WordPress 微信小程序,这样我才能有机会更快速的接入到泪雪博客。谢谢啦!

  • 相关阅读:
    黄聪:jquery mobile通过a标签页面跳转后,样式丢失、js失效的解决方法
    黄聪:jquery mobile使用form进行post提交表单没有反应,显示空白页解决方案
    黄聪:手机移动站Web响应式开发工具Viewport Resizer插件(360浏览器、谷歌Chrome浏览器兼容)
    黄聪:Discuz自制模板带jquery时与discuz本身冲突解决办法
    HTML ISO-8859-1 参考手册
    黄聪:wordpress自定义post_type,并且自定义固定链接
    黄聪:wordpress如何使用get_avatar禁止调用gravatar头像,替换为自定义头像
    Pro MapFrame
    ArcGIS Pro Layout
    pro Map
  • 原文地址:https://www.cnblogs.com/qianqiu-1026/p/8618353.html
Copyright © 2011-2022 走看看