Mercado Libre 如何測試 Privacy Sandbox,進一步保障客戶隱私

Mercado Libre 是拉丁美洲的領先電子商務平台,在 18 個國家/地區營運。他們擁有複雜的數位基礎架構、超過 1 億名活躍使用者,以及多種服務,包括市集、付款 (Mercado Pago) 和物流。

Mercado Libre 擁有超過 40 個網域,其中許多網域過去都仰賴第三方 Cookie 來啟用跨網站使用者驗證和詐欺偵測等功能。

Mercado Libre 進行了大量工作,找出可能需要第三方 Cookie 的重要使用者體驗和功能。他們研究並導入第三方 Cookie 替代方案 (包括 Privacy Sandbox API),有助於確保資源正常運作,無論是否可使用第三方 Cookie,都能持續為使用者提供良好體驗。

請繼續閱讀,瞭解 Mercado Libre 如何減少對第三方 Cookie 的依賴,並保護客戶的隱私權。

Mercado Libre 考量了第三方 Cookie 使用情形的三個面向:

  1. Mercado Libre 是否仰賴網域之間的跨網站 Cookie 共用機制?
  2. 他們提供的第三方服務是否需要使用第三方 Cookie?
  3. 如果無法使用第三方 Cookie,是否會影響到他們所依賴的第三方服務?

由於涉及許多業務單位,因此評估這類規模的數位資源使用第三方 Cookie 的影響,需要採取協調一致的做法。

Mercado Libre 前端平台團隊負責進行影響稽核,並為其他團隊提供集中式溝通和支援服務。這包括提供資源和訓練,確保全公司都能瞭解必要的變更,讓所有團隊都能採用新做法。

Mercado Libre 的各個業務單位各自在不同的網域中運作,例如 mercadolibre.commercadopago.commercadoshops.com

他們進行詳細稽核後,發現跨網站 Cookie 共用功能對生態系統中的使用者體驗至關重要:

  • 使用者驗證:18 個國家/地區的 7,500 萬名活躍購物者中,部分使用者可能會受到影響。
  • 內部數據分析:超過 4,000 名業務分析師會運用跨網站資料做出決策。可能對使用者歷程追蹤造成的影響。
  • 防詐:在無法使用第三方 Cookie 時,對於安全的付款流程至關重要 (每秒超過 50 筆 Mercado Libre 購買交易,每秒 244 筆 Mercado Pago 交易)。

這份完整的分析報告包含團隊、擁有者、業務影響、用途說明、目前行為、可能的損壞情形,以及建議的 Privacy Sandbox 解決方案等資訊。

Mercado Libre 的分區 Cookie

分區 Cookie (也稱為 CHIPS) 可讓開發人員將 Cookie 存入分區儲存空間,每個頂層網站都有個別的 Cookie 罐。

使用 CHIPS 進行詐欺偵測,不必使用第三方 Cookie

挑戰

Mercado Libre 使用第三方 Cookie,為使用者提供流暢的使用體驗,無論是直接在平台上進行的付款,還是使用 Mercado Pago 做為付款處理工具的透明整合,皆是如此。舉例來說,他們會在機制中使用第三方 Cookie,協助識別使用者所知的裝置何時使用信用卡,進而防止信用卡詐欺。

裝置資訊是 Mercado Libre 機器學習模型用來決定是否核准付款的主要資料信號之一。因此,如果無法為大量使用者提供這類資訊,可能會導致付款核准率大幅下滑。

解決方案

為瞭解決第三方 Cookie 的限制,Mercado Libre 測試了 CHIPS,這是一種解決方案,可為每個與付款平台整合的網站設定專屬 Cookie。目的是讓 Mercado Libre 為每間商店維護多項資訊。

在這個案例中,CHIPS 協助 Mercado Libre 為回訪客戶提供流暢且有效率的體驗,即使第三方 Cookie 遭到封鎖也一樣。

深入探討技術

將 Mercado Pago 用於付款處理服務時,最常見的整合方法是使用 JavaScript,其中包含卡片資料符記模組和防詐模組。防詐欺模組會使用第三方 Cookie,將付款連結至使用者的裝置。

過去,Mercado Pago 會透過第三方 Cookie 識別並追蹤使用者在各商店的裝置,如下圖所示。

Mercado Pago 先前使用的未分割配置。
Mercado Pago 過去使用的未分割配置。

目前,分割 Cookie 可讓 Mercado Libre 為每個頂層網站設定個別的 Cookie,以便維持裝置 ID。如下圖所示,此做法可保護隱私,因為它會限制在商店間分享資訊。在無法使用第三方 Cookie 的情況下,系統會使用分割 Cookie。這項限制可限制商店間的資訊分享行為,進而改善使用者隱私。

分區 Cookie,目前由 Mercado Libre 使用。
分區 Cookie,目前由 Mercado Libre 使用。

早期開發

首先,Mercado Libre 在 Chrome 中停用第三方 Cookie,並確認在 Mercado Libre 擔任第三方供應商的網站上,無法成功設定 Cookie。接著,Mercado Libre 更新了這些 Cookie 以便分割。透過這項變更,他們確認即使使用者已停用第三方 Cookie,Chrome 仍可設定分割 Cookie。接著,Mercado Libre 按照 CHIPS 安全性設計指南新增 Set-Cookie 標頭,並未發生任何錯誤。

提升業務效率

Mercado Libre 已開始使用 CHIPS 整合 Mercado Pago 和 Mercado Shops 自訂網域。Mercado Libre 現在會在使用者的裝置上儲存額外的分割 Cookie,以及標準未分割 Cookie。

導入 Mercado Libre 的 CHIPS 相當簡單。

測試 CHIPS 在機器學習詐欺模型上的成效

Mercado Libre 預計停止為控制組傳送標準未分割 Cookie 信號,模擬第三方 Cookie 遭到封鎖的情況,並改用分割 (CHIPS) Cookie。這個控制組一開始會包含網站母體的一部分,而 Mercado Libre 會隨著測試成效,逐步增加網站的比例和數量。

我們會根據控制組的付款核准率,與先前相近期間進行比較,以評估成效。

早期實驗

Mercado Libre 在控制組進行類似的實驗,檢查是否能使用 CHIPS 而非未分割的 Cookie 來辨識相同裝置,並評估裝置 (Cookie) 的年齡。

控制組包含阿根廷和巴西的指定商家,兩組的行為方式相同。

總結來說,Mercado Libre 可以確認約 70% 使用 CHIPS 的裝置身分,也就是說,剩下的 30% 是新使用者,或是出現異常行為的案例。

CHIPS 實作結論

Mercado Libre 致力於保護使用者隱私,即使這會導致隱私權與使用者體驗之間的權衡。實作 CHIPS 的過程相當簡單,有助於將同一個網站內的權衡取捨影響降到最低。Mercado Libre 仍在探索其他 Privacy Sandbox 解決方案,例如Private State Tokens,這可能有助於完全消除體驗差異,讓使用者享有隱私權和實用性的雙重優勢。

相關網站集合 (RWS) 是指公司宣告網站之間的關係,以便瀏覽器允許基於特定目的的第三方 Cookie 有限存取權。

挑戰

當新裝置進入 Mercado Libre 自有網域時,Meli 會使用 Cookie 瞭解裝置在各個網域 (例如 mercadolibre.com 和 mercadopago.com) 上的活動。

解決方案

為了因應無法使用第三方 Cookie 的情況,Mercado Libre 在所有使用第三方 Cookie 的客戶端網域中導入 RWS,並遵守單一組網域中包含主網域和其他五個相關網域的限制。

深入探討技術:尋找要納入的正確網域

在調查要將哪些網域納入集合時,Mercado Libre 發現許多網域都含有過時的 Cookie,因此已不再使用。這些網域已從集合中排除。

網路前端平台團隊負責建立及管理 Mercado Libre 的相關網站組合。(您可以在相關網站組 GitHub 存放區中找到完整的集合)。

 {
      "contact": "infraestructura@mercadolibre.com",
      "primary": "https://mercadolibre.com",
      "associatedSites": [
        "https://mercadolivre.com",
        ...
      ],
      "rationaleBySite": {
        "https://mercadolivre.com": "Mercado Libre in Brazil",
        ...
      },
      "ccTLDs": {
        "https://mercadolibre.com": [
          "https://mercadolibre.com.ar",
     ...
        ],
        "https://mercadolivre.com": [
          "https://mercadolivre.com.br"
        ],
        ...
      }
    },

提交內容獲得核准後,我們只花了兩週就將這套裝置投入生產。

需求條件

為了讓伺服器設定 Cookie,該伺服器必須支援 CORS,且要求必須跨來源並包含憑證:

res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Origin', `${req.headers.origin}`);

您必須使用下列項目設定 Cookie:

  • Secure
  • SameSite=None

如果第三方 Cookie 無法使用預設值,用戶端必須使用 navigator.permissions.query() 檢查是否有權存取未分割的 Cookie,然後使用 requestStorageAccessFor() 要求每個嵌入網域的儲存空間存取權。此外,使用者必須與螢幕互動 (例如點擊或鍵盤動作),使用者代理程式才能在首次要求權限時成功。

克服 RWS 挑戰

現有的 Cookie 散布程序 (例如圖像像素) 和 Storage Access API 的使用方式,都需要使用者互動,因此受到限制。這就是 Mercado Libre 跨網域使用者持續登入功能的情況,當使用者停用第三方 Cookie 時,這項功能就會中斷。

相關網站組合和 Privacy Sandbox 技術並非為了提供與第三方 Cookie 一對一的替代方案,可能無法支援某些用途:

  • 圖片像素

    • Mercado Libre 可以新增 crossorigin="use-credentials" 屬性。不過,由於這項方法需要使用者互動 (使用者點選連結),因此 Mercado Libre 無法保證會設定 Cookie。如果畫面之間有導覽,像素也會遭到取消:Chrome 偵測到導覽時,會取消目前網頁的所有資源要求,並開始載入新網頁。
  • sendBeacon()

    • 無法設定 crossorigin,因此要求會失敗,且不會傳送 Cookie。
  • 使用 sendBeacon() 或圖片像素的重新導向

    • 由於這些 Cookie 取決於使用者互動,因此無法透過重新導向至執行 JavaScript 的不同網域之間的中介畫面來設定 Cookie。

WebView 限制

Permissions API 不適用於 WebView。這迫使 Mercado Libre 實作邏輯,讓 Storage Access API 只在 Permissions API 可用時啟動 (除了 WebView 以外的所有地方)。此外,Safari 或 Firefox 目前不支援 requestStorageAccessFor()

無論平台為何,Mercado Libre 都會視需要使用功能偵測功能。

萬用解決方案

Mercado Libre 需要使用 fetch(){keepalive: true, credentials: 'include'}。這樣一來,他們就能設定 CORS、加入憑證,並確保要求會在背景中提出,不會遭到瀏覽器取消。

fetch(domain, {
  keepalive: true,
  credentials: 'include',
});

// or

fetch(domain, {
  method: 'POST'
  body: data,
  keepalive: true,
  credentials: 'include',
});

完整範例:

const TP_DOMAINS = ['https://mercadolibre.com',
                   'https://www.mercadoshops.com.ar',
                   'https://www.mercadopago.com',
                   'https://www.mercadopago.com.ar'];

if ('requestStorageAccessFor' in document) {
   // Check the permission to see if storage access is already available.
   let storageAccessPermission = await navigator.permissions.query({
       name: 'top-level-storage-access',
       requestedOrigin: TP_DOMAINS[0]
   })

   // If the permission has already been granted, request storage access.
   if (storageAccessPermission.state === 'granted') {
       requestStorageAccessForDomains();
   }

   // If the state "prompt" is returned, a storage access request must be triggered by user gesture.
   else if (storageAccessPermission.state === 'prompt') {
       document.addEventListener('click', requestStorageAccessForDomains, { capture: true });
       document.addEventListener('keydown', requestStorageAccessForDomains, { capture: true });
   }
} else {
   console.log('requestStorageAccessFor is not supported');
}

function requestStorageAccessForDomains() {
   // Request storage access for each domain.
   TP_DOMAINS.forEach(rSAFor)

   // Clean up listeners so they are not called again.
   document.removeEventListener('click', requestStorageAccessForDomains);
   document.removeEventListener('keydown', requestStorageAccessForDomains);
}

function rSAFor(domain) {
   document.requestStorageAccessFor(domain).then(
       success => { setCookie(domain); },
       err => { console.log('requestStorageAccessFor error: ' + err); }
   );
}

function setCookie(domain) {
   const url = new URL(domain);
   const hostname = url.hostname.split('.').slice(1).join('.');
   fetch(domain + '/pixel.gif?name=_d2id&value=DONE&max_age=94608000&domain=.' + hostname, {
       keepalive: true,
       credentials: 'include',
   });
}

在 Chrome 中進行測試

您可以設定 Chrome 標記,在本機測試相關網站組合。舉例來說,如果是 related-website-sets.glitch.me 上的示範:

--use-related-website-set="{\"primary\": \"https://related-website-sets.glitch.me\", \"associatedSites\": [\"https://rws-member-1.glitch.me\"]}"
https://related-website-sets.glitch.me/

RWS 導入結論

大型網站的 RWS 導入作業並非易事。Mercado Libre 只需要一位開發人員的資源,但從開始到完成在 18 個國家/地區的推出程序,大約花了三個月的時間。

建議想導入 RWS 的廣告主盡早著手,請盡快導入 RWS。Mercado Libre 必須變更伺服器和用戶端的 Cookie、新增標頭、進行後端變更,以及更新 JavaScript。

最後的結論和後續步驟

Mercado Libre 成功導入 Privacy Sandbox API,展現了他們致力於因應隱私權環境的變化。Mercado Libre 主動測試並解決第三方 Cookie 使用情形,因此得以保留數據分析和防詐功能等重要商務功能,同時提升使用者隱私並確保遵守不斷變化的法規。本個案研究為機構提供寶貴的洞察資料,協助機構在第三方 Cookie 無法使用時做好準備。