Простого бота видає те, що він не виконує 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: практичні кроки
- Почніть із мережі. Більшість headless-ботів запускають на серверах — блокування дата-центрів відсікає їх ще до перевірки браузера. Див. VPN, проксі та IP дата-центрів.
- Вимагайте JavaScript там, де це безпечно. Якщо майданчик передає мітку кліку й трафік іде зі звичайних браузерів, обов’язковий JS відсікає парсери без втрат.
- Увімкніть блокування headless-браузерів на всіх потоках.
- Перевірку живої взаємодії тримайте для дорогого трафіку й джерел, де багато просунутої автоматики.
- Не посилюйте правил для вбудованих браузерів. Для соцмереж не вмикайте зайвих жорстких правил.
- Дивіться причини. Якщо «Явний headless-браузер» масово спрацьовує на мобільний трафік одного майданчика — це привід розібратися, а не радіти.
Загальну логіку багатошарового захисту описано в статті як відфільтрувати ботів, а перелік типових прикмет — у матеріалі бот-трафік: ознаки.
Відбиток браузера і приватність: що важливо знати
Слово «fingerprint» часто пов’язують зі стеженням: рекламні системи використовують відбитки, щоб упізнавати користувача без cookie. В антифроді завдання інше. Фільтру не потрібно знати, хто відвідувач, — йому треба зрозуміти, чи справжній це браузер і чи поводиться він як людина. Тому для захисту від ботів важливі не унікальні ідентифікатори, а узгодженість характеристик між собою.
Звідси практичний наслідок. Браузери поступово урізають те, що можна виміряти скриптом: додають шум у відмальовування, уніфікують рядки user-agent, приховують деталі обладнання. Для впізнавання користувачів це проблема, для перевірки справжності — менша: суперечності між заявленим і реальним нікуди не зникають. А от захист, збудований на одній-двох «чарівних» ознаках, з часом перестає працювати — і це ще один аргумент на користь оцінки за сумою сигналів. Як така оцінка влаштована в системі виявлення ботів, розібрано окремо.
Приклад: який вигляд має розбір підозрілого візиту
Припустімо, у журналі є візит із причиною, пов’язаною з автоматизацією браузера. У картці кліку видно:
- мережа — хмарний хостинг;
- браузер заявлено як свіжий Chrome, а пристрій — комп’ютер;
- мітки рекламного кліку немає;
- перевірка браузера повернулася з ознаками керування програмою.
Тут усе сходиться: серверна мережа, відсутність рекламного переходу, сліди автоматизації. Це класичний робот перевірки або спай.
А ось інший візит: мобільний оператор, вбудований браузер соцмережі, мітка кліку є, ознака автоматизації слабка. Такий візит не можна відсікати за однією ознакою — найімовірніше, це звичайна людина, яка відкрила рекламу в застосунку.
Різниця між цими двома візитами і є суттю оцінки за сумою ознак: у першого суперечать одна одній одразу кілька незалежних ознак, у другого — одна, та й та пояснюється особливостями вбудованого браузера. Якщо таких «других» у журналі багато і вони йдуть на White Page, послабте строгість для цього майданчика.
Підсумок
Headless-браузер проходить прості перевірки, але лишає сліди: прапорці й об’єкти автоматизації, суперечності у відбитку, серверне оточення, неприродну поведінку. Відбиток браузера допомагає зрозуміти, чи схожий візит на реальний пристрій, а поведінкові перевірки — чи поводиться він як людина. Головне правило те саме, що й скрізь в антифроді: вирішує поєднання ознак, а не одна, інакше разом із ботами піде трафік із вбудованих браузерів соцмереж.



