使用者代理程式縮減來源試用

縮減使用者代理程式,是為了減少被動式數位指紋的途徑,方法是將 User-Agent (UA) 字串中的資訊縮減至僅包含瀏覽器品牌和主要版本、電腦或行動裝置的區別,以及執行的平台。系統會在每個 HTTP 要求中共用 UA 字串,並在 JavaScript 中將其公開給瀏覽器載入的所有資源。其中包含瀏覽器、執行平台和功能的相關重要資訊。User-Agent Client Hints (UA-CH) 可提供與完整 UA 字串相同的資訊,同時讓網站只要求所需的 UA 資訊。

Chrome 95 Beta 版開始,我們會開放原點測試,讓User-Agent 縮減功能可以讓網站選擇接收縮減的 UA 字串。這樣一來,網站就能在 Chrome 中將縮減的 UA 設為預設行為前,先行發現並修正問題 (縮減作業預計會在 2022 年第二季開始)。如果您想在穩定版推出前,針對 95 Beta 版使用者測試來源試用功能,請務必在 Chrome 95 發布日期 (預定為 2021 年 10 月 19 日) 之前選擇加入並測試。

以下概略說明原點測試,以及您可以預期的結果。和往常一樣,歡迎在 UA 縮減 GitHub 存放區中提供意見回饋或提出任何問題。

什麼是 User-Agent?

User-Agent (UA) 字串會在每個 HTTP 要求中共用,並在 JavaScript 中公開給瀏覽器載入的所有資源。其中包含瀏覽器和執行平台的重要資訊。

為什麼要縮減使用者代理程式?

縮減使用者代理程式,是指在 2020 年 1 月首次宣布的 Chrome 瀏覽器中,減少被動式數位指紋採集途徑。將 UA 字串中的資訊縮減為僅包含瀏覽器品牌和主要版本、電腦或行動裝置的區別,以及執行的平台,這樣就更難識別個別使用者。

這對網頁開發人員有何影響?

網站應準備接收縮短的 UA 字串,並考慮參與來源測試 (詳情請見下文)。經過縮減的使用者代理程式值會顯示在以下位置:

  • User-Agent HTTP 要求標頭
  • navigator.userAgent JavaScript Getter
  • navigator.platform JavaScript Getter
  • navigator.appVersion JavaScript Getter

如要接收比縮減版 User-Agent 分享的更多用戶端資訊,網站必須改用新的 User-Agent Client Hints API。如要進一步瞭解遷移策略,請參閱「改用 User-Agent Client Hints」。

使用者代理程式縮減計畫不包含 iOS 和 WebView,因此這些平台將繼續取得完整的使用者代理程式字串。主要原因是這些平台尚未導入 User-Agent Client Hints

這項原點試用方案的運作方式為何?

這個來源試用與標準來源試用有點不同。標準來源測試只能控制回應中的行為 (例如控制回應的 JavaScript 中對 API 的存取權)。在這個測試中,我們的目標不僅是修改 JavaScript API 中提供的 UA 字串,還要修改在 HTTP 要求中傳送的 User-Agent 標頭。

為此,我們定義了名為 Sec-CH-UA-Reduced 的臨時用戶端提示,如果在要求中出現此提示,就表示 User-Agent 標頭值包含縮減的 UA 字串。只有在來源試用權杖有效,且來源試用期結束後 Sec-CH-UA-Reduced 用戶端提示無法運作時,才會傳送 Sec-CH-UA-Reduced 用戶端提示 (連同縮短的 UA 字串)。請注意,除非您設定 Critical-CH header,否則第一個導覽要求仍會收到未縮減的 User-Agent 字串。

傳送至相同來源的子資源要求會自動傳送與傳送頂層要求相同的 User-Agent 字串。傳送至第三方來源的子資源要求也會傳送與頂層要求相同的 User-Agent 字串,包括來源測試權杖有效時的縮減版 UA 字串,前提是權限政策允許這麼做。

如何參與使用者代理程式縮減來源測試?

  1. 如要註冊原點試用計畫並取得網域的權杖,請前往使用者代理程式縮減功能試用計畫頁面

  2. 更新 HTTP 回應標頭:

    1. Origin-Trial: <ORIGIN TRIAL TOKEN> 新增至 HTTP 回應標頭,其中 <ORIGIN TRIAL TOKEN> 包含註冊原始試用版時取得的權杖。
    2. Accept-CH: Sec-CH-UA-Reduced 新增至 HTTP 回應標頭。
    3. 設定 Accept-CH 只會導致系統在後續要求傳送至來源時,傳送縮減的 User-Agent 字串;如要重新傳送第一個導覽要求,並傳送縮減的 User-Agent 字串,請在 HTTP 回應標頭中加入 Critical-CH: Sec-CH-UA-Reduced,以及 Accept-CHOrigin-Trial 標頭。
    4. 注意:如果回應標頭包含有效的 Origin-Trial 權杖和 Accept-CH: Sec-CH-UA-Reduced,則所有子資源要求 (例如圖片或樣式表) 和子導覽 (例如 iframe) 都會傳送縮減的 UA 字串,即使這些要求的來源未註冊為來源測試項目也一樣。
  3. 在 Chrome M95 以上版本中載入網站,並開始接收縮減的 UA 字串。

  4. 請將任何問題或意見回饋提交至 UA Reduction GitHub 存放區

  5. 如要查看原點試驗 (以及原始碼) 的示範,請前往 https://uar-ot.glitch.me/

如何以第三方嵌入功能參與來源試用?

從 Chrome 96 開始,第三方嵌入內容 (例如其他網站中的 iframe) 可以參與原始來源試驗,而不需要註冊頂層網站。

如要註冊成為第三方嵌入供應商,請按照下列步驟操作:

  1. 前往使用者代理程式縮減功能的試用版,然後按一下「註冊」
  2. 建立權杖時,請務必勾選 Third-party matching 核取方塊。
  3. 如要從第三方嵌入內容接收縮減的 User-Agent 標頭,請更新 HTTP 回應標頭
  4. 如要在 JavaScript API 中接收縮減的 User-Agent 字串,則必須使用 JavaScript 插入試用版權杖

在第三方嵌入內容上執行原點試驗時,請留意以下幾點重要事項:

  • Critical-CH 無法指定給第三方嵌入項目,因此第一個導覽不會傳送縮減的 UA 字串,但第三方嵌入項目的子資源要求會傳送縮減的 UA 字串。
  • 如果第三方嵌入項目的來源已通過來源測試,頂層導覽中對相同來源發出的後續要求就會傳送縮減的 UA 字串。因此,建議您同時為頂層和內嵌要求一併參與來源試用計畫。
  • 如果使用者代理程式已停用第三方 Cookie,則原點試用版將無法在第三方嵌入要求中使用 User-Agent 標頭,但 JavaScript API 仍會取得縮減的 UA 字串。

如何驗證來源試用功能是否正常運作?

如要驗證來源測試是否正常運作,請檢查要求標頭,並確保以下事項:

  1. User-Agent 標頭包含縮減版本。請參閱這份通用 Analytics 字串縮減範例清單。其中一個方法是 Chrome 子版本字串包含 0.0.0
  2. Sec-CH-UA-Reduced 標頭設為 ?1

如何停止參與使用者代理程式縮減來源試用?

您可以在試用期間的任何時間點停止參與,並接收完整的 User-Agent 字串。如要停止參與:

  1. 在 HTTP 回應中傳送 Accept-CH 標頭,但包含 Sec-CH-UA-Reduced。注意:如果您的網站未要求任何其他用戶端提示,則使用空值的 Accept-CH 是達成此目標的有效方法。
  2. 從 HTTP 回應中移除使用者代理程式縮減試驗的 Origin-Trial 標頭。
  3. 如果已設定,請從 HTTP 回應的 Critical-CH 標頭中移除 Sec-CH-UA-Reduced

原始試用方案的試用期為何?

使用者代理減少來源試用功能將至少執行六個月,相當於約六個 Chrome 里程碑。來源測試將在 M95 中顯示,並在 M101 結束。屆時,Chrome 會評估來源測試的意見回饋,然後根據推出計畫,分階段傳送縮減的 User-Agent 字串。如果網站需要更長的時間,可以選擇參與後續的淘汰來源試用方案,這樣就能再使用完整的 UA 字串至少六個月。我們會在停用前測試功能準備就緒時,發布更多詳細資訊。

如何針對使用者代理程式縮減原點試用計畫提供意見回饋?

請將任何問題或意見回饋提交至 UA Reduction GitHub 存放區