美文网首页
前端客户端检测

前端客户端检测

作者: 小涛涛haop | 来源:发表于2018-10-07 12:12 被阅读0次

优先采取可靠的能力检测怪癖检测,而后采用用户代理(浏览器)检测
强烈依赖主流浏览器的navigator.userAgent:

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

Firefox: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0

Safari: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2

Edge: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299

IE10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)

Opera: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 OPR/56.0.3051.31

IOS和Android:

Android: Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Mobile Safari/537.36

IOS: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1

创建一个函数返回存有客户端信息的对象

var client = function() {
  var engine = {
    ie: 0,
    gecko: 0,
    webkit: 0,
    khtml: 0,
    opera: 0,
    ver: null,
  }
  var browser ={
    ie: 0,
    firefox: 0,
    safari: 0,
    konq: 0,
    opera: 0,
    chrome: 0,
    ver: null,
  }
  //在此做检测
  return {
    engine: engine,
    browser: browser,
  }
}

1、识别呈现引擎

var ua = navigator.userAgent;
if (window.opera) {
  engine.ver = window.opera.version();
  engine.opera = parseFloat(engine.ver);
} else if (/AppleWebKit\/(\S+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.webkit = parseFloat(engine.ver);
} else if (/KHTML\/(\S+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.khtml = parseFloat(engine.ver);
} else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.gecko = parseFloat(engine.ver);
} else if (/MSIE ([^;]+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.ie = parseFloat(engine.ver);
}

2、识别浏览器

var ua = navigator.userAgent;
if (window.opera) {
  engine.ver = window.opera.version();
  engine.opera = parseFloat(engine.ver);
} else if (/AppleWebKit\/(\S+)/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.webkit = parseFloat(engine.ver);
  if(/Chrome\/(\S+)/.test(ua)){
    browser.ver = RegExp["$1"];
    browser.chrome = parseFloat(browser.ver);
  } else if (/Version\/(\S+)/.test(ua)){
    browser.ver = RegExp["$1"];
    browser.safari = parseFloat(browser.ver);
  }
} else if (/KHTML\/(\S+)/.test(ua)) {
  engine.ver = browser.ver = RegExp["$1"];
  engine.khtml = browser.konq = parseFloat(engine.ver);
} else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)) {
  engine.ver = RegExp["$1"];
  engine.gecko = parseFloat(engine.ver);
  if(/Firefox\/(S+)/.test(ua)){
    browser.ver = RegExp["$1"];
    browser.firefox = parseFloat(browser.ver);
  }
} else if (/MSIE ([^;]+)/.test(ua)) {
  engine.ver = browser.ver = RegExp["$1"];
  engine.ie = browser.ie = parseFloat(engine.ver);
}

此外还包括
识别平台( navigator.platform,win,mac,unix )
识别windows操作系统( /Win(?:dows )?([^do]{2})\s?(\d+.\d+)?/ )
识别移动设备( 正则 )
识别游戏系统( 字符串 )

注意:用户代理检测是客户端检测的最后一个选择

相关文章

  • 前端客户端检测

    优先采取可靠的能力检测或怪癖检测,而后采用用户代理(浏览器)检测强烈依赖主流浏览器的navigator.userA...

  • 文件上传

    1、客户端检测绕过(javascript 检测) 首先观察到提示只允许上传图片文件,那么前端的查看代码,当页...

  • 客户端检测的含义和方法

    大纲 1、什么是客户端检测2、客户端检测的分类3、能力检测4、怪癖检测5、用户代理检测6、客户端检测方法的选择 1...

  • 客户端检测

    本文主要简单介绍客户端检测的三种方式:能力检测、怪癖检测、用户代理检测 能力检测 最常用、广泛的客户端检测形式 是...

  • file upload(DVWA)

    检测流程概述: 1.客户端检测后缀思路:由于是客户端检测 1.通过插件禁检测机制 2使用burpsuite修改上传...

  • 第九章 客户端检测

    1.不到万不得已,就不要使用客户端检测 2.客户端检测的方式(按照使用优先级): ①能力检测:在编写代码之前先检测...

  • 09|客户端检测

    对应的客户端检测确实是一个比较重要的内容,特别是在前端开始在国内火热的时候这一部分确实非常的重要,但是随着前端的标...

  • JavaScript高级程序设计笔记9

    客户端检测 能力检测 (1)更可靠的能力检测 (2)能力检测,不是浏览器检测 怪癖检测 用户代理检测 (1)用户代...

  • js dom操作

    1.客户端检测1.1客户端检测主要包括浏览器的识别和操作系统的识别navigator.oscpu 检测操作系统na...

  • JavaScript 编程:8.客户端检测

    客户端检测 用户代理字符串检测技术 client.js 文件:

网友评论

      本文标题:前端客户端检测

      本文链接:https://www.haomeiwen.com/subject/miuhaftx.html