Заголовок 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: Доступны клиентские подсказки, включая как минимум одно поле, классифицированное как имеющее высокую энтропию.