
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),僅供參考