您可以根據使用者的共用儲存空間資料,選擇要向使用者顯示的內容,而不會揭露基礎儲存資料。
如要根據跨網站資料以注重隱私權的方式顯示內容,可以使用 Select URL API。Select URL API 適用於下列用途:
- A/B 測試內容,確保多個網站的使用者體驗一致。
- 為有帳戶的使用者和沒有帳戶的使用者顯示不同的登入按鈕。
- 輪播廣告素材,限制使用者在多個網站上看到同一則廣告的頻率。
什麼是 Select URL API?
您可以透過 Select URL API,根據跨網站資料從一組網址中選擇。這項 API 建構於共用儲存空間之上,並使用 SharedStorageWorklet 讀取可用的跨網站資料,然後選取其中一個提供的網址。選取的網址會傳回給呼叫端,但只能在設有圍欄的影格內讀取,在 2026 年前,網址也可以在 iframe 中算繪。

在上圖中,shoes.example 網站可以嵌入其他發布商網站 (例如 news.example),並使用「透過共用儲存空間選取網址」來選擇要嵌入的適當內容,存取相同資料。
「選取網址」的運作方式
您可以使用 Select URL API 選取要使用跨網站資料,在設有圍欄的影格或 iframe 中算繪的網址。使用 JavaScript 在共用儲存空間中讀取及寫入跨網站資料,然後根據儲存的資料,從提供的清單中選取網址。

顯示的網址可包含任何類型的內容:廣告、文章、圖片、HTML、行動號召 (例如按鈕) 等。
在這個範例中,您經營旅遊網站,並放送廣告活動,其中包含三種不同的廣告素材。您想根據使用者的互動 (觀看或點擊) 順序播放這些廣告素材。
網站首次觀察到得標廣告空間時,您可以在共用儲存空間中儲存該廣告素材的 ID 和點擊狀態。
例如:
await sharedStorage.set('last-creative', 'globe');
await sharedStorage.set('click', 'true');
也就是說,當您在使用者造訪的其他網站上贏得廣告競價時,可以根據這項資料顯示不同的廣告。

您的 JavaScript 會在 SharedStorageWorklet 中執行,以擷取這項資訊,但您的程式碼無法與父項網頁上的 iframe 或設有圍欄的影格互動或通訊。
舉例來說,您可能想測試哪篇文章在嵌入式環境中的成效較佳。如要測試這項功能,您可以在網站上看到使用者時,將使用者指派給實驗群組,然後將該群組 ID 儲存在共用儲存空間中,以便在跨網站環境中存取。在另一個網站上,您可以根據 Shared Storage 儲存的使用者實驗群組,使用 Select URL API 選擇要在設有安全範圍的影格中算繪的最合適網址。
使用「選取網址」功能,您就能根據跨網站資料做出明智決策, 不必與嵌入網站分享使用者資訊 (例如瀏覽器記錄或其他個人詳細資料),也不必將資料外洩至自己的伺服器。
預算
為降低跨網站資料外洩的風險,Select URL API 採用預算系統,結合長期和短期預算:
- 長期預算:使用
selectURL()時,長期預算為每個呼叫端網站每天 12 位元。只有在代管所選網址的影格執行頂層導覽時,系統才會收取這筆預算,費用計算方式為log2(number of URLs)。因此,如果您提供 8 個網址供選擇,費用為 3 位元。當天的剩餘預算計算方式為12 - (sum of bits deducted in the last 24 hours)。如果預算不足,系統會傳回預設網址 (清單中的第一個網址),並在導向預設網址時記錄 1 位元。 短期預算:在完全強制執行設有範圍的影格之前,以及在事件層級報表可用期間,短期預算是以每個網頁載入為準的額外限制。每個呼叫網站的預算為每個網頁載入 6 位元,限制單一呼叫網站可使用
selectURL()外洩的資料量。此外,每個網頁載入的整體預算為 12 位元,這是網頁上所有呼叫網站的合併限制。儲存的查詢可讓您在同一頁面重複使用先前的
selectURL()結果,減少短期預算用量。首次使用已儲存的查詢名稱呼叫selectURL()時,系統會儲存產生的索引,直到網頁生命週期結束為止。如果後續呼叫selectURL()時使用相同的已儲存查詢名稱,系統會傳回儲存的索引,且不會執行已註冊的作業。在這種情況下,系統只會在第一次使用時收取預算費用,但不會在同一個頁面載入期間重複使用時收費,因為沒有揭露任何新資訊。如要實作已儲存的查詢,請將 savedQuery 屬性連同所選查詢名稱新增至選項物件,如以下範例所示。
const topProductUrls = [ { url: 'https://ad.example/default-top-product.html' }, { url: 'https://ad.example/experiment-top-product.html' }]; const relatedProductUrls = [ { url: 'https://ad.example/default-related-product.html' }, { url: 'https://ad.example/experiment-related-product.html' }]; // This is the first call to `selectURL()` with `savedQuery: 'control_or_experiment'` // on this page, so it will be charged to both per-page budgets. const topProductsConfig = await sharedStorage.selectURL( 'productExperiment', topProductUrls, { savedQuery: 'control_or_experiment', keepAlive: true, resolveToConfig: true }); document.getElementById('topProductsFencedFrame').config = topProductsConfig; // This next call with this savedQuery won't charge either of the per-page budgets. const relatedProductConfig = await sharedStorage.selectURL( 'productExperiment', relatedProductUrls, { savedQuery: 'control_or_experiment', resolveToConfig: true }); document.getElementById("relatedProductFencedFrame").config = relatedProductConfig;
選取 URL API 應用實例
如果您要建構的網站功能必須跨不同網域運作,可能會有下列其中一種用途:
- 輪播廣告素材:儲存廣告素材 ID、觀看次數和使用者互動等資料,判斷使用者在不同網站上看到的廣告素材,藉此限制使用者在多個網站上看到相同廣告的頻率。這樣一來,您就能平衡觀看次數,避免特定內容過度曝光,進而減少可能造成的負面使用者體驗。如要進一步瞭解這個用途,請參閱「輪播廣告素材」一文。
- 依展示頻率選取廣告素材:將瀏覽器檢視次數儲存在 Shared Storage 中,限制使用者在多個網站上看到相同廣告的頻率。如要進一步瞭解這個用途,請參閱「依頻率選取廣告素材」。
- 為已知顧客提供個人化使用者體驗:在不同網域提供一致的體驗。根據使用者的註冊狀態或其他使用者狀態,分享自訂內容和號召性動作,並在不同網域提供一致的體驗。如要進一步瞭解這個用途,請參閱「為已知顧客打造專屬使用者體驗」。
- 執行 A/B 測試:A/B 測試會比較兩種以上的設定版本,判斷哪種版本的成效最佳。您可以將使用者指派給實驗群組,然後將該群組儲存在共用儲存空間中,以供跨網站存取。這樣一來,您就能收集整個網站聯播網路上使用者行為的洞察資料,而不必追蹤個別使用者。如要進一步瞭解這個用途,請參閱「執行 A/B 測試」。
透過 Select URL API 和 Shared Storage,您可以在不同的頂層網站存取相同儲存空間,進而開發這些用途。
試用示範專案
您可以使用共用儲存空間示範,試用「選取網址」功能。
本示範是從廣告主、廣告技術、內容發布商或其他第三方服務的角度建構,這些服務想在不同發布商的網站中儲存資訊。在示範中,每個用途的發布商 A 和發布商 B 網站都會執行相同的第三方程式碼。請前往各發布商的頁面,瞭解資料在跨網站環境中的分享方式。
您也可以在 GitHub 上查看示範的程式碼。
API 狀態
Select URL API 現已正式發布。如要使用 Select URL API 或在本機開發時啟用該 API,請按照說明註冊 Privacy Sandbox。
| 提案 | 狀態 |
|---|---|
內容選取功能的事件層級報表 (selectURL()) |
至少可使用至 2026 年 |
| 個別網站預算 說明 |
將於 M119 版本推出 |
| 使用開發人員工具偵錯共用儲存空間小程式 節段 |
適用於 M120 |
參與討論及分享意見
請注意,「選取網址」API 提案目前仍在積極討論和開發中,隨時可能變更。
我們很期待聽到您對 Select URL API 的想法。