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

縮減使用者代理程式,是為了減少被動式數位指紋的途徑,方法是將 User-Agent (UA) 字串中的資訊縮減至僅包含瀏覽器品牌和主要版本、電腦或行動裝置的區別,以及執行的平台。目前,UA 字串會在每個 HTTP 要求中共用,並在 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. 前往User-Agent Reduction 試用方案,然後按一下「註冊」
  2. 建立權杖時,請務必勾選 Third-party matching 核取方塊。
  3. 如要從第三方嵌入內容接收縮減的 User-Agent 標頭,請更新 HTTP 回應標頭
  4. 如要在 JavaScript API 中接收縮減的 User-Agent 字串,則必須透過 JavaScript 插入測試權杖

在第三方嵌入項目上執行原點試用版時,請注意以下幾點: + 第三方嵌入項目無法指定 Critical-CH,因此第一個導覽不會傳送縮減的通用 Analytics 字串,但第三方嵌入項目的子資源要求會傳送縮減的通用 Analytics 字串。+ 如果原始試用版已驗證第三方嵌入項目的來源,頂層導覽中對相同來源的後續要求就會傳送縮減的 UA 字串。因此,建議您同時參與頂層和嵌入要求的來源試用計畫。+ 如果使用者代理程式已停用第三方 Cookie,則原點測試將無法在第三方嵌入要求中使用 User-Agent 標頭,但 Javascript API 仍會取得縮減的 UA 字串。

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

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

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

包含原始試用權限權杖的初始回應標頭應如下所示:

初始回應的標頭,其中包含原點試用權杖。

後續要求標頭應包含縮減的 UA 字串,如下所示:

後續要求標頭包含縮減的 UA 字串。

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

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

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

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

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

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

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