Как Digital Fraud Protection собирает данные

Какие механизмы использует DFP, чтобы собрать данные.

Для чего собираем данные

Проанализировав их, DFP определит и сообщит вам:

  • user ID — уникальный идентификатор клиентского окружения или, говоря проще, ID связки браузер+устройство.

  • вероятность, что запрос сделал бот;

  • из хостинговой подсети пришёл запрос или из обычной;

  • используется ли VPN;

  • параметры устройства пользователя: мобильное это устройство или нет, какая ОС на нём стоит;

  • особенности браузера: какой движок внутри и включен ли режим инкогнито.

Список данных

Тип данных Что их собирает
  • Canvas fingerprint

  • WebGL fingerprint

  • Audio context fingerprint

  • Данные WebGPU

  • Системные шрифты

  • Размер экрана и окна

  • Список плагинов и расширений

  • Язык и часовой пояс, время на устройстве

  • Touch/Mouse и прочие события

  • Прочие Browser API и параметры окружения

  • Данные, которые передаёт клиент через customData или customID

Скрипт DFP, который вы встроили на страницу своего ресурса.

  • Данные автоматизации

  • Информация из TLS-хендшейка

  • Информация L3/L4 сетевого уровня

  • Информация об особенностях передачи браузером информации на сервер

«Антибот» — ПО на нодах Servicepipe, через которое проксируются запросы от браузера к DFP. «Антибот» является основой продукта Web DDoS & Bot Protection и способен анализировать телеметрию запроса на L3-L7.

Рассказываем ниже, как DFP получает информацию каждого типа.

Что означает каждый тип данных и как его собираем

Canvas fingerprint

Что это. Canvas fingerprint — это отпечаток, который строится по тому, как браузер рисует изображение в HTML-элементе canvas.

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

Как DFP получает данные. Скрипт DFP создаёт невидимый canvas, даёт браузеру задачу на отрисовку и считывает результат. Пользователь ничего не видит: проверка проходит в фоне и занимает доли секунды.

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

WebGL fingerprint

Что это. WebGL fingerprint — это отпечаток по тому, как браузер работает с графикой через WebGL.

WebGL — это браузерная технология для отрисовки 2D- и 3D-графики прямо на странице с использованием графического процессора. WebGL использует видеокарту, драйверы и браузерный движок. Поэтому разные устройства и браузеры могут по-разному поддерживать WebGL, возвращать разные параметры графического адаптера и немного отличаться в результате отрисовки.

Как DFP получает данные. Скрипт обращается к WebGL API и собирает параметры, которые браузер разрешает получить: поддержку WebGL, характеристики графического контекста, доступные расширения, ограничения и результат небольшой графической проверки.

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

Audio context fingerprint

Что это. Audio context fingerprint — это отпечаток по тому, как браузер обрабатывает звук через Web Audio API.

Звук при этом не воспроизводится. Браузер создаёт тестовый аудиосигнал, обрабатывает его и возвращает результат вычислений. На результат влияют браузер, операционная система, аппаратная платформа и особенности обработки чисел.

Как DFP получает данные. Скрипт создаёт короткий тестовый аудиосигнал, пропускает его через стандартные механизмы Web Audio API и считывает результат обработки.

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

Данные WebGPU

Что это. WebGPU — современный браузерный API для работы с графическим процессором. Он доступен не во всех браузерах и не на всех устройствах.

Для DFP важны и параметры WebGPU, и сам факт его поддержки. Если на одном устройстве WebGPU доступен, а на другом нет, это уже часть технического портрета окружения.

Как DFP получает данные. Скрипт проверяет, доступен ли WebGPU, и собирает параметры, которые браузер разрешает получить: возможности адаптера, лимиты, поддерживаемые функции и результат небольшой графической или вычислительной проверки.

Если WebGPU недоступен, DFP тоже учитывает это как сигнал.

Системные шрифты

Что это. Набор доступных шрифтов. На разных операционных системах, устройствах и браузерах набор шрифтов отличается.

Как DFP получает данные. Современные браузеры не дают сайту просто прочитать полный список установленных шрифтов. Поэтому скрипт использует косвенный способ: просит браузер отрисовать текст с разными шрифтами и сравнивает размеры или особенности отрисовки.

Если шрифт установлен, текст будет выглядеть иначе, чем при подстановке резервного шрифта. Так DFP получает сигнал о шрифтовом окружении, не обращаясь к файловой системе пользователя.

Размер экрана и окна

Что это. Размер экрана устройства и окна браузера. Показывает, в каком визуальном окружении работает пользователь: десктоп, мобильное устройство, планшет, окно браузера во весь экран или нет.

Как DFP получает данные. Скрипт считывает параметры, которые браузер отдаёт странице: размер экрана, размер окна, доступную область, плотность пикселей и ориентацию.

Вместе с другими сигналами эти параметры помогают точнее описать клиентское окружение.

Список плагинов и расширений

Что это. Плагины и расширения могут менять поведение браузера: например, блокировать запросы, подменять API, добавлять элементы на страницу или менять результат выполнения скриптов.

Как DFP получает данные. Браузеры ограничивают прямой доступ к списку расширений, поэтому DFP не рассчитывает на полный перечень установленных расширений. Скрипт собирает только те сведения, которые браузер разрешает получить, например данные из navigator.plugins и связанные признаки окружения.

DFP также может учитывать косвенные признаки. Например, если расширение меняет работу Browser API, блокирует часть операций или приводит к нетипичному поведению страницы, это может отразиться в результате анализа.

Язык и часовой пояс, время на устройстве

Что это. Язык, часовой пояс и время на устройстве пользователя. Помогают понять, насколько окружение пользователя согласовано с остальными признаками.

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

Как DFP получает данные. Скрипт считывает доступные браузеру параметры языка и локали, часовой пояс, смещение времени и текущее время на устройстве.

Затем эти данные можно сопоставить с серверным временем и другими сигналами.

Touch/Mouse и прочие события

Что это. События ввода — показывают, какие способы взаимодействия поддерживает устройство и как браузер сообщает о действиях пользователя.

Например, у мобильного устройства обычно есть touch-события, у десктопа — мышь и клавиатура. У гибридных устройств могут быть оба типа ввода.

Как DFP получает данные. Скрипт проверяет, какие события и свойства доступны в браузере: touch, pointer, mouse, keyboard и связанные параметры.

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

Прочие Browser API и параметры окружения

Что это. Browser API — это интерфейсы, через которые страница получает разрешённую браузером информацию о браузере и устройстве.

Сюда могут относиться параметры производительности, памяти, числа логических ядер, поддержки хранилищ, cookie, media API, User-Agent Client Hints и другие доступные браузеру сведения.

Как DFP получает данные. Скрипт обращается к Browser API и собирает разрешённые параметры. Важен не только каждый параметр отдельно, но и согласованность всей картины.

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

Данные, которые передаёт клиент через customData и customID

Что это. Помимо данных, которые DFP собирает сам, вы можете передать в запросе свой дополнительный контекст через поля customData и customID. Например, можно отправить через customData тип события, а через customID — идентификатор пользователя в вашей системе.

Как DFP получает данные. Вы передаёте значения при вызове метода get() через параметры customData и customID.

customData не влияет на формирование user_id или значения других полей. DFP просто принимает ваше значение и возвращает его обратно в своём ответе в поле сustom_data.

Как обрабатывается поле customID и как влияет на ответ DFP, настраивается индивидуально под вас. Логика согласуется с нашими инженерами отдельно.

Данные автоматизации

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

Как DFP получает данные. Часть признаков собирает браузерный скрипт, а часть — ПО «антибот», установленное на серверах Servicepipe.

Когда скрипт отправляет запрос на эндпоинт Servicepipe, запрос проверяется с помощью «антибота» — ПО, которое лежит в основе другого нашего продукта, Web DDoS & Bot Protection. «Антибот способен провести анализ телеметрии запроса на уровнях L3/L4–L7 — то есть оценить, как запрос проходит по сети, как устанавливается соединение и что именно передаётся внутри HTTP. Например, он смотрит на:

  • признаки статистических аномалий;

  • репутацию источника запроса;

  • HTTP-параметры запроса;

  • параметры TLS-соединения;

  • другие признаки, которые помогают понять характер трафика.

В результате «антибот» понимает, кто сейчас взаимодействует с вашим ресурсом: бот или человек.

Информация из TLS-хендшейка

Что это. TLS-хендшейк — это начальный этап защищённого соединения. Во время него браузер и сервер договариваются, как шифровать дальнейший обмен данными.

На этом этапе клиент передаёт технические параметры: версию TLS, набор поддерживаемых шифров, расширения, SNI, ALPN и другие признаки. Разные браузеры, версии, библиотеки и автоматизированные клиенты часто делают это по-разному.

Как DFP получает данные. Эти данные собираются на стороне Servicepipe. Когда запрос от браузера приходит на эндпоинт Servicepipe, установленное там ПО «антибот» анализирует параметры TLS-хендшейка.

Так DFP получает серверный сигнал, который сложно подделать только изменением JavaScript-окружения.

Информация L3/L4 сетевого уровня

Что это. L3/L4 — это сетевой и транспортный уровни: IP и TCP/UDP. Они показывают, откуда пришло соединение и как оно устанавливалось.

Для DFP важны признаки самого соединения: источник запроса, особенности TCP-сессии, сетевые параметры и другие данные, которые видны на стороне Servicepipe.

Как DFP получает данные. Эти данные собираются на стороне Servicepipe. Когда запрос от браузера приходит на эндпоинт Servicepipe, установленное там ПО «антибот» анализирует параметры запроса, относящиеся к L3/L4.

Информация об особенностях передачи браузером информации на сервер

Что это. Разные браузеры и клиенты по-разному формируют HTTP-запросы. Отличаться могут набор и порядок заголовков, значения служебных заголовков, особенности HTTP/2, параметры сжатия и другие детали передачи.

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

Как DFP получает данные. Эти данные собираются на стороне Servicepipe. Когда запрос от браузера приходит на эндпоинт Servicepipe, установленное там ПО «антибот» анализирует, как этот запрос выглядит на серверной стороне.