User-Agent(簡稱UA)是HTTP請求標頭中的一個欄位,瀏覽器(或爬蟲、其他HTTP客戶端)每次發送請求時都會帶上這個字串,用來告訴伺服器「我是誰」,包含了瀏覽器名稱和版本、作業系統及版本、算繪引擎、裝置類型、CPU架構等資訊。伺服器可以根據UA返回适配不同裝置的內容,開發者也常透過UA做相容性處理、流量統計和爬蟲識別。
UA字串看起來冗長混亂是有歷史原因的:早在瀏覽器大戰時期,新瀏覽器為了讓基於舊瀏覽器嗅探的網站能正常運作,會在UA中聲稱自己是舊瀏覽器(比如Chrome會帶Safari標記、Safari會帶Gecko標記),層層疊加導致現代UA字串包含了大量歷史遺留標識,讓人難以直接閱讀。UA解析器的作用就是把這些複雜字串拆解開,擷取出真正有用的資訊。
主流瀏覽器都有固定的格式和標識詞:Chrome包含Chrome/版本號,Firefox包含Firefox/版本號,Safari包含Version/版本號和Safari/標記,新版Edge用Edg/標識,微信(WeChat)內建瀏覽器用MicroMessenger/標識。作業系統也有對應標記:Windows用Windows NT+版本,macOS用Mac OS X+版本,iOS用CPU iPhone OS+版本,Android直接用Android+版本。透過正規表示式比對這些關鍵字就能準確識別。
算繪引擎是瀏覽器用來解析HTML/CSS/算繪頁面的核心:Chromium系瀏覽器(Chrome、Edge、Opera等)使用Blink引擎,Safari使用WebKit,Firefox使用Gecko,舊IE使用Trident。知道算繪引擎可以幫助判斷CSS/JS相容性問題,同一個Blink引擎下Chrome和Edge的算繪表現高度一致。
爬蟲偵測是UA解析的重要用途之一。搜尋引擎爬蟲(Googlebot、Bingbot、Baiduspider)、SEO工具爬蟲、惡意爬取程式、命令列工具(curl、wget)、指令碼庫(Python requests)都會在UA中帶上自己的標識,或者乾脆用非常簡單的UA字串。透過比對bot、crawler、spider、curl等關鍵字可以快速識別非人類存取流量。
裝置類型識別主要依賴行動標識:包含Mobile、iPhone、Android等關鍵字是手機;包含iPad、Tablet、Kindle等是平板;其他是桌面電腦。但要注意UA是可以被偽造的(User-Agent Spoofing),惡意爬蟲可以偽裝成正常瀏覽器,所以嚴格的反爬還需要結合其他特徵,UA解析只能作為初步判斷。
CPU架構資訊在今天變得越來越重要:蘋果M系列Mac使用ARM64架構,傳統Intel Mac使用x64;Windows PC既有x64也有ARM64(如驍龍本);手機清一色ARM64。在提供軟體下載時,如果能從UA判斷使用者架構,直接給出對應安裝套件(比如.dmg區分Intel/Mac版,.exe區分x64/ARM64版)能大幅提升使用者體驗。
需要注意UA解析存在局限性:UA可以被使用者或外掛修改偽造,新版本瀏覽器可能更改UA格式導致正規表示式失效,Windows 11因為沿用NT 10.0版本號無法從UA區分Win10/Win11,iOS上所有第三方瀏覽器(Chrome、Firefox for iOS)都強制使用WebKit引擎所以UA會帶有Safari標記。本工具的解析適合開發除錯、日誌分析等大多數場景,但對安全要求極高的場景請結合IP、TLS指紋等多維度判斷。