詞彙表·指紋識別
用戶代理(用戶代理字串)
瀏覽器在 User-Agent 標頭中傳送並公開給 JavaScript 的瀏覽器和作業系統識別碼。
定義
在HTTP中,用戶代理程式是發出請求的客戶端軟體,用戶代理請求標頭是它發送的文字字串,以便伺服器可以識別應用程式、作業系統、供應商和版本。 MDN 指出,此資訊歷來造成隱私問題,因為它可用於指紋辨識。現代 Chromium 瀏覽器傳送簡化的字串並將詳細值移至使用者代理客戶端提示(Sec-CH-UA-* 標頭和 navigator.userAgentData)。
它是如何運作的
- 瀏覽器在每次請求時都會傳送 User-Agent;典型的 Chrome 桌面值類似於「Mozilla/5.0 (Windows 新台幣 10.0;贏64; x64) AppleWebKit/537.36 (KHTML,如 Gecko)Chrome/143.0.0.0 野生動物園/537.36」。「Mozilla/5.0」、「KHTML,如 Gecko」和「Safari」標記被保留以實現歷史相容性。
- 自從用戶代理減少(從 Chrome 推出) 101 到 110),Chrome 將次要版本凍結為 0.0.0,使用固定桌面平台字串,並且 Android 發送固定的“Android 10; K」而非真實的作業系統版本和裝置型號。navigator.userAgent 和 navigator.platform 中出現相同的減少值。
- Chromium 瀏覽器預設也會傳送低熵客戶端提示 — Sec-CH-UA(品牌和主要版本)、Sec-CH-UA-Mobile 和 Sec-CH-UA-Platform。伺服器可以透過 Accept-CH 回應頭請求高熵提示,例如平台版本、模型、架構或完整版本列表,然後瀏覽器決定返回什麼。
為什麼這很重要
- 使用者代理程式是瀏覽器指紋中的被動訊號之一:它在沒有任何腳本運行的情況下到達每個請求。
- 偵測系統可以將使用者代理字串與客戶端提示和 JavaScript 值(navigator.platform、螢幕尺寸、觸控支援)進行比較。價值觀不一致的個人資料比普通的個人資料更引人注目。
- 指紋瀏覽器讓每個設定檔設定其使用者代理程式;好的工具可以使匹配的客戶端提示、平台和瀏覽器引擎版本保持一致。
限制和常見誤解
- 「更改使用者代理字串會更改我的瀏覽器指紋。」它改變一個值;客戶端提示、JavaScript API、Canvas/WebGL 輸出和字體仍然描述真實設置,除非它們也一致更改。
- 「用戶代理字串顯示了我的確切作業系統和裝置。」在簡化的 Chrome 中,它不再這樣做了 - Windows 8.1 和 Windows 11 兩者均報告“Windows 新台幣 10.0「, 和 Android 設備報告》Android 10; K」。
- 「稀有或非常新的用戶代理更安全。」不尋常或不匹配的價值觀會縮小你的範圍;常見的、內部一致的組合不太獨特。
範例: 一份簡介聲稱「Macintosh;Intel Mac OS X 10_15_7” 在其用戶代理中,但其 Sec-CH-UA-Platform 提示顯示“Windows」並且 navigator.platform 回傳「Win32”。比較這三個值的網站可以看到該配置文件與其聲稱的不符。
沒有瀏覽器或代理可以保證帳戶不會受到限制。遵守各平台的規則。
來源
- MDN:用戶代理程式標頭 (瀏覽器文件)
- MDN:HTTP 用戶端提示 (瀏覽器文件)
- Chromium:用戶代理減少 (瀏覽器文件)
- Chrome 開發者版:用戶代理用戶端提示 (瀏覽器文件)
檢查了2026-11-07。