ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

express-useragent的Agent指纹字段全解:isMobile、isBot等60+布尔标志一次看懂

2026/8/23 14:48:45 拓冰建站 浏览量
express-useragent的Agent指纹字段全解:isMobile、isBot等60+布尔标志一次看懂 express-useragent的Agent指纹字段全解isMobile、isBot等60布尔标志一次看懂【免费下载链接】express-useragentNodeJS user-agent middleware项目地址: https://gitcode.com/gh_mirrors/ex/express-useragentexpress-useragent 是一个基于 Node.js 的 User-Agent 解析库自带 Express 中间件和 TypeScript 类型定义。它的核心能力是把一串晦涩的 User-Agent 文本变成一个结构化的Agent 指纹对象Agent其中包含isMobile、isBot、isDesktop、isiPhone、isChrome等 60 多个布尔标志让你无需写正则、不用猜设备就能准确判断请求来自手机、平板、爬虫还是桌面浏览器。本文带你一次性看懂这些字段。什么是 Agent 指纹当浏览器访问你的网站时会在 HTTP 头里附上一段 User-Agent 字符串例如Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 ...express-useragent 会解析这段字符串输出一个字段齐全的指纹对象字段定义见src/express-useragent.ts中的AgentDetails接口L129-L194。其中最实用的就是那批isXXX布尔标志——每个标志都是一个是/否判断题直接可用。如何拿到完整指纹两种最快接入方式方式一直接解析适合任意 Node 服务import { UserAgent } from express-useragent; const parser new UserAgent().hydrate(uaString); console.log(parser.Agent.isMobile); // true / false方式二Express 中间件推荐import express from express; import { express as useragent } from express-useragent; const app express(); app.use(useragent()); app.get(/, (req, res) { res.json({ browser: req.useragent?.browser, isMobile: req.useragent?.isMobile, isBot: req.useragent?.isBot, }); });中间件会把指纹挂到req.useragent和res.locals.useragent上实现代码位于src/index.ts的express()函数L29-L60。完整可运行的示例在examples/server.ts。布尔标志分类速查表 字段太多记不住按设备类型 → 系统 → 浏览器 → 爬虫四组记覆盖全部核心标志1️⃣ 设备类型标志判断手机、平板、桌面字段含义典型用途isMobile是否移动端手机等移动端/PC 端分流isDesktop是否桌面端与isMobile互补isTablet是否平板iPad / Android 平板 / Kindle Fire平板专用布局isAndroidTablet是否 Android 平板Android UA 中不含 Mobile细粒度判断isMobileNative是否原生 AppDalvik/OkHttp 特征区分 App 内 WebViewisSmartTV是否智能电视Android TV、Apple TV 等电视端适配 注意isMobile为true时isDesktop必为false两者互斥见src/express-useragent.ts的testMobile()方法L809-L851。2️⃣ 操作系统与设备标志精确到设备型号字段含义isiPhone/isiPhoneNativeiPhone 浏览器 / iPhone 原生 AppisiPad/isiPodiPad / iPodisAndroid/isAndroidNativeAndroid 系统 / Android 原生 AppisWindows/isLinux/isLinux64/isMac/isChromeOS各大桌面系统isLinux64可识别 64 位 LinuxisWindowsPhone/isBlackberry/isBada/isSamsungWindows Phone / 黑莓 / Bada / 三星设备isCaptivemacOS 的 CaptiveNetwork 网络探测请求isRaspberry树莓派等嵌入式设备isKindleFire/isSilk/silkAcceleratedKindle 系列设备与 Silk 浏览器相关标志isCurl请求来自 curl 命令行工具3️⃣ 浏览器标志识别客户端身份字段含义isChrome/isSafari/isFirefox/isEdge四大主流浏览器isIE/isIECompatibilityMode老版 IE及 IE 兼容模式会同时修正 version 字段isOpera/isWebkit/isYaBrowserOpera / Apple WebKit 内核 / 俄罗斯 Yandex 浏览器isPhantomJSPhantomJS 无头浏览器自动化测试常见isElectronElectron 桌面应用会附带electronVersion字段isWechat微信内置浏览器X5 内核国内开发者高频用到isDuckDuckGoDuckDuckGo 浏览器结合 Client Hints 识别isFacebook/isUCFacebook 客户端 / UC 浏览器isKonqueror/isOmniWeb/isSeaMonkey/isFlock/isAmaya/isEpiphany其他小众/历史浏览器4️⃣ 爬虫标志区分人与机器 字段含义isBot是否爬虫/机器人内置 80 爬虫指纹见src/express-useragent.tsL27-L115botName识别出的爬虫名如googlebot、bingbot非布尔字段isAuthoritativeUA 是否以标准Mozilla/...开头false时解析器会做更宽松的猜测isCurl专门识别 curl 请求爬虫检测支持 Client Hints 与 UA 双通道TikTok WebView 中包含 googleplay 字样曾被误判为 Google 爬虫源码中已专门处理该误报testBot()方法 L776-L803。大量真实爬虫样本可参考tests/bots.test.ts。实战示例读懂一条 iPhone Safari 请求用下面这条真实 UA 解析后示例输出结构参考 README 中的 Sample payload{ isMobile: true, isDesktop: false, isBot: false, isiPhone: true, isWebkit: true, isSafari: true, isMac: true, browser: Safari, os: iOS, platform: iPhone } 有个经典坑iPhone UA 里含有like Mac OS X所以isMac也会为true——这是 UA 格式的历史遗留判断设备类型时优先看isiPhone和isMobile。三个新手最常踩的坑 ⚠️isTablet不等于非手机平板与手机标志可能同时需要单独判断testTablet()会综合 iPad、Android 平板和 Kindle Fire 得出结论L859-L867。isBot为true时看botName布尔值只告诉你是爬虫botName才告诉你是哪个爬虫方便做针对性拦截或放行。带请求头解析更准new UserAgent().hydrateFromHeaders(ua, headers)会额外解析 User-Agent Client Hints 头能识别靠 UA 字符串识别不出的浏览器如 Chromium 版 DuckDuckGo推荐优先使用。相关代码位置核心解析器与全部字段定义src/express-useragent.tsExpress 中间件实现src/index.ts爬虫/Android/macOS 等分类测试用例tests/bots.test.ts、tests/android.test.ts、tests/macos.test.ts浏览器端使用入口src/browser.ts快速上手示例examples/simple.ts、examples/server.ts、examples/http.ts小结express-useragent 的 Agent 指纹把猜设备变成查字段设备类型组isMobile / isTablet / isSmartTV管分流操作系统组isMac / isWindows / isAndroid管适配浏览器组isChrome / isSafari / isWechat管兼容爬虫组isBot / botName / isCurl管安全。配合 Express 中间件一行接入你的站点就能对每一位访问者一目了然。【免费下载链接】express-useragentNodeJS user-agent middleware项目地址: https://gitcode.com/gh_mirrors/ex/express-useragent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考