Skip to content

介绍

什么是 ua-browser?

ua-browser 是一个零依赖的 TypeScript 检测库,支持浏览器与 Node.js 双环境。它不只解析 UA 字符串,还通过硬件信号Client Hints 在 UA 失真时给出准确结果。

为什么 UA 字符串不够用?

UA 字符串是检测浏览器环境的传统方式,但它存在几个已知的失真场景:

场景UA 字符串的问题
Chrome 隐私冻结Chrome 109+ 将小版本号固定为 0.0.0Chrome/149.0.0.0 是所有 Chrome 149.x 用户的 UA
macOS 26+ 冻结Apple 从 macOS 26 起将 Chrome UA 中的系统版本固定为 Mac OS X 10_15_7
手机开了桌面模式UA 声明为桌面,但设备仍是移动端——屏幕尺寸、触控、安全区均为手机表现
无头浏览器伪装Playwright / Puppeteer 默认 UA 与正常 Chrome 无法区分
AI 爬虫GPTBot、ClaudeBot 等有自己的 UA 格式,纯字符串匹配容易漏报

ua-browser 通过 硬件信号(WebGL 渲染器、CSS safe-area、振动 API 等)和 Client HintsSec-CH-UA-* / getHighEntropyValues)填补这些空白。

选择正确的 API

API环境能力适用场景
uaBrowser.detect()浏览器(异步)UA + 硬件信号 + Client Hints浏览器端首选,需要精准版本、设备、架构
uaBrowser()浏览器(同步)UA + navigator 基础信号无需精确版本、快速读取
parseHeaders(headers)Node.js / SSRUA + Sec-CH-UA-* 请求头服务端有 Client Hints 头时
parseUA(ua)Node.js / SSR纯 UA 字符串服务端无 Client Hints 头

安装

sh
npm i ua-browser
sh
pnpm add ua-browser
sh
yarn add ua-browser

CDN

html
<script src="https://cdn.jsdelivr.net/npm/ua-browser/dist/index.min.js"></script>
<script>
  const info = uaBrowser()
  console.log(info.browser) // 'Chrome'
</script>

Released under the MIT License.