為保護使用者隱私,Chrome 會持續縮減使用者代理程式字串中分享的資訊。
自 Chrome 110 (2023 年 2 月) 起,我們將逐步推出適用於 Android 版本和裝置型號的固定值;在 K
型號中,預設價值一律為 Android 10
。
如果您使用使用者代理程式偵測訪客的作業系統版本、Android 裝置型號或詳細瀏覽器版本,可能需要採取相關行動,詳情請參閱下文。
使用者代理程式這個字串可提供使用者瀏覽器及其環境的相關資訊,例如讓您知道網站訪客在 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
上一律為 Android 10
,而不是 Android 13
在 Pixel 7
上顯示類似內容。
Mozilla/5.0 (Linux;Android 13;Pixel 7) AppleWebKit/537.36 (KHTML,例如 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
使用者代理程式格式沒有任何變更
使用者代理程式縮減設定會變更使用者代理程式傳回的值,但 format 維持不變。 如果您只用使用者代理程式讀取作業系統類型或主要瀏覽器版本,資料會繼續如常更新,您不需要採取任何行動。

使用者代理程式的替代方案
如果您目前使用的資料較多,建議改為使用漸進式增強或功能偵測功能。
請記住,使用者代理程式與任何其他使用者提供的值一樣,請務必進行驗證,切勿設想正確。 使用者、擴充功能或其他用戶端可以輕易變更使用者代理程式值,或完全不傳送。 在多數情況下,您應在沒有使用者代理程式資料的情況下,為訪客提供有效內容。
使用「使用者代理程式用戶端提示」要求詳細資料
有許多正當理由可以存取詳細的使用者代理程式資料,例如提供裝置專屬的內容、反詐欺功能或精細記錄。 如果您需要更詳細的資料,可以使用 User-Agent Client Hints (UA-CH) API 來存取。 就像使用者代理程式一樣,UA-CH 也能透過 HTTP 標頭或 JavaScript 取得。
您可能已經看過系統傳送的預設標頭含有 Sec-CH-UA-
前置字串,讓您瞭解瀏覽器、主要版本、作業系統,以及瀏覽器是否為行動裝置。
⏫ Chrome 的預設使用者代理程式用戶端提示要求標頭:
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,查看你的裝置適用的使用者代理程式字串精簡字串
- 前往 goo.gle/ua-ch-demo,查看「您的」裝置適用的所有 JavaScript 和 HTTP 標頭使用者代理程式用戶端提示
- 啟用
#reduce-user-agent
Chrome 旗標,在 您的 瀏覽器中傳送經過簡化的使用者代理程式字串。
您仍然可以註冊參加使用者代理程式縮減來源試用,在網站上享有較少的使用者代理程式。不過,我們將在 3 月初結束這項試用,因為我們會繼續預設提供較少的使用者代理程式。
如需更多資源,請參閱使用者代理程式縮減到達網頁。你也可以前往專屬的 user-agent-reduction GitHub 存放區回報問題。