用户代理字符串
safari: 2003年,Apple公司发布自己的Web浏览器,名字为Safari。safari的呈现引擎叫WebKit,是Linux平台中Konqueror浏览器的呈现引擎KHTML的一个分支。几年后,WebKit独立出来专注于呈现引擎的开发
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6
chrome: 谷歌公司的Chrome浏览器以WebKit作为呈现引擎,但使用了不同的JS引擎
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
识别代码
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};// 平台、设备和操作系统var system = {win: false,mac: false,xll: false, // unix// 移动设备iphone: false,ipod: false,ipad: false,ios: false,android: false,nokiaN: false,winMobile: false,// 游戏系统wii: false,ps: false};// 检查呈现引擎和浏览器var ua = navigator.userAgent;if(window.opera){engine.ver = browser.ver = window.opera.version();engine.opera = browser.opera = parseFloat(engine.ver);} else if (/AppleWebKit\/(\S+)/.test(ua)){engine.ver = RegExp["$1"];engine.webkit = parseFloat(engine.ver);// 确定是Chrome还是Safariif(/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 {// 近似地确定版本号var safariVersion = 1;if(engine.webkit < 100){safariVersion = 1;}else if(engine.webkit < 312){safariVersion = 1.2;}else if(engine.webkit < 412){safariVersion = 1.3;}else{safariVersion = 2;}browser.safari = browser.ver = safariVersion;}} else if (/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.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);// 确定是不是Firefoxif(/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.ver = browser.ie = parseFloat(engine.ver);}// 检测浏览器browser.ie = engine.ie;browser.opera = engine.opera;// 检测平台var p = navigator.platform;system.win = p.indexOf("Win") == 0;system.mac = p.indexOf("Mac") == 0;system.xll = (p == "Xll") || (p.indexOf("Linux") == 0);// 检测Windows操作系统if(system.win){if(/Win(?:dows )?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){if(RegExp["$1"] == "NT"){switch(RegExp["$2"]){case "5.0":system.win = "2000";break;case "5.1":system.win = "XP";break;case "6.0":system.win = "Vista";break;case "6.1":system.win = "7";break;default:system.win = "NT";break;}} else if (RegExp["$1"] == "9x"){system.win = "ME";} else {system.win = RegExp["$1"];}}}// 移动设备system.iphone = ua.indexOf("iphone") > -1;system.ipod = ua.indexOf("ipod") > -1;system.ipad = ua.indexOf("ipad") > -1;system.nokiaN = ua.indexOf("NokiaN") > -1;// window mobileif(system.win == "CE"){system.winMobile = system.win;} else if (system.win == "Ph"){if(/Window Phone OS (\d+.\d+)/.test(ua)){system.win = "Phone";system.winMobile = parseFloat(RegExp["$1"]);}}// 检查IOS版本if (system.mac && ua.indexOf("Mobile") > -1) {if (/CPU (?:iPhone)?OS (\d+_\d+)/.test(ua)) {system.ios = parseFloat(RegExp.$1.replace("_", "."));} else {system.ios = 2; // 因为没有办法确定到底是什么版本,所以设置为更早的版本比较稳妥}}// 检查Android版本if (/Andriod (\d+\.\d+)/.test(ua)) {system.andriod = parseFloat(RegExp.$1);}// 游戏系统system.wii = ua.indexOf("Wii") > -1;system.ps = /playstation/i.test(ua);return {engine: engine,browser: browser,system: system};}();
