Функция «Выбрать URL» позволяет выбрать, какой контент показывать пользователю на основе данных, хранящихся в общем хранилище, без раскрытия самих сохраненных данных.
В случаях, когда вам необходимо отображать контент на основе межсайтовых данных с соблюдением принципов конфиденциальности, вы можете использовать API Select URL. API Select URL хорошо подходит для таких задач, как:
- A/B-тестирование контента для обеспечения единообразного пользовательского опыта на нескольких сайтах.
- Отображение разных кнопок входа для пользователей, имеющих учетную запись, и пользователей, не имеющих ее.
- Использование ротации рекламных материалов позволяет ограничить частоту показа одной и той же рекламы пользователю на разных сайтах.
Что такое API выбора URL-адреса?
API выбора URL-адреса позволяет выбирать из набора URL-адресов на основе межсайтовых данных. API построен на основе Shared Storage и использует SharedStorageWorklet для чтения доступных межсайтовых данных и выбора одного из предоставленных URL-адресов. Выбранный URL-адрес возвращается вызывающей стороне таким образом, чтобы его нельзя было прочитать, кроме как внутри изолированного фрейма. URL-адрес также может отображаться в iframe как минимум до 2026 года.

На приведенной выше диаграмме сайт shoes.example можно встроить в другие сайты издателей, такие как news.example , и при этом получить доступ к тем же данным, используя функцию «Выбрать URL с общим хранилищем», чтобы выбрать подходящий контент для встраивания.
Как работает функция выбора URL-адреса
Вы можете использовать API выбора URL-адреса для отображения в изолированном фрейме или iframe с использованием межсайтовых данных. Используйте JavaScript для чтения и записи межсайтовых данных в общем хранилище, а затем выберите URL-адрес из предоставленного списка на основе сохраненных данных.

В отображаемом URL-адресе может содержаться любой контент: реклама, статьи, изображения, HTML-код, призывы к действию (например, кнопки) и многое другое.
В этом примере вы управляете туристическим сайтом и запускаете рекламную кампанию с тремя различными рекламными креативами. Вам нужно расположить эти креативы в последовательности в зависимости от действий пользователя (просмотр или клик).
Когда сайт впервые обнаруживает выигрышное рекламное место, вы можете сохранить идентификатор и статус клика для этого креатива в общем хранилище.
Например:
await sharedStorage.set('last-creative', 'globe');
await sharedStorage.set('click', 'true');
Это означает, что если вы выиграете рекламный аукцион на других сайтах, которые посещает этот пользователь, вы сможете показывать другую рекламу на основе этих данных.

Ваш JavaScript-код выполняется в SharedStorageWorklet для получения этой информации, но ваш код не может взаимодействовать или обмениваться данными за пределами iframe или фрейма, заключенного в защитную оболочку, на родительской странице.
В качестве другого примера, вы можете проверить, какая статья будет лучше отображаться во встроенном контексте. Для этого вы можете назначить пользователя в экспериментальную группу, когда увидите этого пользователя на своем сайте, а затем сохранить идентификатор этой группы в общем хранилище для доступа в межсайтовом контексте. На другом сайте вы можете использовать API выбора URL-адреса, чтобы выбрать наиболее подходящий URL-адрес для отображения во встроенном фрейме, основываясь на экспериментальной группе этого пользователя, сохраненной в общем хранилище.
Использование функции «Выбрать URL» позволяет принимать обоснованные решения на основе данных, полученных с разных сайтов, без передачи информации о пользователях (например, истории браузера или других личных данных) на сайт, на который вы размещаете контент, и без утечки данных на ваши собственные серверы.
Бюджеты
Для снижения риска утечки данных между сайтами API выбора URL использует систему бюджетирования, сочетающую долгосрочные и краткосрочные бюджеты:
- Долгосрочный бюджет : Долгосрочный бюджет составляет 12 бит на каждый вызывающий сайт в день при использовании
selectURL(). Этот бюджет взимается только в том случае, если фрейм, на котором размещен выбранный URL, выполняет навигацию верхнего уровня, при этом стоимость рассчитывается какlog2(number of URLs). Таким образом, если вы предоставляете 8 URL на выбор, стоимость составляет 3 бита. Любой оставшийся бюджет на день рассчитывается как12 - (sum of bits deducted in the last 24 hours). Если бюджета недостаточно, возвращается URL по умолчанию (первый URL в списке), и регистрируется 1 бит, если осуществляется переход на URL по умолчанию. Краткосрочные ограничения : Краткосрочные ограничения представляют собой дополнительные лимиты на каждую загрузку страницы до тех пор, пока не будет полностью внедрена защита фреймов и пока доступна отчетность на уровне событий. Существует ограничение в 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;
Выберите варианты использования URL API
Если вы создаёте веб-сайт с функциями, которые должны работать на разных доменах, у вас может возникнуть один из следующих сценариев использования:
- Ротация рекламных креативов : Ограничьте частоту показа одной и той же рекламы пользователю на разных сайтах, сохраняя данные, такие как идентификатор креатива, количество просмотров и взаимодействие с пользователем, чтобы определить, какие креативы будут отображаться на разных сайтах. Это позволяет сбалансировать просмотры и избежать перенасыщения определенным контентом, чтобы ограничить возможное негативное взаимодействие с пользователем. Для получения дополнительной информации об этом варианте использования см. Ротация рекламных креативов .
- Выбор рекламного креатива по частоте показа : сохраняйте данные о количестве просмотров в браузере в общем хранилище, чтобы ограничить частоту показа одной и той же рекламы пользователю на нескольких сайтах. Для получения дополнительной информации об этом варианте использования см. раздел «Выбор рекламного креатива по частоте показа» .
- Настройка пользовательского интерфейса для известных клиентов : Обеспечьте единообразный интерфейс на разных доменах. Делитесь пользовательским контентом и призывами к действию в зависимости от статуса регистрации пользователя или других состояний пользователя и обеспечивайте единообразный интерфейс на разных доменах. Для получения дополнительной информации об этом варианте использования см. раздел «Настройка пользовательского интерфейса для известных клиентов» .
- Проведение A/B-тестирования : A/B-тестирование сравнивает две или более версий конфигурации, чтобы определить, какая из них работает лучше всего. Вы можете назначить пользователя в экспериментальную группу, а затем сохранить эту группу в общем хранилище для доступа между сайтами. Это позволяет собирать информацию о поведении пользователей в вашей сети сайтов, не отслеживая отдельных пользователей. Для получения дополнительной информации об этом варианте использования см. раздел «Проведение A/B-тестирования» .
API выбора URL-адреса с использованием общего хранилища позволяет разрабатывать подобные сценарии использования, предоставляя доступ к одному и тому же хранилищу на разных сайтах верхнего уровня.
Поэкспериментируйте с демо-версией.
Вы можете поэкспериментировать с функцией выбора URL-адреса, используя демонстрационную версию Shared Storage .
Эта демонстрация создана с точки зрения рекламодателя, компании, занимающейся рекламными технологиями, дистрибьютора контента или другого стороннего сервиса, который хочет хранить информацию на сайтах разных издателей. В демонстрации один и тот же сторонний код работает как на сайтах издателя A, так и на сайтах издателя B для каждого варианта использования. Посетите страницу каждого издателя, чтобы увидеть, как данные передаются в контексте межсайтового взаимодействия.
Вы также можете ознакомиться с кодом демонстрационной версии на GitHub .
статус API
API выбора URL-адреса находится в общедоступной версии . Чтобы использовать API выбора URL-адреса или включить его для локальной разработки, следуйте инструкциям по регистрации в «песочнице конфиденциальности» .
| Предложение | Статус |
|---|---|
Отчеты на уровне событий для выбора контента ( selectURL() ) | Доступно как минимум до 2026 года. |
| Бюджетирование по каждому сайту Объяснитель | Доступен в исполнении M119. |
| Отладка рабочих модулей общего хранилища с помощью DevTools Раздел | Доступен в M120 |
Привлекайте и делитесь отзывами
Обратите внимание, что предложение Select URL API находится в стадии активного обсуждения и разработки и может быть изменено.
Мы с нетерпением ждем вашего мнения об API Select URL.
- Предложение : Рассмотрите подробное предложение .
- Обсуждение : присоединяйтесь к продолжающемуся обсуждению , чтобы задавать вопросы и делиться своими идеями.