Topics API

Enable interest-based advertising, without having to resort to tracking the sites a user visits.

Published on Updated on

Translated to: English, Español, Português, 한국어, 中文, 日本語

Статус реализации

В этом документе приводится предложение, связанное с рекламой на основе интересов: Topics API.

Зачем нужен этот API

Topics API – это технология Privacy Sandbox, позволяющая показывать пользователям рекламу на основе интересов, не отслеживая посещаемые сайты.

Реклама на основе интересов – это форма персонализированной рекламы, при которой объявления подбираются с учетом интересов пользователя, определенных по недавно посещенным сайтам. Такая реклама отличается от контекстной, которая подбирается в зависимости от контента, просматриваемого пользователем в данный момент.
Реклама на основе интересов помогает рекламодателям привлекать потенциальных клиентов и финансировать сайты, посещение которых сложно монетизировать только с помощью контекстной рекламы. Кроме того, реклама на основе интересов дополняет контекстную информацию на текущей странице, чтобы посетитель видел наиболее подходящие объявления.

Topics API определяет темы, которые могут быть интересны пользователю, на основе недавних действий в браузере. Эти темы дополняют контекстную информацию и помогают подбирать подходящую рекламу для пользователя.
Topics API выполняет три основные задачи:

  • Сопоставляет имена хостов сайтов с интересными пользователям темами. Например, сайт о йоге может быть отнесен к разделу "Фитнес".
  • Определяет наиболее подходящие для пользователя темы на основе недавних действий в браузере.
  • С помощью API JavaScript указывает темы, интересующие пользователя в настоящее время, чтобы показывать подходящую рекламу.

Topics API обеспечивает надежные элементы управления для пользователей, поскольку использует узнаваемые темы высокого уровня. Мы планируем предоставить пользователям Chrome возможность удалять отдельные темы и смотреть, какие темы сохранены в браузере.

Как выбираются темы

Темы будут подбираться из классификатора – списка с такими элементами, как "Кантри", "Декоративная косметика" или "Вегетарианская кухня". На этапе тестирования темы выбираются специалистами Chrome. В дальнейшем классификатор должен стать ресурсом, с которым будут работать надежные участники экосистемы. Чтобы все темы поддерживались в браузерах, нужно использовать небольшой список категорий. Сейчас предлагается составить классификатор примерно из 350 элементов, однако в дальнейшем в нем может быть от нескольких сотен до нескольких тысяч тем. Чтобы в список не попадали деликатные категории, темы должны быть общедоступны, отбираться людьми и регулярно обновляться. Исходный классификатор, который предложен для тестирования, создан вручную. Это позволяет исключить деликатные категории, например связанные с национальностью или сексуальной ориентацией.

В Topics API темы будут определяться на основе имен хостов с помощью машинного обучения. Модель классификатора обучается поставщиком браузера или третьей стороной с помощью отбираемых вручную имен хостов и тем. Модель будет распространяться вместе с браузером и находиться в открытом доступе. С ее помощью браузер на устройстве пользователя сможет определять самые интересные темы на основе имен хостов недавно посещенных сайтов.
На рисунке ниже упрощенно показано, как с помощью Topics API выбирается подходящее объявление на рекламной платформе. Предполагается, что в браузере пользователя уже есть модель, которая сопоставляет имена хостов сайтов с темами.

Diagram showing the stages in the Topics API lifecycle, from a user visiting websites to an ad   being displayed.

Открыть изображение в полном размере

Как работает Topics API

Предложение по Topics API находится на этапе начального обсуждения. Мы планируем вносить изменения, опираясь на отзывы участников экосистемы.
Проект API пока находится в разработке, и указанные ниже сведения будут меняться.

Необходимо, чтобы механизм, который обеспечивает выбор рекламы на основе интересов (например, Topics API), предлагал только актуальные темы.

Браузер будет определять темы на основе действий пользователя за определенный промежуток времени – эпоху. Сейчас предлагаемый период составляет одну неделю. Тема для каждой эпохи будет выбираться произвольно из пяти категорий, которыми пользователь интересовался чаще всего за этот период времени. Чтобы обеспечить конфиденциальность и гарантировать использование самых разных тем, существует вероятность (5 %), что какая-то категория будет выбрана произвольно из полного списка.
В Topics JavaScript API включен только один метод: document.browsingTopics(). Он возвращает массив тем (не более трех) в произвольном порядке, одну для каждой из трех последних эпох.
Предлагается, что у каждого объекта темы в массиве, возвращенном методом document.browsingTopics(), будет три свойства:

  • id – идентификатор темы в классификаторе;
  • taxonomyVersion – набор тем, используемых в настоящее время браузером;
  • classifierVersion – классификатор машинного обучения, который используется для определения тем на основе имен хостов.

Проект Topics API сейчас находится на обсуждении в хранилище. Это только первый этап процесса стандартизации. Финальная версия API пока не создана.
Параметры, описанные в этой статье, и подробные сведения об API (например, размер классификатора, количество тем, подбираемых в неделю, и число тем, возвращаемых при каждом вызове) могут меняться по мере того, как мы будем получать отзывы и обновлять API.

Объекты, вызывающие API, получают только ранее просмотренные темы

Одна из целей разработки Topics API – обеспечивать рекламу на основе интересов, не допуская передачи информации количеству объектов, которое превышает число, возможное при использовании сторонних файлов cookie. В Topics API предлагается возвращать темы только тем вызывающим объектам, которые уже просматривали их в течение ограниченного промежутка времени.

Key Term

Объект, вызывающий Topics API, – это объект, который вызывает метод JavaScript document.browsingTopics() и использует возвращенные им темы для подбора подходящих объявлений.
Обычно вызов document.browsingTopics() выполняется из кода, размещенного на сайте третьей стороной, например рекламной платформой. Браузер определяет вызывающий объект на сайте текущего документа. Поэтому, если третьей стороной на сайте являетесь вы, вызывайте API из окна iframe, принадлежащего вашему сайту.
Чтобы метод document.browsingTopics() возвращал одну или несколько тем, его нужно вызывать в коде с тем же источником, что и у кода на сайте, где просматривались эти темы.

Считается, что объект, вызывающий API, просматривал тему для пользователя, если он вызывал метод document.browsingTopics() из кода, размещенного на сайте, который Topics API сопоставил с этой темой. Например:

  1. Topics API сопоставляет имя хоста knitting.example с темами, которые включают "Ткани и текстильное искусство".
  2. На сайт knitting.example добавлен код с сайта adtech.example.
  3. Пользователь посещает сайт knitting.example.
  4. Код с сайта adtech.example вызывает метод document.browsingTopics().
  5. В темы, определенные браузером для сайта knitting.example, включается "Ткани и текстильное искусство".
  6. Мы говорим, что сайт adtech.example просмотрел тему "Ткани и текстильное искусство" для этого пользователя.

Метод document.browsingTopics() этого API возвращает только темы, которые уже были просмотрены вызывающим объектом в течение предыдущих трех эпох. Это позволяет не допустить передачи информации о пользователе большему числу объектов, чем при использовании решений, которые заменяются этим API (включая сторонние файлы cookie).
Количество тем, возвращаемых методом document.browsingTopics(), зависит от числа тем, которые ранее просмотрел объект, вызывающий API, и числа доступных пользователю тем (например, накопленных за определенное количество недель). Возвращаться может от ноля до трех тем.

Как может выглядеть Topics API в JavaScript

В коде ниже приводится простой пример использования этого API (в нем нет обработки ошибок).

Warning

В этом фрагменте кода показывается лишь пример реализации Topics API в JavaScript. Структура API может меняться, и сейчас этот код не работает ни в одном браузере.

// Get the array of top topics for this user.
const topics = await document.browsingTopics();

// Request an ad creative.
const response = await fetch('https://ads.example/get-creative', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(topics)
})

// Get the JSON from the response.
const creative = await response.json();

// Display ad.

Как Topics API определяет, какие темы могут предоставляться вызывающим объектам

Объекты, вызывающие API, получают только темы, которые они недавно просматривали. Темы для пользователя обновляются каждую эпоху. Это означает, что API предоставляет скользящее временное окно, в котором каждый вызывающий объект может получать определенные темы.
В таблице ниже приводится гипотетический пример (в реальности количество элементов будет намного больше) истории браузера для пользователя в течение одной эпохи. Показываются темы, связанные с посещенными сайтами, и объекты, вызывающие API, присутствующие на каждом сайте (они вызывают метод document.browsingTopics() в коде JavaScript, размещенном на сайте).

СайтТемыОбъекты на сайте, вызывающие API
yoga.exampleФитнесadtech1.example adtech2.example
knitting.exampleРемеслаadtech1.example
hiking-holiday.exampleФитнес,
путешествия и транспорт
adtech2.example
diy-clothing.exampleРемесла, мода и стиль[нет]

В конце каждой эпохи (сейчас предлагается длительность в одну неделю) Topics API формирует список основных тем для браузера.

  • Объект adtech1.example теперь может получать темы "Фитнес" и "Ремесла", так как он просматривал их на сайтах yoga.example и knitting.example.
  • Объект adtech1.example не может получать тему "Путешествия и транспорт" для этого пользователя, так как ее нет ни на одном из связанных с ней сайтов, которые недавно посещал пользователь.
  • Объект adtech2.example просматривал темы "Фитнес" и "Путешествия и транспорт", но не тему "Ремесла".

Пользователь открывал сайт diy-clothing.example, на котором есть тема "Мода", однако Topics API на нем не вызывался. Таким образом, на данный момент API не возвращает тему "Мода" ни для каких вызывающих объектов.
Во вторую неделю пользователь открывает ещё один сайт:

СайтТемыОбъекты на сайте, вызывающие API
sewing.exampleРемеслаadtech2.example

Кроме того, код из объекта adtech2.example добавляется на сайт diy-clothing.example:

СайтТемыОбъекты на сайте, вызывающие API
diy-clothing.exampleРемесла, мода и стильadtech2.example

Как и в случае с темами "Фитнес" и "Путешествия и транспорт" за первую неделю, это означает, что вызывающий объект adtech2.example сможет получать темы "Ремесла" и "Мода и стиль", но только со следующей эпохи, то есть с начала третьей недели. Таким образом, третьи лица не смогут узнать больше о прошлых действиях пользователя (в этом случае – о переходе на сайт, посвященный моде), чем позволяют файлы cookie.
Ещё через две недели темы "Фитнес" и "Путешествия и транспорт" могут быть удалены из списка доступных для объекта adtech2.example тем, если пользователь не откроет ни один сайт с этими темами, на котором есть код из adtech2.example.

Как API определяет темы для сайта

Для Topics API предполагается, что темы берутся из модели классификации, которая сопоставляет имя хоста для каждого сайта с определенным количеством тем (их может и не быть).
Анализ дополнительной информации (например, полных URL или контента страниц) позволяет подбирать более подходящую рекламу, однако может снизить уровень конфиденциальности.
Модель классификации для сопоставления имен хостов с темами будет общедоступной. Кроме того, предполагается возможность просматривать темы сайта с помощью инструментов разработчика в браузере. Модель сопоставления будет обновляться с периодичностью, которая пока обсуждается.

Как выбираются пять основных тем для пользователя

Для каждой эпохи API возвращает одну тему (их может быть не более трех). Если возвращаются три темы, одна относится к текущей эпохе, а другие – к двум предыдущим.

  1. В конце каждой эпохи браузер составляет список страниц, соответствующих следующим требованиям:

    1. Пользователь открывал страницу в течение эпохи.
    2. На странице есть код, который вызывает метод document.browsingTopics().
    3. API был включен (например, не заблокирован пользователем или с помощью заголовка ответа).
  2. Браузер на устройстве пользователя применяет модель классификации, предоставленную Topics API, для сопоставления имени хоста каждой страницы со списком тем.

  3. Браузер составляет список тем.

  4. Браузер формирует список из пяти тем, которые встречаются чаще всего.

Метод document.browsingTopics() возвращает случайную тему из пяти основных за каждую эпоху. При этом с вероятностью 5 % тема может быть выбрана из полного списка.
В Chrome пользователи могут удалить отдельные темы или очистить историю браузера, чтобы уменьшить количество тем, возвращаемых API, а также отказаться от использования API.

Чем Topics API лучше технологии FLoC

Мы получили большое количество отзывов от представителей рекламной индустрии и веб-разработчиков во время пробного запуска FLoC в 2021 году. Некоторые опасались, что с помощью механизма когорт можно идентифицировать пользователей или ассоциировать их интересы с категориями деликатного характера. Предлагалось также сделать работу FLoC прозрачнее и понятнее для конечного пользователя.
Именно поэтому мы разработали Topics API – более прозрачную технологию для показа рекламы на основе интересов. Topics API позволяет избежать использования деликатных категорий и эффективнее обеспечивает конфиденциальность.

Уменьшение количества цифровых отпечатков

В Topics API встроен ряд механизмов, усложняющих идентификацию многих пользователей при посещении различных онлайн-ресурсов:

  • В Topics API классификация возможна только по широким категориям (в первой версии списка их примерно 350). С каждой темой, вероятнее всего, будет связано большое количество пользователей (в зависимости от размеров пользовательской базы браузера). Кроме того, в 5 % случаев тема указывается случайным образом, поэтому в каждой категории гарантированно будет некоторое число пользователей.
  • Возвращается одна из пяти самых интересных пользователю тем.
  • С вероятностью 5 % тема выбирается случайным образом из всего списка категорий.
  • Даже если пользователь часто заходит на сайт (например, еженедельно), используемый на странице код может получать информацию только об одной новой теме в неделю.
  • Интересные пользователю темы будут различаться между сайтами даже в пределах одной эпохи. Вероятность того, что два разных сайта получат совпадающую информацию об интересах посетителя, составляет всего 20 %, поэтому определить, что это один и тот же человек, будет сложнее.
  • Сведения об интересах пользователя обновляются раз в неделю, что ограничивает скорость распространения информации о нем.
  • Объект, вызывающий API, получает тему, только если он недавно просматривал запрашиваемую тему для этого пользователя. Такая система помогает ограничивать доступ к информации об интересах пользователей для объектов, которые не владели ей раньше.

Деликатные темы

Чтобы в список не попадали деликатные категории, классификатор Topics API будет находиться в открытом доступе и курироваться вручную.
Кроме того, пользователи и сайты смогут отказаться от использования Topics API.

В предложениях по Topics API разъясняется, что сторонние файлы cookie позволяют отслеживать все действия пользователя в интернете – от адресов посещенных сайтов до просмотренного на них контента. В таких файлах может содержаться неограниченное количество информации деликатного характера. В свою очередь, Topics API собирает только сведения об интересах пользователя, зафиксированных в классификаторе, который курируется вручную. Такая система не исключает отслеживание данных о пользователе по интересующим его темам с помощью статистических методов. Однако Topics API намного более эффективно обеспечивает конфиденциальность по сравнению с файлами cookie.

Управление и прозрачность

Мы хотим, чтобы люди понимали предназначение Topics API, могли включать и отключать эту технологию, а также знали, когда она применяется и какая информация о них используется.
Удобный формат классификатора позволяет управлять содержащимися в нем данными. Если пользователь не хочет видеть рекламу на определенные темы, он может удалить их из базы. Кроме того, поддерживается реализация интерфейса с информацией о Topics API и о том, как включить или отключить эту технологию. Настройки Topics API и дополнительные сведения можно будет найти в Chrome на странице chrome://settings/privacySandbox. Информация об интересующих пользователя темах недоступна для объектов, которые вызывают API в режиме инкогнито. Кроме того, она удаляется при очистке истории браузера.

Отказ от использования со стороны сайтов

Браузер будет определять частоту использования тем лишь для сайтов, которые вызывают Topics API. При этом возвращаются только ранее просмотренные темы. Другими словами, если сайт или сервис не вызывает Topics API, то в расчетах интересов он не учитывается.
Предлагается также предоставлять сайтам возможность отключать вычисление тем с помощью заголовка Permissions-Policy:

Permissions-Policy: browsing-topics=()

Существующее правило interest-cohort=() для управления FLoC также позволяет отключать расчет интересов.

Отказ от использования со стороны пользователя

В предложении указано, что браузер будет возвращать пустой список тем, если:

  • пользователь отключил Topics API в настройках браузера на странице chrome://settings/privacySandbox;
  • пользователь удалил темы в настройках браузера на странице chrome://settings/privacySandbox или файлы cookie;
  • браузер работает в режиме инкогнито.

Узнать больше о том, как обеспечивается конфиденциальность при использовании Topics API, можно здесь.


Обсуждения и отзывы

Ресурсы по теме

Last updated: Improve article

We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.