
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 文本變成一個結(jié)構(gòu)化的Agent 指紋對象Agent其中包含isMobile、isBot、isDesktop、isiPhone、isChrome等 60 多個布爾標志讓你無需寫正則、不用猜設(shè)備就能準確判斷請求來自手機、平板、爬蟲還是桌面瀏覽器。本文帶你一次性看懂這些字段。什么是 Agent 指紋當瀏覽器訪問你的網(wǎng)站時會在 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 服務(wù)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上實現(xiàn)代碼位于src/index.ts的express()函數(shù)L29-L60。完整可運行的示例在examples/server.ts。布爾標志分類速查表 字段太多記不住按設(shè)備類型 → 系統(tǒng) → 瀏覽器 → 爬蟲四組記覆蓋全部核心標志1?? 設(shè)備類型標志判斷手機、平板、桌面字段含義典型用途isMobile是否移動端手機等移動端/PC 端分流isDesktop是否桌面端與isMobile互補isTablet是否平板iPad / Android 平板 / Kindle Fire平板專用布局isAndroidTablet是否 Android 平板Android UA 中不含 Mobile細粒度判斷isMobileNative是否原生 AppDalvik/OkHttp 特征區(qū)分 App 內(nèi) WebViewisSmartTV是否智能電視Android TV、Apple TV 等電視端適配 注意isMobile為true時isDesktop必為false兩者互斥見src/express-useragent.ts的testMobile()方法L809-L851。2?? 操作系統(tǒng)與設(shè)備標志精確到設(shè)備型號字段含義isiPhone/isiPhoneNativeiPhone 瀏覽器 / iPhone 原生 AppisiPad/isiPodiPad / iPodisAndroid/isAndroidNativeAndroid 系統(tǒng) / Android 原生 AppisWindows/isLinux/isLinux64/isMac/isChromeOS各大桌面系統(tǒng)isLinux64可識別 64 位 LinuxisWindowsPhone/isBlackberry/isBada/isSamsungWindows Phone / 黑莓 / Bada / 三星設(shè)備isCaptivemacOS 的 CaptiveNetwork 網(wǎng)絡(luò)探測請求isRaspberry樹莓派等嵌入式設(shè)備isKindleFire/isSilk/silkAcceleratedKindle 系列設(shè)備與 Silk 瀏覽器相關(guān)標志isCurl請求來自 curl 命令行工具3?? 瀏覽器標志識別客戶端身份字段含義isChrome/isSafari/isFirefox/isEdge四大主流瀏覽器isIE/isIECompatibilityMode老版 IE及 IE 兼容模式會同時修正 version 字段isOpera/isWebkit/isYaBrowserOpera / Apple WebKit 內(nèi)核 / 俄羅斯 Yandex 瀏覽器isPhantomJSPhantomJS 無頭瀏覽器自動化測試常見isElectronElectron 桌面應(yīng)用會附帶electronVersion字段isWechat微信內(nèi)置瀏覽器X5 內(nèi)核國內(nèi)開發(fā)者高頻用到isDuckDuckGoDuckDuckGo 瀏覽器結(jié)合 Client Hints 識別isFacebook/isUCFacebook 客戶端 / UC 瀏覽器isKonqueror/isOmniWeb/isSeaMonkey/isFlock/isAmaya/isEpiphany其他小眾/歷史瀏覽器4?? 爬蟲標志區(qū)分人與機器 字段含義isBot是否爬蟲/機器人內(nèi)置 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。實戰(zhàn)示例讀懂一條 iPhone Safari 請求用下面這條真實 UA 解析后示例輸出結(jié)構(gòu)參考 README 中的 Sample payload{ isMobile: true, isDesktop: false, isBot: false, isiPhone: true, isWebkit: true, isSafari: true, isMac: true, browser: Safari, os: iOS, platform: iPhone } 有個經(jīng)典坑iPhone UA 里含有l(wèi)ike Mac OS X所以isMac也會為true——這是 UA 格式的歷史遺留判斷設(shè)備類型時優(yōu)先看isiPhone和isMobile。三個新手最常踩的坑 ??isTablet不等于非手機平板與手機標志可能同時需要單獨判斷testTablet()會綜合 iPad、Android 平板和 Kindle Fire 得出結(jié)論L859-L867。isBot為true時看botName布爾值只告訴你是爬蟲botName才告訴你是哪個爬蟲方便做針對性攔截或放行。帶請求頭解析更準new UserAgent().hydrateFromHeaders(ua, headers)會額外解析 User-Agent Client Hints 頭能識別靠 UA 字符串識別不出的瀏覽器如 Chromium 版 DuckDuckGo推薦優(yōu)先使用。相關(guān)代碼位置核心解析器與全部字段定義src/express-useragent.tsExpress 中間件實現(xiàn)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小結(jié)express-useragent 的 Agent 指紋把猜設(shè)備變成查字段設(shè)備類型組isMobile / isTablet / isSmartTV管分流操作系統(tǒng)組isMac / isWindows / isAndroid管適配瀏覽器組isChrome / isSafari / isWechat管兼容爬蟲組isBot / botName / isCurl管安全。配合 Express 中間件一行接入你的站點就能對每一位訪問者一目了然?!久赓M下載鏈接】express-useragentNodeJS user-agent middleware項目地址: https://gitcode.com/gh_mirrors/ex/express-useragent創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考