Как интерпретировать ответ DFP

Советы, как интерпретировать значения полей из ответа DFP и использовать их в вашей бизнес-логике.

Суть

DFP не присылает готовую рекомендацию: заблокировать запрос, пропустить пользователя или отправить его на дополнительную проверку. Его задача другая — дать больше информации о клиентском окружении, из которого пришёл запрос.

DFP передаёт вам несколько важных сигналов:

  • user_id — идентификатор клиентского окружения (ID связки устройство+браузер).

  • bot_score — пришёл запрос от бота или человека.

  • engine — какой браузерный движок используется: например, Blink, WebKit, Gecko или другой.

  • hosting — относится ли IP-адрес к хостинговой сети.

  • incognito — открыт ли браузер в режиме инкогнито или приватного просмотра.

  • mobile — пришёл ли запрос с мобильного устройства.

  • os — какая операционная система используется: например, Windows, macOS, Linux, iOS или Android.

  • vpn — есть ли признаки использования VPN.

Сами по себе эти поля не говорят, хороший пользователь или плохой. Они дают контекст. Решение вы принимаете сами — в зависимости от сценария, действий пользователя и правил продукта. Пример: если у вас запрещён мультиаккаунтинг, но вы видите 100 аккаунтов с одним user_id, можно их заблокировать за злоупотребление.

Ниже рассказываем, как интерпретировать каждое поле и где оно может пригодиться.

user_id

Как интерпретировать

user_id — стабильный идентификатор клиентского окружения.

Говоря проще, это ID, который описывает связку браузер + устройство. Он остаётся стабильным, даже если пользователь поменяет какие-то настройки устройства, браузера или сети. Например:

  • включит VPN;

  • откроет инкогнито;

  • обновит ОС;

  • поменяет время на компьютере;

  • обновит версию браузера.

ID будет тем же самым.

А вот если пользователь откроет другой браузер или сделает запрос с другого устройства, вы увидите другой ID. Потому что для каждой пары браузер + устройство ID уникален.

Смена user_id может быть нормой: пользователь зашёл с телефона или скачал новый браузер. А может говорить об опасном сценарии: например, у пользователя украли токен аутентификации и пытаются с ним залогиниться.

Использование нескольких аккаунтов с одного user_id тоже может быть нормальным — например, если одним компьютером пользуется вся семья. Но в другом контексте это может быть сигналом фрода: например, злоумышленник плодит аккаунты, чтобы получить бонусы по реферальной программе.

Когда пригодится

user_id особенно полезен, когда нужно понять, что перед вами уже знакомое окружение.

Пример 1

У вас сервис с бесплатным лимитом: можно бесплатно сгенерировать 10 отчётов в месяц. Кто-то пытается обойти ограничение: чистит cookie, открывает инкогнито, включает VPN и снова приходит как будто впервые.

Если лимит привязан только к cookie или IP, такой обход может сработать. Но если вы учитываете user_id, то видите, клиентское окружение не изменилось. Тогда можно выдавать сообщение: бесплатный объём уже использован.

Пример 2

У вас есть промоакция или приветственный бонус. Один человек создаёт десять аккаунтов, чтобы получить бонус десять раз.

Если у этих аккаунтов один и тот же user_id, это не стопроцентное доказательство нарушения, но сильный сигнал. Вы можете не выдавать бонус автоматически, ограничить количество участий с одного user_id или отправить такие аккаунты на проверку.

Пример 3

Пользователь раньше входил в аккаунт из одного user_id, а теперь тот же токен или cookie приходит из другого окружения.

Это может быть признаком кражи cookie или токена. В таком случае можно сбросить сессию и попросить пользователя войти заново.

bot_score

Как интерпретировать

bot_score показывает, насколько запрос похож на автоматизированный. Значение находится в диапазоне от 0 до 1.

Значение Как интерпретировать

Меньше 0.4

Обычный запрос, отправленный человеком. Значительных признаков автоматизации не выявлено.

От 0.4 до 0.5

Возможно, бот. Есть отдельные признаки автоматизации, подмены параметров браузера и другой аномалии.

0.5 и выше

Наверняка бот. Значительные признаки, характерные для автоматизации или подмены параметров браузера.

Высокий bot_score не означает, что запрос нужно сразу блокировать. Важно смотреть на сценарий: если бот стучится в открытый API, это нормальное поведение. А вот если похожий на бота клиент пытается восстановить пароль, создать много аккаунтов или применить промокод, риск гораздо выше.

Когда пригодится

bot_score полезен там, где автоматизация может навредить бизнесу.

Пример 1

У вас есть форма регистрации. В обычный день через неё создают 200 аккаунтов, а сегодня внезапно создали 5000.

Если у значительной части таких запросов высокий bot_score, они идут из хостинговых сетей и ведут себя похоже, стоит включить дополнительную проверку при регистрации: CAPTCHA, одноразовый код, лимит запросов или ручную модерацию.

Пример 2

У вас есть форма заявки. Бот массово отправляет фейковые заявки, и менеджеры тратят время на несуществующих клиентов.

В этом случае можно не блокировать форму целиком, а менять реакцию по уровню риска: обычные запросы пропускать, подозрительные отправлять на дополнительную проверку, а запросы с высоким bot_score блокировать.

Пример 3

Ваш сайт содержит данные, которые нельзя массово выгружать. Можно поставить лимит запросов по user_id и выдавать проверки при высоком bot_score.

hosting

Как интерпретировать

hosting: true значит, что IP отправителя относится к хостинговой сети.

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

Но hosting: true не доказывает фрод автоматически. Запрос может прийти из корпоративной инфраструктуры, прокси, мониторинга, внутреннего инструмента или тестового окружения.

Когда пригодится

Пример 1

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

Это похоже на массовую автоматизированную регистрацию. Можно показать дополнительную проверку, ограничить количество регистраций, временно замедлить поток или отправить часть заявок на модерацию.

Пример 2

Обычный пользователь всегда заходил в личный кабинет из домашней или мобильной сети. Теперь попытка сменить пароль приходит из хостинговой сети.

Это повод запросить дополнительное подтверждение.

incognito

Как интерпретировать

incognito: true значит, что пользователь открыл страницу в режиме инкогнито или приватного просмотра.

Все мы иногда используем инкогнито — например, если логинимся в аккаунт с чужого компьютера. Но иногда его используют, чтобы злоупотребить ресурсом: например, сбросить cookie и выдать себя за нового пользователя.

Само по себе инкогнито не доказывает нарушение. Но если оно появляется вместе с VPN, новым поведением, повторными действиями или тем же user_id, его стоит учитывать.

Когда пригодится

Инкогнито полезно учитывать в промоакциях, голосованиях, опросах, бесплатных лимитах и paywall-сценариях. Он становится дополнительным сигналом — чаще всего, в связке с user_id.

Пример

У вас есть промокод для новых пользователей: один человек может применить его только один раз.

Пользователь создаёт первый аккаунт, применяет промокод и получает скидку. Потом открывает сайт в инкогнито, создаёт второй аккаунт с того же user_id и снова пытается применить промокод.

Один user_id у двух аккаунтов сам по себе ещё не доказывает нарушение: одним компьютером могли пользоваться два разных человека. Но incognito: true добавляет важный контекст. Пользователь создаёт новый аккаунт в режиме, который помогает скрыть браузерное состояние: cookie, локальное хранилище и историю сессии.

Поэтому сценарий больше похож на попытку обойти правило акции. В таком случае можно не только отказать во втором применении промокода, но и ограничить первый аккаунт: например, заморозить промобонусы и отправить аккаунт на проверку.

Так система реагирует не на сам факт инкогнито, а на схему: пользователь уже получил выгоду и пытается повторить её через второй аккаунт в приватном режиме.

vpn

Как интерпретировать

vpn: true показывает, что DFP обнаружил признаки использования VPN.

VPN — не синоним фрода. Пользователь может включить VPN для приватности, работы, доступа из корпоративной сети или стабильного соединения в поездке.

Но VPN важен там, где для вашего сценария значимы регион, сеть или история входов. Например, если вы ограничиваете доступ по стране, применяете региональные цены, выдаёте бонусы по географии, защищаете платежи или отслеживаете подозрительные входы.

Поэтому vpn лучше читать так: сетевой контекст скрыт или изменён. Дальше важно смотреть, что пользователь делает и какие ещё сигналы пришли вместе с VPN.

Когда пригодится

Пример

У вас сервис с региональными ценами. Пользователь пытается зарегистрироваться, но у него включён VPN.

Возможно, он просто использует VPN постоянно. А может быть, это способ привязать аккаунт к другому региону, где цены ниже. Вы выдаёте страницу: отключите VPN, чтобы продолжить регистрацию доступна только без VPN. Когда пользователь придёт без VPN, он сможет вернуться к форме и создать аккаунт.

mobile, os и engine

Как интерпретировать

mobile, os и engine дают контекст запроса:

  • mobile показывает, пришёл ли запрос с мобильного устройства;

  • os показывает операционную систему: например, Windows, macOS, Linux, iOS или Android;

  • engine показывает браузерный движок: например, Blink, WebKit, Gecko, Goanna или другой.

Эти поля сами по себе не указывают на подозрительное поведение. Но их можно использовать как дополнительный контекст при анализе запросов.

Когда пригодится

Пример

У вас началась волна подозрительных регистраций. По одному запросу ничего необычного не видно, но в потоке появляется повторяющийся набор признаков: десктопное устройство, Linux, один и тот же браузерный движок, хостинговая подсеть и средний bot_score.

mobile, os и engine вместе с другими сигналами помогают описать автоматизированный паттерн и точнее настроить правила: например, отправлять такие регистрации на дополнительную проверку или ограничивать частоту запросов.