您可以根據使用者的共用儲存空間資料,選擇要向使用者顯示的內容,而不會揭露基礎儲存資料。
如要根據跨網站資料以注重隱私權的方式顯示內容,可以使用 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 |
Engage and share feedback
Note that the Select URL API proposal is under active discussion and development and subject to change.
We're eager to hear your thoughts on the Select URL API.
- Proposal: Review the detailed proposal.
- Discussion: Join the ongoing discussion to ask questions and share your insights.