使用者代理程式 (UA) 縮減有助於盡量減少在 User-Agent 字串中共用的識別資訊,且此字串可能用於被動數位指紋採集。這些變更現已正式發布,因此所有資源要求都會減少 User-Agent
標頭。因此,系統會減少從特定 Navigator
介面傳回的值,包括:navigator.userAgent
、navigator.appVersion
和 navigator.platform
。
網頁開發人員應檢查網站程式碼,確認是否使用了使用者代理程式字串。如果您的網站必須使用剖析使用者代理程式字串來讀取裝置型號、平台版本或完整瀏覽器版本,您就必須導入 User-Agent Client Hints API。
使用者代理程式用戶端提示 (UA-CH)
User-Agent Client Hints 能存取整套使用者代理程式資料,但前提是伺服器主動宣告特定資料有明確需求。
透過移除被動公開的使用者資料,我們就能更有效地測量並減少要求標頭、JavaScript API 和其他機制刻意公開的資訊量。
為什麼需要減少通用 Analytics (分析) 和通用 Analytics (分析)-CH?
以往,User-Agent 字串會針對每個 HTTP 要求,播送大量與使用者瀏覽器、作業系統和版本相關的資料。這種問題的原因有兩個:
- 只要精細度和豐富細節,就能辨識出使用者身分。
- 如果預設提供這項資訊,可能會導致隱密追蹤。
預設只分享基本資訊,降低通用 Analytics (分析) 和 UA-CH 帶來的使用者隱私。
縮小的使用者代理程式包含瀏覽器的品牌和版本的重要版本 (電腦或行動裝置),以及平台。如要存取更多資料,「User-Agent Client Hints」可讓您要求有關使用者裝置或條件的特定資訊。
此外,User-Agent
字串的成長速度和複雜性也越來越高,導致字串剖析錯誤。UA-CH 提供的結構化可靠資料
更容易解讀用來剖析通用 Analytics (分析) 字串的現有程式碼不應中斷 (但傳回的資料較少)。如果您的網站需要特定用戶端資訊,您就必須遷移至 UA-CH。
那麼,通用 Analytics (分析) 和通用 Analytics (分析) 減少的結構會如何?
以下是縮短了使用者代理程式字串和 UA-CH 運作方式的簡單範例。如需更詳盡的範例,請參閱「運用使用者代理程式用戶端提示改善使用者隱私和開發人員體驗」。
使用者開啟瀏覽器,並在網址列輸入 example.com
:
瀏覽器傳送載入網頁請求。
- 瀏覽器會加入
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 Client Hint」標頭中會含有相同資訊。例如:
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 Client Hints 提供的資訊來自同一個來源,因此同樣的邏輯形式應該都能正常運作。
舉例來說,如果檢查通用 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
提示要求裝置型號名稱。
如何使用及測試減少的通用 Analytics (分析)?
首先,請檢查網站程式碼是否有例項和 User-Agent 字串的使用方式。如果您的網站需要剖析使用者代理程式字串來讀取裝置型號、平台版本或完整瀏覽器版本,您必須導入 UA-CH API。
更新至 UA-CH API 後,建議您進行測試,確保您從使用者代理程式取得您預期的資料。測試有三種方式,每種方式日益複雜
擴充可用性以縮減使用者代理程式,意味著所有 Chrome 裝置都能夠完全縮減通用 Analytics (分析) 字串。已於 2022 年第 2 季推出 Chrome 次要版本。
在本機測試自訂字串
如要使用自訂使用者代理程式字串來測試網站,請使用 --user-agent="Custom string here"
指令列標記啟動 Chrome。詳情請參閱指令列標記。
或者,您也可以使用 Chrome 開發人員工具中的裝置模擬器。
轉換網站程式碼中的字串
如果您在用戶端或伺服器端程式碼中處理現有的 Chrome user-agent
字串,您可以將該字串轉換為新格式來測試相容性。您可以覆寫及替換該字串,或產生新版本並並排進行測試,藉此進行測試。
支援用戶端提示和重要提示
有三個傳回給伺服器的預設用戶端提示,包括瀏覽器名稱和主要版本、一個布林值 (指出瀏覽器是否在行動裝置上),以及作業系統名稱。而是在傳輸層安全標準 (TLS) 握手後方傳送。瀏覽器可以使用及支援這些功能
但在某些情況下,您可能需要擷取網站的重要資訊才能順利顯示。
最佳化重要提示
如要在瀏覽器和網路伺服器之間建立安全連線,第一個步驟是 TLS 握手。在沒有介入的情況下,Critical-CH 回應標頭的設計會在第一天傳送無重要提示的情況下,指示瀏覽器立即重試要求。
![帶有重要提示的用戶端提示序列圖。](https://developers-dot-devsite-v2-prod.appspot.com/privacy-sandbox/assets/images/sequence-diagram-with-critical-client-hints.avif?authuser=3&hl=zh-tw)
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 限制在跨源要求使用。凡是跨來源子資源,或透過在跨來源結構定義中執行的 JavaScript 取得的 JavaScript,都必須透過 Permissions-Policy
處理委派作業。
減少使用者代理程式對機器人偵測有何影響?
Chrome 對 User-Agent 字串所做的變更,不會直接影響機器人選擇傳送的使用者代理程式字串。
機器人可能會選擇更新字串來反映 Chrome 傳送的減少資訊,但這完全是他們選擇的。Chrome 仍會傳送相同的 User-Agent 格式,因此如果漫遊器將自己的 ID 附加至 Chrome User-Agent 字串結尾,則可繼續如此。
如果您對特定機器人有任何疑慮,建議您直接與擁有者聯絡,詢問對方是否有計畫變更使用者代理程式字串。
互動並提供意見
- 來源試用:請分享您對先前的來源試用的意見。
- 示範:試用使用者代理程式縮減功能示範。
- GitHub:閱讀 UA-CH 說明、提出問題並追蹤討論。
- 開發人員支援:透過 Privacy Sandbox 開發人員支援存放區提問及參與討論。
瞭解詳情
- 改善使用者隱私和開發人員體驗:網頁程式開發人員適用的總覽
- 從通用 Analytics (分析) 字串遷移至 UA-CH:網頁開發人員教學課程
- 深入瞭解 Privacy Sandbox