Таргетинг на пользовательского агента

Заголовок User-Agent исторически включался в запросы ставок для предоставления полезных данных о таргетинге, таких как браузер и платформа инициирующего устройства. Однако браузеры часто значительно редактируют User-Agent из-за сложности его использования и для лучшей защиты конфиденциальности пользователей. В ответ на это Google поддерживает подсказки User-Agent Client Hints , которые включаются в запросы ставок, когда они доступны, в дополнение к заголовку User-Agent. Эти подсказки Client Hints (для краткости) можно получить из заголовков Sec-Ch-UA* или из API Javascript Client Hints.

Заголовок User-Agent отображается как строка в поле BidRequest.device.ua .

Сообщение UserAgent будет заполнено клиентскими подсказками (если они доступны), а в противном случае — на основе значений, полученных из заголовка User-Agent. Это отображается в поле BidRequest.device.sua .

Участникам торгов настоятельно рекомендуется использовать сообщение UserAgent вместо строки User-Agent.

Как заполняется UserAgent

В отличие от заголовка User-Agent, сообщение UserAgent представляет собой информацию о пользовательском агенте, разбитую на несколько полей для конкретной информации.

В зависимости от того, доступны ли клиентские подсказки в запросе объявления, сообщение UserAgent может быть заполнено следующими способами:

  • Если запрос содержит как минимум клиентские подсказки с низкой энтропией , UserAgent заполняется на основе их содержимого.
  • Если запрос содержит только заголовок User-Agent, UserAgent заполняется на основе того, что можно извлечь из заголовка.

Пример: заполнение UserAgent на основе заголовка User-Agent

Предположим, что есть запрос рекламы, в котором браузер отправляет следующие заголовки:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36

UserAgent заполненный исключительно на основе заголовка User-Agent, может выглядеть следующим образом:

browsers: [{ brand: "Mozilla", version: ["5", "0"] },
           { brand: "AppleWebKit", version: ["537", "36"] },
           { brand: "Chrome", version: ["103", "0", "0", "0"] },
           { brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING

Пример: заполнение UserAgent на основе клиентских подсказок

Предположим, что есть запрос рекламы, в котором браузер отправляет следующие заголовки:

User-Agent:                 Mozilla/5.0 (Windows NT 10.0; Win64; x64)
                            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua:                  ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch:             x86
Sec-Ch-Ua-Full-Version:     103.0.5060.134
Sec-Ch-Ua-Mobile:           ?0
Sec-Ch-Ua-Platform:         Windows
Sec-Ch-Ua-Platform-Version: 15.0.0

В случаях, когда включены как минимум низкоэнтропийные клиентские подсказки, UserAgent будет заполнен на основе содержимого этих заголовков, даже если присутствуют заголовки User-Agent. Это будет выглядеть следующим образом:

browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
           { brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
           { brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY

Заполнение на основе заголовка User-Agent и клиентских подсказок

Некоторые поля заполняются по-разному в зависимости от того, основаны ли они на заголовке User-Agent или на клиентских подсказках. Ниже приведен краткий обзор этих различий:

  • Для идентичных браузеров и платформ значения UserAgent.browsers.brand и UserAgent.platform.brand часто различаются в зависимости от UserAgent основанного на заголовке User-Agent или клиентских подсказках. Например, UserAgent.platform.brand может отображаться как «Windows NT», если он основан на заголовке User-Agent, или как «Windows», если он основан на клиентских подсказках.
  • Некоторые записи UserAgent.browsers уникальны для заголовка User-Agent или клиентских подсказок. Например, «AppleWebKit» будет отображаться, если UserAgent основан на заголовке User-Agent, тогда как «Chromium» будет отображаться только в том случае, если он основан на клиентских подсказках.
  • Только UserAgent , основанный на заголовке User-Agent, может содержать замороженные значения. Например, если бы использовалась платформа Windows 11 22H2, UserAgent.platform.brand было бы равно «Windows NT», а значение UserAgent.platform.version[“10”, “0”] поскольку это замороженное значение для любой версии Windows 10 или выше.

Данные в UserAgent , основанные на клиентских подсказках, обычно не являются неточной заменой замороженной или отредактированной информации. В случае несоответствия между заголовком UserAgent и UserAgent , основанным на клиентских подсказках, предпочтение следует отдавать информации из UserAgent .

Поля объекта UserAgent

В этом разделе дается краткий обзор каждого поля с акцентом на специфическое для Google RTB поведение и лучшие практики использования.

Браузеры

Содержит список записей BrandVersion , которые обычно упорядочены по специфичности. Например, если бы вы перечисляли содержимое browsers , brand для каждой записи мог бы отображаться в следующем порядке:

Бренд Значение
Мозилла Совместимо с Mozilla
AppleWebKit Основан на AppleWebKit, подмножество Mozilla.
Хром Браузер Chrome, подмножество браузеров, совместимых с AppleWebKit
Сафари Настольный вариант в отличие от мобильного.

UserAgent не всегда отображает браузеры в каком-либо определённом порядке, особенно если он основан на клиентских подсказках. Ниже описаны другие различия, которые можно ожидать в зависимости от значения source :

  • USER_AGENT : Поле version может быть сокращено до основной версии или заморожено (в зависимости от политики конкретного агента). Обратите внимание, что индикация замороженности значения не будет отображаться.
  • CLIENT_HINTS_LOW_ENTROPY и CLIENT_HINTS_HIGH_ENTROPY : записи не упорядочены по какому-либо критерию; например, один и тот же браузер может отправлять эти записи в разном порядке в каждом запросе. Они также могут содержать запись GREASE , которую следует игнорировать.
  • CLIENT_HINTS_HIGH_ENTROPY : Все поля version , обнаруженные в браузерах, могут быть установлены на полные версии.

Платформа

Запись BrandVersion , описывающая платформу. Она может быть несовместима с заголовком User-Agent и Client Hints, поэтому для таргетинга некоторых платформ может потребоваться тестирование двух названий. Например, операционная система Macintosh от Apple обозначена как «Macintosh» в заголовке User-Agent, но как «macOS» в Client Hints. Ниже описаны другие различия, которые можно ожидать в зависимости от значения source :

  • USER_AGENT : Поле version может быть сокращено до основной версии или заморожено. Обратите внимание, что никаких признаков замороженности не будет.
  • CLIENT_HINTS_LOW_ENTROPY : Поле version не будет заполнено.
  • CLIENT_HINTS_HIGH_ENTROPY : Поле version может быть установлено на полную версию.

Мобильный

Указывает, следует ли оптимизировать контент, например рекламу, для небольших экранов и/или сенсорного ввода. Обратите внимание, что это не обязательно указывает на тип устройства, поскольку мобильные браузеры можно настроить на запрос «настольного сайта».

Архитектура

Определяет архитектуру платформы, например «x86» или «arm».

Обратите внимание, что для UserAgent основанного на клиентских подсказках, этот параметр будет заполнен только в том случае, если source задано значение CLIENT_HINTS_HIGH_ENTROPY .

Битность

Определяет разрядность платформы, например, имеет ли она 32- или 64-разрядный процессор. Поле представляет собой строку целых чисел, содержащую дополнительную информацию об архитектуре; например, для архитектуры «x86» разрядность может быть установлена ​​как «32», так и «64».

Обратите внимание, что для UserAgent основанного на клиентских подсказках, этот параметр будет заполнен только в том случае, если source задано значение CLIENT_HINTS_HIGH_ENTROPY .

Модель

Определяет модель устройства. Для мобильных устройств (кроме ноутбуков и настольных компьютеров) здесь будет указано название модели, например, «Pixel 6 Pro».

Ниже описаны различия, которые можно ожидать увидеть в зависимости от значения source :

  • USER_AGENT
    • Немобильные устройства: поле model часто содержит комбинированное значение архитектуры и разрядности, например, «x64» для Windows. Это значение не является кроссплатформенным; например, Linux может использовать «x86_64» для того же оборудования.
    • Мобильные устройства: в этом поле не будут указаны архитектура и разрядность. Если вас интересуют эти значения, см. UserAgent.architecture и UserAgent.bitness .
  • CLIENT_HINTS_LOW_ENTROPY : Поле model не будет заполнено.
  • CLIENT_HINTS_HIGH_ENTROPY : Поле model будет заполнено только для мобильных устройств. Для настольных платформ значение не задано.

Источник

Определяет, какие заголовки были использованы для создания UserAgent . Для клиентских подсказок это также различает следующие два случая:

  • CLIENT_HINTS_LOW_ENTROPY : Доступны только базовые клиентские подсказки.
  • CLIENT_HINTS_HIGH_ENTROPY : Доступны клиентские подсказки, включая как минимум одно поле, классифицированное как имеющее высокую энтропию.