You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js请求中检测浏览器运行的操作系统

如何从Node.js服务器检测请求浏览器的操作系统?

其实你不用硬啃杂乱的User-Agent字符串自己写正则——虽然手动解析是可行的,但不同浏览器、不同系统的UA格式差异极大,很容易遗漏场景或者匹配出错。下面给你两种实用的方案:

方案一:手动用正则解析(适合简单场景)

如果只是需要覆盖常见的操作系统,你可以针对不同系统的UA特征写正则匹配。不过要注意,这种方法需要持续维护,因为新系统发布后UA格式可能会有变化。

示例代码:

function extractOS(userAgent) {
  // 匹配Windows系统(含Win10/11、Win8.1等)
  const winMatch = userAgent.match(/Windows NT (\d+\.\d+)/);
  if (winMatch) {
    const versionMap = {
      '10.0': 'Windows 10/11',
      '6.3': 'Windows 8.1',
      '6.2': 'Windows 8',
      '6.1': 'Windows 7',
      '6.0': 'Windows Vista'
    };
    return versionMap[winMatch[1]] || 'Windows (Unknown Version)';
  }

  // 匹配macOS
  const macMatch = userAgent.match(/Mac OS X (\d+_\d+(?:_\d+)?)/);
  if (macMatch) {
    const cleanVersion = macMatch[1].replace(/_/g, '.');
    return `macOS ${cleanVersion}`;
  }

  // 匹配iOS
  const iosMatch = userAgent.match(/iPhone OS (\d+_\d+(?:_\d+)?)/);
  if (iosMatch) {
    const cleanVersion = iosMatch[1].replace(/_/g, '.');
    return `iOS ${cleanVersion}`;
  }

  // 匹配Android
  const androidMatch = userAgent.match(/Android (\d+\.\d+(?:\.\d+)?)/);
  if (androidMatch) {
    return `Android ${androidMatch[1]}`;
  }

  // 匹配Linux类系统
  if (/Linux/.test(userAgent)) {
    return 'Linux';
  }

  return 'Unknown Operating System';
}

// 在你的请求处理逻辑中使用
const userAgent = request.headers['user-agent'];
const userOS = extractOS(userAgent);
console.log('用户操作系统:', userOS);

方案二:使用成熟的第三方库(推荐)

手动维护正则太麻烦,不如直接用专门解析User-Agent的库,这些库已经覆盖了几乎所有主流系统和浏览器的UA格式,而且会持续更新适配新系统。

比如ua-parser-js就是个很流行的选择:

  1. 先安装依赖:
npm install ua-parser-js
  1. 在Node.js代码中使用:
const UAParser = require('ua-parser-js');

// 处理请求时解析UA
const parser = new UAParser(request.headers['user-agent']);
const osDetails = parser.getOS();

// osDetails会返回包含名称和版本的对象,示例:
// { name: 'macOS', version: '14.5' }
console.log('用户操作系统:', `${osDetails.name} ${osDetails.version}`);

这个库还能同时解析浏览器、设备类型等信息,功能很全面,完全不用自己操心正则的维护问题。

总的来说,如果是临时的简单需求,手动正则能凑合用;但如果是长期项目,强烈推荐用第三方库,省心又靠谱。

内容的提问来源于stack exchange,提问作者Marcus Baptiste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:28:09