JavaScript获取用户User-Agent(UA)信息完整示例

解析用户的 User-Agent(UA)字符串来获取设备信息(例如操作系统、浏览器、设备类型等)通常需要通过正则表达式匹配来识别不同的 UA 模式。为了简化这一过程,我们可以使用一个 JavaScript 函数来实现。下面是一个简单的示例,它会返回用户的设备信息,包括操作系统、浏览器、设备类型等:

function parseUserAgent(ua) {
  const result = {
    os: null,        // 操作系统
    browser: null,   // 浏览器
    device: null,    // 设备类型
    version: null,   // 浏览器版本
  };

  // 检测操作系统
  const osPatterns = {
    Windows: /Windows NT (\d+\.\d+)/,
    MacOS: /Mac OS X (\d+_\d+)/,
    Linux: /Linux/,
    iOS: /iPhone|iPad|iPod/,
    Android: /Android (\d+\.\d+)/,
    ChromeOS: /CrOS/,
  };

  for (const [os, pattern] of Object.entries(osPatterns)) {
    const match = ua.match(pattern);
    if (match) {
      result.os = os;
      result.version = match[1].replace('_', '.');  // 替换 MacOS 中的 "_" 为 "."
      break;
    }
  }

  // 检测浏览器和版本
  const browserPatterns = [
    { name: "Chrome", regex: /Chrome\/(\d+\.\d+)/ },
    { name: "Safari", regex: /Version\/(\d+\.\d+)/ },
    { name: "Firefox", regex: /Firefox\/(\d+\.\d+)/ },
    { name: "Edge", regex: /Edg\/(\d+\.\d+)/ },
    { name: "Opera", regex: /OPR\/(\d+\.\d+)/ },
    { name: "IE", regex: /Trident.*rv:(\d+\.\d+)/ }, // Internet Explorer
  ];

  for (const { name, regex } of browserPatterns) {
    const match = ua.match(regex);
    if (match) {
      result.browser = name;
      result.version = match[1];
      break;
    }
  }

  // 检测设备类型
  if (/mobile/i.test(ua)) {
    result.device = 'Mobile';
  } else if (/tablet/i.test(ua)) {
    result.device = 'Tablet';
  } else {
    result.device = 'Desktop';
  }

  return result;
}

// 示例用法
const userAgent = navigator.userAgent;  // 获取当前浏览器的 User-Agent 字符串
const deviceInfo = parseUserAgent(userAgent);

console.log(deviceInfo);

代码解析:
1.操作系统检测:通过正则表达式匹配 User-Agent 字符串中的操作系统信息,并提取操作系统类型及其版本。常见的操作系统包括 Windows、MacOS、Linux、iOS、Android 等。

2.浏览器检测:通过正则表达式匹配浏览器名称和版本。我们匹配了常见浏览器(Chrome、Safari、Firefox、Edge、Opera 和 Internet Explorer)。

3.设备类型检测:通过检查 User-Agent 字符串是否包含 mobile 或 tablet 来确定设备类型。如果没有,则默认是桌面设备。

4.返回结果:返回一个包含操作系统、浏览器、设备类型和浏览器版本的对象。

示例输出:
假设浏览器的 User-Agent 字符串为:

const userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36";
 

示例输出:
假设浏览器的 User-Agent 字符串为:

{
  os: 'Windows',
  browser: 'Chrome',
  device: 'Desktop',
  version: '91.0'
}

提示:
1.浏览器和操作系统匹配:这个实现覆盖了常见的浏览器和操作系统,但对于一些不太常见的情况可能没有做处理。你可以根据实际需求扩展正则表达式。

2.设备类型:此处的设备类型识别是简化版,通过简单的正则判断是否是移动设备或平板设备。如果需要更准确的检测,可能需要更复杂的逻辑。

3.自定义:可以根据具体需求定制返回的信息,或者加入更多的设备属性识别。

一个简单的User-Agent库,可以从一条User-Agent字符串获取用户的相关信息。 支持平台: Node.JS / (Windows) Classical ASP / (Windows) WScript / (Windows) CScript / Internet Explorer 6 / Google Chrome / Mozilla Firefox / Apple Safari 安装方式:npm: $ npm install useragent.js bower: $ bower install useragent.js支持检测列表: Tested Browsers: 114Browser / 115Browser / 2345Chrome / 2345Explorer / 360 Aphone Browser / 360 Explorer / Abolimba / Acoo Browser / Alienforce / Amaya / Amazon Silk / America Online Browser / Amiga / Android Webkit / AOL / Arora / Atomic Web Browser / Avant Browser / Baidu Browser / Barca Proxxxx / BarcaC3 / Beamrise / Beonex / BlackBerry / Blackbird / BlackHawk / Blazer / Bolt / BonEchob2 / BrowseX / Browzar / Bunjalloo / Camino / Charon / Cheshire / Chimera / Chrome Mobile / ChromePlus / Chromium / Classilla / Coast / Columbus / CometBird / Comodo Dragon / Conkeror / CoolNovo / CoRom / Crazy Browser / curl / Cyberdog / Deepnet Explorer / Demeter / DeskBrowse / Dillo / DoCoMo / DocZilla / Dooble / Doris / Dorothy / Edbrowse / Element Browser / Elinks / Enigma / Epic / Epiphany / Escape / Fennec / Firebird / Firefox / Fireweb Navigator / Flock / Fluid / Galaxy / Galaxy Nexus / Galeon / GlobalMojo / GNU IceCat / GO Browser / Google Chrome / Google Chrome Frame / Google CriOS / GoSurf / GranParadiso / GreenBrowser / Gtk WebCore / Hana / HotJava / Hv3 Build / IBM WebExplorer / IBrowse / iCab / Iceape / IceBrowser v6 / IceWeasel / IEMobile / iNet Browser / Internet Explorer / Internet Explorer Spartan / InternetSurfboard / iRider / Iris / JuziBrowser / Kapiko / Kazehakase / Kirix Strata / KKman / K-Meleon / KMLite / K-Ninja / Konqueror / LBrowser / LeechCraft / Liebao Browser / Liebaofast / Links / Lobo / lolifox / Lorentz / Lunascape / Lynx / Madfox / Maemo Browser / Maple Browser / Maxthon / Maxthon / MIB / Midori / Midori / Minefieldb4pre / Minimo / MiuiBrowser / Mobile Safari / Mosaic / Mozilla Developer Preview / MQQBrowser / Multi-Browser XP / MultiZilla / MxNitro / myibrowalpha2 /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值