Headless-браузеры и отпечаток браузера: как фильтр отличает программу от человека

Headless-браузер выполняет JavaScript и рисует страницу как настоящий, поэтому простые проверки его не видят. Ловят его по отпечатку браузера — fingerprint — и по следам автоматизации, которые трудно спрятать полностью.

Боты и фрод8 мин чтения
Headless-браузеры и отпечаток браузера: как фильтр отличает программу от человека
Содержание
  1. Что такое headless-браузер
  2. Что такое отпечаток браузера (fingerprint)
  3. Признаки headless и автоматизации
  4. Антидетект-браузеры: где граница
  5. Ложные срабатывания: встроенные браузеры и WebView
  6. Как работает проверка браузера в ArtisanClo
  7. Как выстроить защиту от headless: практические шаги
  8. Отпечаток браузера и приватность: что важно знать
  9. Пример: как выглядит разбор подозрительного визита
  10. Итог

Простого бота выдаёт то, что он не выполняет JavaScript. Но рекламу давно проверяют не скриптами на curl, а настоящими браузерами под управлением программ. Такой headless-браузер загружает страницу, выполняет код, ждёт, кликает — и для наивной защиты ничем не отличается от посетителя. Отличить его помогает отпечаток браузера, или fingerprint, и следы автоматизации, которые программа оставляет в окружении.

Что такое headless-браузер

Headless означает «без головы» — без графического окна. Это тот же движок Chrome или Firefox, только запущенный в фоне и управляемый программой. Популярные инструменты автоматизации — Puppeteer, Playwright, Selenium — умеют открывать страницы, заполнять формы, делать скриншоты и проходить по цепочке переходов.

Кто использует headless-браузеры по отношению к вашему лендингу:

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

Главная проблема для фильтра: headless-браузер проходит проверку на выполнение JavaScript. Поэтому нужны более тонкие признаки.

Что такое отпечаток браузера (fingerprint)

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

Компонент Что это Что может выдать
User-agent строка с названием и версией браузера и ОС шаблонную или устаревшую версию
Язык и локаль список языков браузера язык, не совпадающий с гео
Часовой пояс пояс системы пояс, не совпадающий со страной IP
Экран разрешение, глубина цвета, плотность пикселей серверные «круглые» размеры
Графика видеокарта, рендерер, особенности отрисовки программный рендерер вместо реальной видеокарты
Шрифты набор установленных шрифтов «голая» серверная система
Аппаратные данные число ядер, память, сенсорный экран десктопные характеристики у «телефона»
Возможности API какие интерфейсы браузера доступны отсутствие того, что есть у настоящего браузера этой версии

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

Признаки headless и автоматизации

Флаг webdriver

По стандарту браузер, которым управляет программа через интерфейс автоматизации, выставляет свойство navigator.webdriver. Это самый известный признак — и самый легко скрываемый: его подменяют одной строкой. Поэтому серьёзная защита на него одного не опирается.

Следы управления

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

Несоответствие заявленному

Headless-браузер часто выдаёт себя противоречиями:

  • user-agent говорит «Chrome на Windows», а набор API — как у headless-сборки на Linux;
  • заявлен iPhone, но поддерживаются интерфейсы, которых нет в Safari;
  • экран «мобильный», а сенсорного ввода нет;
  • видеокарта определяется как программный рендерер, типичный для серверов.

Серверное окружение

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

Время и поведение

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

Совет. Ни один признак из этого списка не доказывает бота сам по себе. Доказывает сочетание: три-четыре независимых противоречия у одного визита почти не встречаются у настоящих браузеров.

Антидетект-браузеры: где граница

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

Для фильтра трафика важно различать два случая:

  • антидетект под управлением человека — для лендинга это, по сути, обычный посетитель: человек двигает мышью, читает, кликает;
  • антидетект под управлением программы — та же автоматика, только в лучшей маскировке; её выдают несогласованность подмены и поведение.

Иначе говоря, отпечаток — не единственная линия обороны. Хорошо замаскированного бота выдаёт то, что он делает, а не то, как выглядит.

Ложные срабатывания: встроенные браузеры и WebView

Самая частая ошибка при фильтрации по отпечатку — отсекать встроенные браузеры приложений. Facebook, Instagram, TikTok открывают ссылки во встроенном браузере на базе WebView. У него:

  • необычный user-agent с названием приложения;
  • урезанный набор возможностей по сравнению с полноценным браузером;
  • признаки, которые совпадают со следами автоматизации;
  • часто — потерянный реферер.

При этом именно через встроенные браузеры приходит большая часть живого трафика из соцсетей. Поэтому признак автоматизации у WebView нельзя трактовать как явного бота — только как один из сигналов в общей оценке. Подробнее о том, как метка клика площадки помогает отличить такой визит от бота, — в статье fbclid, gclid, ttclid.

Как работает проверка браузера в ArtisanClo

В ArtisanClo проверка браузера — отдельный шаг после сетевых проверок. Скрипт выполняется в браузере посетителя и сообщает, что он увидел; страница прячется, пока не пришло решение. За это отвечают несколько переключателей защиты:

  • Блокировка headless-браузеров — ловит ботов и автокликеры, которые притворяются браузером. При явных следах автоматизации отсекает сразу, в журнале причина «Явный headless-браузер».
  • Обязательное выполнение JS — посетитель без JavaScript получает сильный штраф и отправляется на проверку. Простые боты и парсеры на этом спотыкаются.
  • Проверка живого взаимодействия — смотрит, как двигаются мышь и палец: человек ведёт себя естественно, бот — нет. Добавляет небольшое ожидание, поэтому её включают для строгих площадок.
  • Минимальное время на странице — посетитель, пробывший меньше заданного, отправляется на страницу ожидания и проверяется заново.

Встроенные браузеры Facebook, Instagram и TikTok и WebView в приложениях распознаются отдельно: признак автоматизации у них не отсекает визит сразу, а учитывается в оценке доверия вместе с сетью, временем и реферером. Для кампаний, где почти весь трафик идёт из встроенного браузера, рекомендуется строгость «Баланс».

Роботы-браузеры с доказанными признаками и подделка времени на странице попадают в общий список ботов с первого раза: следующий визит с этого адреса в любой поток любого клиента сразу получает White Page.

В статистике отказы этого шага собраны в долю «Проверка браузера», а визиты, которые не выполнили скрипт и не вернулись, — в «Проверка не вернулась». Если растёт именно доля «Проверка браузера», это сигнал проверить строгость: на этом шаге фильтр ошибается чаще всего.

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

Как выстроить защиту от headless: практические шаги

  1. Начните с сети. Большинство headless-ботов запускаются на серверах — блокировка дата-центров отсекает их до проверки браузера. См. VPN, прокси и IP дата-центров.
  2. Требуйте JavaScript там, где это безопасно. Если площадка передаёт метку клика и трафик идёт из обычных браузеров, обязательный JS отсекает парсеры без потерь.
  3. Включите блокировку headless-браузеров на всех потоках.
  4. Проверку живого взаимодействия держите для дорогого трафика и источников, где много продвинутой автоматики.
  5. Не ужесточайте встроенные браузеры. Для соцсетей не включайте лишних жёстких правил.
  6. Смотрите причины. Если «Явный headless-браузер» массово срабатывает на мобильный трафик одной площадки — это повод разобраться, а не радоваться.

Общая логика многослойной защиты описана в статье как отфильтровать ботов, а список типичных примет — в материале бот-трафик: признаки.

Отпечаток браузера и приватность: что важно знать

Слово «fingerprint» часто связывают со слежкой: рекламные системы используют отпечатки, чтобы узнавать пользователя без cookie. В антифроде задача другая. Фильтру не нужно знать, кто посетитель, — ему нужно понять, настоящий ли это браузер и ведёт ли он себя как человек. Поэтому для защиты от ботов важны не уникальные идентификаторы, а согласованность характеристик между собой.

Отсюда практическое следствие. Браузеры постепенно урезают то, что можно измерить скриптом: добавляют шум в отрисовку, унифицируют строки user-agent, скрывают детали оборудования. Для узнавания пользователей это проблема, для проверки подлинности — меньшая: противоречия между заявленным и реальным никуда не деваются. А вот защита, построенная на одном-двух «волшебных» признаках, со временем перестаёт работать — и это ещё один аргумент за оценку по сумме сигналов.

Пример: как выглядит разбор подозрительного визита

Допустим, в журнале визит с причиной, связанной с автоматизацией браузера. В карточке клика видно:

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

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

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

Разница между этими двумя визитами и есть суть оценки по сумме признаков: у первого противоречат друг другу сразу несколько независимых сигналов, у второго — один, да и тот объясним особенностями встроенного браузера. Если таких «вторых» в журнале много и они уходят на White Page, ослабьте строгость для этой площадки.

Итог

Headless-браузер проходит простые проверки, но оставляет следы: флаги и объекты автоматизации, противоречия в отпечатке, серверное окружение, неестественное поведение. Отпечаток браузера помогает понять, похож ли визит на реальное устройство, а поведенческие проверки — ведёт ли себя он как человек. Главное правило то же, что и везде в антифроде: решает сочетание признаков, а не один, иначе вместе с ботами уйдёт трафик из встроенных браузеров соцсетей.

Частые вопросы

01

Что такое headless-браузер?

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

02

Что такое отпечаток браузера простыми словами?

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

03

Что означает navigator.webdriver?

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

04

Ловит ли защита антидетект-браузеры?

Антидетект-браузер подменяет отпечаток так, чтобы он выглядел как реальное устройство, и под ручным управлением ведёт себя как человек. Для фильтра такой визит часто неотличим от обычного посетителя. Ловят его, когда подмена получилась несогласованной или когда за ним стоит автоматизация, а не человек.

05

Почему встроенный браузер Instagram или TikTok иногда выглядит как бот?

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

Читать также

8 мин чтения

Боты оставляют заявки на сайте: откуда фейковые лиды и как их остановить

Если боты оставляют заявки на сайте, страдают сразу три вещи: менеджеры звонят в пустоту, статистика врёт, а рекламная площадка учится на мусорных конверсиях. Разбираем, откуда берутся спам-заявки и как защитить форму в несколько слоёв.

8 мин чтения

Защита от ботов в Яндекс Директ: как распознать скликивание и не платить за ботов

Боты в Директе — это не только конкуренты с автокликером. Чаще всего это мусорные площадки РСЯ и роботы, которые выглядят как обычные посетители. Разбираем, где их искать в Метрике и отчётах и как выстроить защиту от ботов в Яндекс Директ.

8 мин чтения

Фильтрация по гео, языку, устройству и расписанию: точный таргетинг на своей стороне

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

Проверьте свой трафик на деле

Подключите ArtisanClo к своему сайту, посмотрите, кто на самом деле приходит по рекламе, и почему каждый клик получил своё решение.