Chrome 會持續減少在使用者代理程式字串中分享的資訊,以保護使用者隱私。
從 Chrome 110 版 (2023 年 2 月) 開始,我們會逐步推出固定的 Android 版本和裝置型號值,在型號 K
上,預設值一律為 Android 10
。如果您是透過使用者代理程式偵測訪客的作業系統版本、Android 裝置型號或詳細瀏覽器版本,則可能需要採取行動。請繼續閱讀詳細資訊。
user-agent 是提供使用者瀏覽器和環境相關資訊的字串,例如網站訪客在 Android 上執行 Chrome 110 版。您的瀏覽器會在 HTTP 標頭中傳送這項資訊,並透過 JavaScript 提供。
完整的使用者代理程式字串的問題是,根據預設,每個要求都會分享瀏覽器的詳細資訊,這也是允許跨網站追蹤的主要因素。我們的目標是減少收集這類資料的機會,並提供 API,讓您在需要時主動存取資料。
目前的使用者代理程式縮減
我們已開始移除部分預設可用的使用者代理程式資料,並以固定值取代。
從 Chrome 101 開始,我們將次要版本號碼替換為零,例如 Chrome/101.3.2.1 變成 Chrome/101.0.0.0。
自 Chrome 107起,我們已將電腦作業系統版本和 CPU 資訊替換為平台的固定值。
Mac | ➡ | Macintosh; Intel Mac OS X 10_15_7 |
Windows | ➡ | Windows NT 10.0; Win64; x64 |
ChromeOS | ➡ | X11; CrOS x86_64 14541.0.0 |
Linux | ➡ | X11;Linux x86_64 |
自 Chrome 110 起修正 Android 版本和裝置型號
自 Chrome 110 起,我們會逐步推出 Android 版本和裝置型號的固定值。在 K
的 Pixel 7
上,預設值將「一律」為 Android 10
。Android 13
Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.0.0 Mobile Safari/537.36
使用者代理程式格式不變
使用者代理程式縮減功能會變更使用者代理程式中傳回的值,但格式保持不變。如果您只使用 User-Agent 讀取作業系統類型或主要瀏覽器版本,系統會繼續更新這類資料,您不必採取任何行動。

使用者代理程式的替代方案
如果您目前使用較詳細的資料,建議您檢查是否可以改用漸進式增強或功能偵測。
請務必記住,user-agent 和其他使用者提供的值一樣,您應驗證該值,而非假設其正確無誤。使用者、擴充功能或其他用戶端可以輕鬆變更使用者代理程式值,甚至可能根本不會傳送。在大多數情況下,您應該可以在沒有使用者代理程式資料的情況下,向訪客提供正常運作的內容。
使用 User-Agent Client Hints 要求詳細資料
存取詳細使用者代理程式資料有許多正當理由,例如提供裝置專屬內容、防詐功能或精細記錄。如果您需要更詳細的資料,可以使用 User-Agent Client Hints (UA-CH) API 存取。與使用者代理程式一樣,您可以透過 HTTP 標頭或 JavaScript 取得 UA-CH。
您可能已經看到預設標頭會附帶 Sec-CH-UA-
前置字串傳送,這個字串會告訴您瀏覽器、主要版本、作業系統,以及瀏覽器是否為行動裝置。
⏫ Chrome 的預設 User-Agent Client Hints 要求標頭:
Sec-CH-UA: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"
您可以在回應中使用 Accept-CH
標頭,要求提供更多資料。在這種情況下,您可以要求 Sec-CH-UA-Platform-Version
和 Sec-CH-UA-Model
,以便在後續要求中取得 Android 版本和裝置類型。
⏬ 伺服器的回應標頭,指定平台版本和型號:
Accept-CH:
Sec-CH-UA-Platform-Version,
Sec-CH-UA-Model
⏫ 向 Chrome 要求包含 Android 版本和型號名稱的標頭:
Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Model: "Pixel 7"
您可以在 JavaScript 中執行相同的操作,方法是在 userAgentData
API 上呼叫 getHighEntropyValues()
,並傳入所需值的陣列:platformVersion
和 model
。這會傳回包含特定值的物件承諾。
navigator.userAgentData
.getHighEntropyValues(
['platformVersion', 'model']
).then(ua => { console.log(ua)
});
{
"platformVersion": "13.0.0",
"model": "Pixel 7"
}
跨來源或初始要求
如果網頁上有跨來源資源需要這些值,您可以透過 Permissions-Policy
HTTP 標頭或在 HTML 中使用 Delegate-CH
中繼標記允許存取。
如果您的網站需要在最頂層要求中提供這些敏感值,您可以使用 Critical-CH
HTTP 標頭,讓瀏覽器在重試初始要求時加入這些額外提示。這對難以更新的舊版系統可能很有幫助,但理想情況下,您不應依賴這些敏感值來提供初始 HTML。
瞭解詳情
如要查看縮短的使用者代理程式字串,請參閱以下內容:
- 如要查看您裝置的縮減使用者代理程式字串,請前往 goo.gle/reduced-ua-demo
- 如要查看 您的裝置的所有 JavaScript 和 HTTP 標頭使用者代理程式客戶端提示,請前往 goo.gle/ua-ch-demo
- 啟用
#reduce-user-agent
Chrome 旗標,在您的瀏覽器中傳送縮減的使用者代理程式字串。
您也可以註冊使用者代理程式縮減功能的網站端試驗,在網站上接收縮減的使用者代理程式,不過我們會在 3 月初結束這項試驗,因為我們會持續提高預設傳送縮減使用者代理程式的頻率。
如需更多資源,請前往使用者代理程式縮減專頁,也可以在專屬的 user-agent-reduction GitHub 存放區中提出問題。