toc

前言

用户代理检测通过浏览器的用户代理字符串确定使用的是什么浏览器。
JavaScript 中可以通过 navigator.userAgent 访问。

Vue2中用户代理检测

Vue2 源码中,有一段用户代理检测。

var inBrowser = typeof window !== 'undefined';
var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
var UA = inBrowser && window.navigator.userAgent.toLowerCase();
var isIE = UA && /msie|trident/.test(UA);
var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
var isEdge = UA && UA.indexOf('edge/') > 0;
var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
var isPhantomJS = UA && /phantomjs/.test(UA);
var isFF = UA && UA.match(/firefox\/(\d+)/);

这段代码中,Vue2 不关心用户代理是否被篡改,选择相信浏览器返回的用户代理字符串,用来判断浏览器。因为 Vue2 的核心功能不在于 用户代理检测

篡改用户代理字符串

console.log(window.navigator.userAgent);
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
window.navigator.__defineGetter__('userAgent', () => 'helloworld');
console.log(window.navigator.userAgent);
// helloworld

总结

  • 浏览器用户代理字符串可以被篡改。

【JavaScript】用户代理检测的局限性相关推荐

  1. javascript客户端检测技术

    1. Firefox  Gecko是firefox的呈现引擎.当初的Gecko是作为通用Mozilla浏览器一部分开发的,而第一个采用Gecko引擎的浏览器是Netscape6: 我们可以使用用户代理 ...

  2. BOM之navigator对象和用户代理检测

    前面的话 navigator对象现在已经成为识别客户端浏览器的事实标准,navigator对象是所有支持javascript的浏览器所共有的.本文将详细介绍navigator对象和用户代理检测 属性 ...

  3. 用户代理检测与浏览器Ua详细分析

    . 首页 博客园 联系我 前言:用户代理字符串与用户代理检测. 先看结论/可用代码. 浏览器市场份额现状. Mozilla Firefox. Microsoft Internet Explorer. ...

  4. JavaScript类型检测小结-http://bbs.51js.com/viewthread.php?tid=82661

    老话题了,各种方案和相关讨论都不少,简单总结下: 悠久的typeof JavaScript里只有五种基本数据类型:number, string, boolean, null, undefined. 其 ...

  5. 什么才是正确的javascript数组检测方式

    什么才是正确的javascript数组检测方式 前面的话 对于确定某个对象是不是数组,一直是数组的一个经典问题.本文专门将该问题择出来,介绍什么才是正确的javascript数组检测方式 typeof ...

  6. 如何在JavaScript中检测用户的首选配色方案

    by Oskar Hane 由Oskar Hane 如何在JavaScript中检测用户的首选配色方案 (How to detect a user's preferred color scheme i ...

  7. userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

    1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 ...

  8. JavaScript数据类型检测总结

    2019独角兽企业重金招聘Python工程师标准>>> 在js中,有四种用于检测数据类型的方式,分别是: typeof 用来检测数据类型的运算符 instanceof 检测一个实例是 ...

  9. javascript漏洞-检测到目标站点存在javascript框架库漏洞

    一般是让升级为最新的版本的脚本文件,但是实际使用过程中,有的插件不兼容,盲目升级会导致网站部分插件不可用. 下面是一种解决方案. 比如漏洞扫描出jquery:2.1.4.作以下处理: 一.根据web应 ...

最新文章

  1. Flutter开发之ListView使用第三方flutter_refresh加载更多(37)
  2. css和HTML布局小技巧
  3. AGI:走向通用人工智能的【哲学】之现实世界的虚拟与真实——带你回看1998年的经典影片《The Truman Show》感悟“什么是真实”
  4. 线性Frequency Principle动力学:定量理解深度学习的一种有效模型
  5. C++函数的默认参数
  6. php mongodb _id,PHP库 查询Mongodb中的文档ID的方法
  7. javascript进制转换_「js基础」JavaScript逻辑和位运算符归纳
  8. 第3节 中间层创建与设置
  9. 栈的应用--中序表达式转后序表达式
  10. IDEA启动部署Tomcat成功但访问提示404问题
  11. SQL实战之查找所有已经分配部门的员工的last_name和first_name
  12. mysql lower case_mysql lower-case-table-names参数
  13. vue使用axios下载文件
  14. 淘淘摘苹果Python版
  15. 身份证/异地身份证在北京办理的解决办法
  16. java 字节流 字符流 的详细介绍
  17. 番茄工作法——中断(笔记)
  18. HTML5期末大作业:电商网站设计——仿淘宝电商网站管理系统21页(含毕业设计论文7500字) HTML+CSS+JavaScript
  19. Linux中如何优雅的批量合并、拆分、加密pdf文件
  20. 临床试验中edc录入_使用电子数据采集(EDC)系统进行医疗器械临床试验研究

热门文章

  1. 分享公众号抽奖的作用_微信公众号抽奖活动怎么弄
  2. SVN-查看两版本区别
  3. Unity URP 曲面细分
  4. 杜克大学计算机科学,杜克大学计算机科学硕士排名第29(2020年TFE Times排名)
  5. 免费不限量查询手机归属地的api
  6. MicrobiomeAnalyst 文件配置及使用
  7. 19.MFA-Conformer: Multi-scale Feature Aggregation Conformer forAutomatic Speaker Verification
  8. 云客Drupal源码分析之合并数组
  9. 【项目总结】电厂安全培训管理系统总结
  10. 广东省第三届强网杯Writeup