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

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

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

  • Google: BidRequest.user_agent
  • OpenRTB: BidRequest.device.ua

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

  • Google: BidRequest.user_agent_data
  • OpenRTB: 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 , основанные на подсказках клиента, обычно не являются неточной заменой замороженной или отредактированной информации. Если существует какое-либо несоответствие между заголовком User-Agent и 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 и подсказками клиента, поэтому для ориентации на некоторые платформы может потребоваться проверка двух имен. Например, операционная система Apple Macintosh в заголовке User-Agent обозначается как «Macintosh», а в Client Hints — как «macOS». Ниже описаны другие различия, которые вы можете увидеть в зависимости от значения 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 : доступны клиентские подсказки, включая хотя бы одно поле, классифицированное как высокая энтропия.