借助 Select 网址,您可以根据用户的 Shared Storage 数据选择向其展示的内容,而无需透露底层存储的数据。
如果您想以注重隐私保护的方式根据跨网站数据展示内容,可以使用 Select 网址 API。Select 网址 API 非常适合以下用例:
- 对内容进行 A/B 测试,以确保多个网站的用户体验一致。
- 针对有账号的用户和没有账号的用户显示不同的登录按钮。
- 轮播广告素材,以限制用户在多个网站上看到同一广告的次数。
什么是 Select 网址 API?
借助 Select 网址 API,您可以根据跨网站数据从一组网址中进行选择。该 API 基于共享存储空间构建,并使用 SharedStorageWorklet 读取可用的跨网站数据并选择提供的网址之一。所选网址会以一种方式返回给调用方,以防止在围栏框架之外读取该网址。该网址还可以在 iframe 中呈现,至少到 2026 年。

在上图中,shoes.example 网站可以嵌入到 news.example 等其他发布商网站中,并且仍然可以使用 Select 网址 with Shared Storage 来选择要嵌入的合适内容,从而访问相同的数据。
“选择网址”功能的运作方式
您可以使用 Select 网址 API 选择要使用跨网站数据渲染到围栏框架或 iframe 中的网址。使用 JavaScript 在共享存储空间中读取和写入跨网站数据,然后根据存储的数据从提供的列表中选择网址。

呈现的网址可以包含任何类型的内容:广告、文章、图片、HTML、号召性用语(例如按钮)等。
在此示例中,假设您运营着一个旅游网站,并投放了一个包含三种不同广告素材的广告系列。您希望根据用户的互动情况(观看或点击)按顺序展示这些广告素材。
当网站首次发现胜出的广告空间时,您可以在共享存储空间中存储相应广告素材的 ID 和点击状态。
例如:
await sharedStorage.set('last-creative', 'globe');
await sharedStorage.set('click', 'true');
这意味着,当您在用户访问的其他网站上赢得广告竞价时,可以根据这些数据展示不同的广告。

您的 JavaScript 在 SharedStorageWorklet 中运行以检索此信息,但您的代码无法与父网页上的 iframe 或受限框架之外的内容进行互动或通信。
再举一个例子,您可能想测试哪篇文章在嵌入式情境中的效果更好。如需对此进行测试,您可以在用户访问您的网站时将该用户分配给某个实验组,然后将该组 ID 存储在 Shared Storage 中,以便在跨网站情境中进行访问。在另一个网站上,您可以根据存储在共享存储空间中的相应用户的实验组,使用 Select 网址 API 选择要在围栏框架中呈现的最合适的网址。
借助 Select 网址,您可以根据跨网站数据做出明智的决策,而无需与嵌入网站分享用户的信息(例如浏览记录或其他个人详细信息),也无需将数据泄露到您自己的服务器。
预算
为了降低跨网站数据泄露的风险,Select 网址 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 属性添加到 options 对象来实现已保存的查询,如本示例所示。
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;
选择网址 API 用例
如果您要构建的网站具有需要在不同网域中运行的功能,则可能遇到以下某种使用情形:
- 轮播广告素材:通过存储广告素材 ID、观看次数和用户互动等数据,确定用户在不同网站上看到的广告素材,从而限制用户在多个网站上看到同一广告的频率。 这样一来,您就可以平衡观看次数,避免某些内容过度饱和,从而减少可能出现的负面用户体验。如需详细了解此使用情形,请参阅轮播广告素材。
- 按频次选择广告素材:在 Shared Storage 中存储浏览器查看次数,以限制用户在多个网站上看到同一广告的频次。如需详细了解此使用情形,请参阅按频次选择广告素材。
- 为已知客户量身打造用户体验:在不同网域中提供一致的体验。根据用户的注册状态或其他用户状态分享自定义内容和号召性用语,并在不同网域中提供一致的体验。如需详细了解此使用场景,请参阅为已知客户自定义用户体验。
- 运行 A/B 测试:A/B 测试会比较配置的两个或多个版本,以确定哪个版本的表现最好。您可以将用户分配到实验组,然后将该组存储在共享存储空间中,以便跨网站访问。这样一来,您无需跟踪个人用户,即可深入了解用户在您的网站网络中的行为。如需详细了解此使用情形,请参阅运行 A/B 测试。
借助 Select 网址 API 和 Shared Storage,您可以在不同的顶级网站上访问同一存储空间,从而开发这些用例。
试用演示版
您可以使用共享存储空间演示来试验 Select 网址。
此演示从广告客户、广告技术平台、内容分发商或其他希望在不同发布商的网站上存储信息的第三方服务的角度构建。在演示中,对于每种使用情形,相同的第三方代码都会在发布商 A 和发布商 B 的网站上运行。访问每个发布商的页面,了解如何在跨网站情境中共享数据。
您还可以在 GitHub 上查看演示的代码。
API 状态
Select 网址 API 已正式发布。如需使用 Select 网址 API 或在本地开发中启用该 API,请按照说明注册 Privacy Sandbox。
| Proposal | Status |
|---|---|
Event-level reporting for Content Selection (selectURL()) |
Available until at least 2026 |
| Per-site budgeting Explainer |
Available in M119 |
| Debugging Shared Storage worklets with DevTools Section |
Available in 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.