縮減使用者代理程式 (UA),是為了盡量減少使用者代理程式字串分享的識別資訊,以免遭人用於被動式數位指紋採集。這些變更已正式發布,因此所有資源要求都會減少 User-Agent
標頭。因此,某些 Navigator
介面的傳回值會減少,包括 navigator.userAgent
、navigator.appVersion
和 navigator.platform
。
網頁開發人員應檢查網站程式碼是否使用 User-Agent 字串。如果您的網站需要剖析 User-Agent 字串,才能讀取裝置型號、平台版本或完整的瀏覽器版本,您就必須實作 User-Agent Client Hints API。
使用者代理程式用戶端提示 (UA-CH)
User-Agent 用戶端提示可讓您存取完整的 User-Agent 資料,但只有在伺服器主動宣告明確需要特定資料時才可。
移除被動揭露的使用者資料,我們就能更準確評估並減少要求標頭、JavaScript API 和其他機制刻意揭露的資訊量。
為什麼需要減少通用 Analytics 和通用 Analytics - 客戶主導的廣告?
過去,User-Agent 字串會在每次 HTTP 要求中,廣播大量有關使用者瀏覽器、作業系統和版本的資料字串。這會造成兩個問題:
- 詳細程度和豐富的細節資料可能會導致使用者身分識別。
- 這類資訊預設可供使用,可能會導致隱密追蹤。
根據預設,Reduced UA 和 UA-CH 只會分享基本資訊,進而提升使用者隱私權。
簡化版 User-Agent 包含瀏覽器品牌和主要版本、要求來源 (電腦或行動裝置) 和平台。如要存取更多資料,您可以使用 User-Agent 用戶端提示,要求使用者裝置或條件的特定資訊。
此外,隨著時間的推移,User-Agent
字串會變得更長、更複雜,導致字串剖析作業容易出錯。UA-CH 提供結構化且可靠的資料,方便解讀。剖析通用 Analytics 字串的現有程式碼不應中斷 (但會傳回較少資料),如果您的網站需要特定用戶端資訊,就必須遷移至通用 Analytics - 客戶端。
通用 Analytics 和通用 Analytics 客戶管理工具的縮減功能如何運作?
以下簡要說明縮減的 User-Agent 字串和 UA-CH 的運作方式。如需更深入的範例,請參閱「使用使用者代理程式用戶端提示改善使用者隱私權和開發人員體驗」。
使用者開啟瀏覽器,並在網址列中輸入 example.com
:
瀏覽器會傳送要求來載入網頁。
- 瀏覽器會納入
User-Agent
標頭,並附上縮減的 User-Agent 字串。例如:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36
瀏覽器會在預設的 User-Agent 用戶端提示標頭中加入相同的資訊。例如:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- 瀏覽器會納入
伺服器可以要求瀏覽器透過
Accept-CH
回應標頭傳送其他用戶端提示,例如裝置型號。例如:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Model
瀏覽器會套用政策和使用者設定,判斷可在後續要求標頭中傳回至伺服器的資料。例如:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
關鍵用戶端提示
如果您需要在初始要求中使用特定的用戶端提示組合,可以使用 Critical-CH
回應標頭。Critical-CH
值必須是 Accept-CH
要求的值的子集。
舉例來說,初始要求可能包含 Device-Memory
和 Viewport-Width
的請求,其中 Device-Memory
視為重要。
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
如果瀏覽器需要重要提示 (Critical-CH
) 才能正確轉譯網頁,伺服器可以使用 Accept-CH
標頭要求這項額外資訊。接著,瀏覽器就能針對該頁面傳送新的要求,包括關鍵提示。
簡而言之,Accept-CH
會要求您想在網頁上使用的所有值,而 Critical-CH
只會要求您在載入時必須具備的值子集,才能正確載入網頁。詳情請參閱用戶端提示可靠性規格。
使用 UA-CH API 偵測平板電腦
隨著行動裝置、平板電腦和電腦裝置之間的界線越來越模糊,動態板型規格 (摺疊式螢幕、在筆電和平板電腦模式之間切換) 也越來越常見,建議您使用回應式設計和功能偵測功能,呈現適當的使用者介面。
不過,瀏覽器為 User-Agent 字串和 User-Agent 用戶端提示提供的資訊皆來自相同來源,因此應可使用相同的邏輯形式。
舉例來說,如果在通用 Analytics 字串上檢查這個模式:
- 電話號碼模式:
'Android' + 'Chrome/[.0-9]* Mobile'
- 平板電腦模式:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
您可以檢查符合的預設 UA-CH 標頭介面:
- 電話號碼模式:
Sec-CH-UA-Platform: "Android"
、Sec-CH-UA-Mobile: ?1
- 平板電腦圖案:
Sec-CH-UA-Platform: "Android"
、Sec-CH-UA-Mobile: ?0
或等同的 JavaScript 介面:
- 電話號碼模式:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- 平板電腦模式:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
針對硬體專屬用途,您可以透過高熵 Sec-CH-UA-Model
提示要求裝置型號名稱。
如何使用及測試縮減的使用者代理程式?
首先,請查看網站程式碼,瞭解 User-Agent 字串的用途和用法。如果您的網站需要剖析 User-Agent 字串,才能讀取裝置型號、平台版本或完整瀏覽器版本,您就必須實作 UA-CH API。
更新至 UA-CH API 後,請進行測試,確保您能從 User-Agent 取得預期的資料。測試方式有三種,每種複雜度都會增加。
縮減使用者代理程式功能的縮放可用性,是指在所有 Chrome 裝置上發布的完全縮減 UA 字串。從 2022 年第 2 季的 Chrome 次要版本開始減少。
在本機測試自訂字串
如果您想使用自訂 User-Agent 字串測試網站,以模擬不同的裝置,請使用 --user-agent="Custom string here"
指令列標記啟動 Chrome。如要進一步瞭解指令列標記,請參閱相關說明。
或者,您也可以使用 Chrome 開發人員工具中的裝置模擬器。
轉換網站程式碼中的字串
如果您在用戶端或伺服器端程式碼中處理現有的 Chrome user-agent
字串,可以將該字串轉換為新格式,以便測試相容性。您可以覆寫及取代字串,或產生新版本並並排測試,以便進行測試。
支援用戶端提示和重要提示
伺服器會傳回三個預設的用戶端提示,包括瀏覽器名稱和主要版本、一個布林值 (指出瀏覽器是否在行動裝置上),以及作業系統名稱。這些資訊會在傳輸層安全標準 (TLS) 通訊協定握手後傳送。這些功能已在您的瀏覽器中提供並受支援。
不過,有時候您可能需要擷取重要資訊,讓網站進行算繪。
最佳化重要提示
建立瀏覽器和網頁伺服器之間安全連線的第一步,就是進行 TLS 握手。在未進行干預的情況下,如果第一個要求在傳送時未附上重要提示,Critical-CH 回應標頭會指示瀏覽器立即重試要求。

Sec-CH-UA-Model
提示兩次:一次是使用 Accept-CH
做為用戶端提示,另一次是使用 Critical-CH
做為重要提示。如要最佳化關鍵提示 (Critical-CH
標頭),您必須攔截這項握手動作,並為用戶端提示提供模型。這些步驟可能相當複雜,且需要進階知識。
ACCEPT_CH
HTTP/2 和 HTTP/3 框架與 TLS ALPS 擴充功能結合後,可進行連線層最佳化,在第一個 HTTP 要求時及時提供伺服器的用戶端提示偏好設定。這類設定需要複雜的配置,建議您只用於處理極為重要的資訊。
BoringSSL (OpenSSL 的分支) 可協助您使用 Google 在 Chromium 中實驗性功能。目前,ALPS 僅在 BoringSSL 中實作。
如果您需要使用重要提示,請參閱重要提示的可靠性和最佳化指南。
常見問題
透過 Accept-CH
標頭傳送的提示會保留多久?
透過 Accept-CH
標頭指定的提示會在瀏覽器工作階段期間傳送,或直到指定不同的一組提示為止。
UA-CH 是否支援 HTTP/2 和 HTTP/3?
UA-CH 可搭配 HTTP/2 和 HTTP/3 連線使用。
子網域 (和 CNAME) 是否需要頂層頁面 Permissions-Policy
才能存取高熵 UA-CH?
無論 DNS 端如何定義來源,要求標頭上的高熵 UA-CH 都會限制跨來源要求。對於任何跨來源子資源,委派作業必須透過 Permissions-Policy
處理,或是透過在跨來源內容中執行的 JavaScript 取得。
使用者代理程式縮減對機器人偵測有何影響?
Chrome 對使用者代理程式字串所做的變更,不會直接影響機器人選擇傳送的使用者代理程式字串。
機器人可以選擇更新自己的字串,以反映 Chrome 傳送的資訊減少情形,但這完全是他們的實作選擇。Chrome 仍會傳送相同的 User-Agent 格式,而會在 Chrome User-Agent 字串結尾附加自身 ID 的機器人,也能繼續這麼做。
如果您對特定機器人有任何疑慮,建議您直接與擁有者聯絡,詢問對方是否有意變更 User-Agent 字串。
互動及分享意見回饋
- 來源試用:提供先前來源試用的意見回饋。
- 示範:請試試使用者代理程式縮減設定示範。
- GitHub:請參閱 UA-CH 說明文件,提出問題並參與討論。
- 開發人員支援:在 Privacy Sandbox 開發人員支援存放區中提問及參與討論。
瞭解詳情
- 改善使用者隱私權和開發人員體驗:網頁開發人員概覽
- 從通用 Analytics 字串遷移至通用 Analytics 客戶端:網頁程式開發人員的教學課程
- 深入瞭解 Privacy Sandbox