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

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

Android 系统下的微信 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/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

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 对比

// 安卓系统中小程序 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 检测和判断方法

//php版本

if( preg_match( '/MicroMessenger/', $_SERVER['HTTP_USER_AGENT'] ) ) {

echo '你真正使用微信访问';

}

//js版本

if(/MicroMessenger/i.test(navigator.userAgent)){

alert('你真正使用微信访问');

}

//或者

if(navigator.userAgent.match(/(MicroMessenger)/i)){

alert('你真正使用微信访问');

}

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

例如:

Android.*MicroMessenger.*miniProgram//安卓端的小程序

iPhone.*MicroMessenger//苹果端微信或小程序

简单总结

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

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

微信useragent java_微信内置浏览器和小程序的 User Agent 区别及判断方法相关推荐

  1. 调试微信 PC 端的内置浏览器界面

    2021-08-03 最新更新 好久没看,微信也更新了好几版.下面的方法并没有失效,不过上了 3.3.x 后的微信版本已经禁用了右键和查看 chrome://version 的功能了.进过实测,最后一 ...

  2. 微信useragent java_微信内置浏览器UserAgent的判断

    需求分析 现在微信火了,很多线上的APP都希望通过分享的URL或直接的URL进行产品宣传(写这篇博文的时候,听说微信下个版本将要屏蔽微信中的URL链接),这些链接都将通过微信内置的浏览器打开.PM希望 ...

  3. js判断是否微信PC端打开内置浏览器

    function isWeChat(){var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/MicroMessenger/i) ...

  4. 微信这个坑**的内置浏览器--我很无语

    2019独角兽企业重金招聘Python工程师标准>>> 先来说一下微信的内置浏览器--qq浏览器x5内核,网上去查了一下它的评价,反正没有看到一篇是说它好的,看看知乎大神的评价,真的 ...

  5. android x86 按键精灵,界面版按键精灵的使用【包含内置浏览器、打开程序的方法】...

    包含界面的脚本.....................................................自己拖拽包,根据这里的控件名命名,然后自己拖拽 '打开九阴真经 Event Fo ...

  6. 微信调试--微信内置浏览器为什么对pharser.js支持这么差???

    微信内置浏览器对于html5的支持如何? 是否可以等同于webkit内核的浏览器?CSS3动画的支持程度怎么样? 添加评论 分享 按投票排序按时间排序 31 个回答 28赞同 反对,不会显示你的姓名 ...

  7. 微信内置浏览器调试和调试微信内的H5页面汇总(持续更新...)

    调试PC端微信内置浏览器(只支持3.2.1以下的) (1)添加以下代码, 查看chrome版本和内核安放位置 <html><script type="text/javasc ...

  8. 微信内置浏览器怎么才能自动跳转到手机自带浏览器

    上半年公司有一个新的APP项目上线,我们在项目首页做个二维码,然后用户用手机扫一扫就能下载了.但是很多用户反映扫一扫之后下载不了,了解之后才知道这些用户都是使用的微信的扫一扫,而我们开发测试人员一般使 ...

  9. 转载--video标签在微信内置浏览器和QQ浏览器(手机端)的怪异现象

    用H5做了一个新闻信息展示的网页,video标签总是处于最顶层,调节z-index的值不起作用,对于flash也是一样的情况,flash已设置wmode属性.在PC端和手机端大部分浏览器(360.小米 ...

最新文章

  1. oracle只修改年份
  2. firefox显示nagios
  3. 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )
  4. Testing for SSL renegotiation
  5. 如何设计一个合适的系统电源
  6. 在 ABP vNext 中编写仓储单元测试的问题一则
  7. ASP.NET获取IP地址与MAC地址方法
  8. Java 加密解密之对称加密算法PBE
  9. WinCC V7.4 入门笔记
  10. axure rp8 添加动态面板_Axure原型教程:使用动态面板简单实现三级菜单
  11. 实现局部滚动的两种方法:1.三行css代码2.使用BScroll框架
  12. Hadoop3.x 之 MapReduce 开发总结(月薪过万)
  13. APUE编程:83---信号处理(SIGABRT信号与abort函数)
  14. 踩坑日志:go并发读取文件
  15. 我们公司的短信接口被刷了,瞬间损失两万,怎么解决?(短信接口被盗刷系列1)
  16. 【洞见研报】研报速读:新能源汽车产业链全景图谱——自动驾驶
  17. 大学教授郑强的经典语录
  18. 听见丨美国大型连锁创客空间TechShop破产 首汽约车获7亿元B+轮融资 百度和蔚来汽车等领投
  19. 三年级计算机教案 渔舟唱晚,人音版五级上册音乐 渔舟唱晚 教案 .docx
  20. 基于安装django报错信息的处理方案

热门文章

  1. DataGrip连接Mysql报08S01解决方案
  2. 【我的Android进阶之旅】 高效的设计稿标注及测量工具Markman介绍
  3. idhttp的socket error # 10054 错误的处理办法
  4. opencv 拍摄并保存照片
  5. LTE学习笔记4之物理层信道与信号
  6. CES Asia展华为秀肌肉,布局智能互联生态
  7. 华为RH2288 V3安装Windows server/Linux详细教程
  8. 2022 ICPC Gran Premio de Mexico Repechaje 题解
  9. C#要点技术(二) - Dictionary 底层源码剖析
  10. nfs挂在内核或U-boot出错TT***ERROR:Cannotumount