UA 是最容易改的欄位,但引擎、平台和 Client Hints 改不乾淨。幾處說法互相矛盾,平台會直接判定為篡改或自動化訪問。
UA ↔ JavaScript 引擎根據各引擎特有的報錯方式識別真實的 JS 引擎,與 UA 聲稱的瀏覽器比較
UA 版本 ↔ 引擎能力根據瀏覽器支援的 JavaScript 新特性推算真實版本區間,與 UA 宣告的版本比較
UA 系統 ↔ navigator.platform比較 UA 宣告的作業系統與瀏覽器報告的平台
UA ↔ Client HintsChromium 核心會通過 Client Hints 單獨報告品牌、版本與平台,與 UA 字串比較
HTTP UA ↔ JavaScript UA比較伺服器收到的 User-Agent 與頁面內的 navigator.userAgent
自動化框架痕跡檢查 WebDriver 標記、無頭瀏覽器 UA 以及 Selenium、Playwright 等框架注入的變數
主執行緒 ↔ Worker在獨立的 Worker 裡讀取 UA、平台、語言、時區與硬體引數,與頁面內讀到的值比較
API 原生性檢查 UA、平台、語言、時區與 Canvas / WebGL / Audio 等 API 是否仍是瀏覽器原生實現
WebRTC 介面Chromium 核心無法在設定裡關閉 WebRTC,檢查 RTCPeerConnection 是否被刪除