JavaScript-фінгепринтинг та виявлення ботів: як вебсайти вас ідентифікують
Ключові висновки
- JavaScript-фінгепринтинг збирає понад 50 характеристик браузера для створення унікального ідентифікатора, він стійкіший за файли cookie та складніший для блокування.
- Ключові сигнали фінгепринту включають Canvas, WebGL, AudioContext, шрифти, властивості екрана та дані API navigator.
- Антибот-системи поєднують JS-фінгепринтинг із TLS-фінгепринтингом (JA3/JA4) та поведінковим аналізом для високоточної детекції ботів.
- Безголові браузери (Puppeteer, Playwright) та інструменти автоматизації залишають помітні сліди, які викриває фінгепринтинг, відсутні API, ідентичні результати, аномалії часу.
- Спуфінг фінгепринтів можливий, але дедалі складніший, антибот-системи використовують перевірки узгодженості, які виявляють невідповідні спуфовані значення.
Зміст
- Що таке JavaScript-фінгепринтинг?
- Як працює фінгепринтинг браузера
- Ключові сигнали фінгепринту
- TLS-фінгепринтинг (JA3/JA4)
- Як антибот-системи використовують фінгепринтинг
- Виявлення безголових браузерів
- Спуфінг фінгепринту та антидетекція
- Стратегії захисту для власників сайтів
- Наслідки для приватності
Щоразу, коли ви відвідуєте вебсайт, ваш браузер безшумно розкриває десятки унікальних характеристик, роздільну здатність екрана, модель GPU, встановлені шрифти, особливості обробки аудіо та точний спосіб, яким ваш браузер рендерить невидимі canvas-елементи. Разом ці сигнали створюють фінгепринт браузера, настільки ж унікальний, як відбиток пальця людини.
Ця технологія лежить в основі сучасних систем виявлення ботів, запобігання шахрайству та захисту від автоматизації. Розуміння того, як вона працює, є важливим, незалежно від того, чи захищаєте ви свій сайт від ботів, чи намагаєтеся зрозуміти, чому певні системи безпеки блокують ваш трафік.
Найбільший важіль для продуктивності платних медіа у 2026 році, це гігієна акаунтів. Старі акаунти, чисті платіжні інструменти та ізольовані профілі браузерів у сукупності дають перевагу в CPAiВартість залучення клієнта. Ціна, яку ви платите за одну конверсію (продаж, реєстрацію, лід).Докладніше в глосарії → на 30-50% на тому самому креативі.
Що таке JavaScript-фінгепринтинг?
JavaScript-фінгепринтинг, це техніка, яка використовує браузерні JavaScript API для збору характеристик пристрою та середовища, створюючи унікальний ідентифікатор для кожного сеансу браузера. На відміну від файлів cookie (які користувачі можуть видалити) або IP-адрес (які змінюються), фінгепринти є:
- Стійкими: Витримують очищення cookie, приватний перегляд та перезапуски браузера
- Унікальними: Комбінація з 50+ сигналів створює фінгепринти, унікальні серед мільйонів браузерів
- Пасивними: Збір відбувається непомітно, без взаємодії з користувачем
- Складними для спуфінгу: Зміна одного сигналу часто створює помітні невідповідності з іншими
Як працює фінгепринтинг браузера
Скрипт фінгепринтингу зазвичай працює в три фази:
- Збір: JavaScript API запитують властивості браузера, об'єкт navigator, властивості екрана, рендеринг canvas, можливості WebGL, обробку AudioContext тощо.
- Хешування: Зібрані значення об'єднуються та хешуються (зазвичай SHA-256 або MurmurHash3) у компактний рядок фінгепринту
- Порівняння: Хеш порівнюється з відомими фінгепринтами, збіг із попереднім відвідувачем, відомим бот-інструментом або спуфованим середовищем
Ключові сигнали фінгепринту
Canvas-фінгепринтинг
Найпотужніший сигнал фінгепринтингу. Прихований елемент <canvas> малює текст, фігури та градієнти. Результат попіксельногоiНевеликий відстежувальний фрагмент на вашому сайті, який записує дії відвідувачів (перегляди сторінок, додавання в кошик, покупки), щоб платформа могла оптимізуватися.Докладніше в глосарії → виведення варіюється залежно від GPU, версії драйвера, рушія рендерингу шрифтів та реалізації згладжування. Два різних пристрої майже ніколи не дають ідентичного canvas-виведення.
WebGL-фінгепринтинг
WebGL розкриває інформацію про GPU (рендерер, виробник) і створює унікальне виведення рендерингу. Розширення WEBGL_debug_renderer_info показує точну модель GPU. У поєднанні з тестами рендерингу WebGL це створює потужний апаратний фінгепринт.
AudioContext-фінгепринтинг
Веб-аудіо API обробляє аудіосигнали по-різному на кожному пристрої через відмінності в апаратному та програмному забезпеченні. Генеруючи осцилятор та аналізуючи вихідний сигнал, скрипти фінгепринтингу фіксують унікальні характеристики обробки аудіо.
Фінгепринтинг шрифтів
Різні версії ОС, мовні пакети та встановлені програми додають унікальні колекції шрифтів. Вимірюючи ширину/висоту рендерингу тексту різними шрифтами, скрипти визначають, які шрифти встановлені, створюючи фінгепринт на основі шрифтів.
Властивості Navigator та екрана
| Сигнал | Що розкриває | Ентропія |
|---|---|---|
| navigator.userAgent | Версія браузера, ОС, тип пристрою | Середня (легко спуфується) |
| navigator.language | Бажана мова(и) | Низька-середня |
| navigator.hardwareConcurrency | Кількість ядер CPU | Низька |
| navigator.deviceMemory | Об'єм RAM (приблизно) | Низька |
| screen.width/height | Роздільна здатність дисплея | Середня |
| screen.colorDepth | Глибина кольору | Низька |
| navigator.platform | Рядок платформи ОС | Низька (застаріло) |
| navigator.maxTouchPoints | Можливість сенсорного введення | Низька |
| Intl.DateTimeFormat().resolvedOptions().timeZone | Часовий пояс | Середня |
Додаткові високоцінні сигнали
- Витік WebRTC: Може розкрити локальні/публічні IP-адреси навіть через VPN
- API батареї: Рівень заряду та статус заряджання (застаріло в більшості браузерів через приватність)
- Стани дозволів: Чи надано/відхилено дозволи на сповіщення, геолокацію, камеру
- Клієнтські підказки: User-Agent Client Hints від Chrome надають структуровані дані про пристрій
- CSS медіа-запити: Виявляють налаштування темного режиму, зменшення руху, контрастності
TLS-фінгепринтинг (JA3/JA4)
TLS-фінгепринтинг працює на рівні з'єднання, до того, як запускається будь-який JavaScript:
JA3-фінгепринтинг
Створений Salesforce, JA3 хешує компоненти повідомлення TLS Client Hello: версію SSL, шифри, розширення, еліптичні криві та формати точок EC. Кожен HTTP-клієнт (Chrome, Firefox, Python requests, Go http, curl) створює унікальний JA3-хеш. Це ідентифікує фактичне клієнтське програмне забезпечення, навіть якщо заголовки user-agent спуфовані.
JA4-фінгепринтинг
Новіший стандарт JA4 покращує JA3 більш зручним для читання форматом та кращим відстеженням версій. Він створює рядок фінгепринту, наприклад "t13d1715h2_8daaf6152771_b0da82dd1658", який кодує версію TLS, кількість шифрів, кількість розширень та значення ALPN.
Як антибот-системи використовують фінгепринтинг
Сучасні антибот-рішення, такі як Cloudflare Bot Management, Akamai Bot Manager та DataDome, поєднують фінгепринтинг із кількома шарами виявлення:
- Перевірка TLS-фінгепринту: Переконатися, що з'єднання надходить від реального браузера, а не HTTP-бібліотеки
- Виконання JavaScript: Запуск скриптів збору фінгепринту, боти, які не можуть виконати JS, негайно позначаються
- Валідація узгодженості: Перевірка, чи JS-фінгепринт збігається з TLS-фінгепринтом (наприклад, якщо JA3 вказує на Chrome, а canvas, на безголовий, позначити)
- Порівняння з відомими ботами: Зіставлення фінгепринту з базою даних відомих сигнатур бот-інструментів
- Поведінкове накладання: Поєднання оцінки фінгепринту з рухом миші, часом кліків та патернами прокручування
Виявлення безголових браузерів
Безголові браузери (Chrome headless, Puppeteer, Playwright) залишають характерні ознаки:
- navigator.webdriver: Встановлено в
trueв автоматизованих браузерах (може бути спуфовано, але виявляється через перевірки прототипів) - Відсутність об'єкта chrome:
window.chromeвідсутній або неповний у headless Chrome - Кількість плагінів: Реальний Chrome повідомляє про плагіни; headless Chrome зазвичай повідомляє про нуль
- Невідповідність постачальника WebGL: Безголові середовища часто повідомляють "Google Inc. (Google SwiftShader)", програмний рендерер
- Дозвіл на сповіщення: Безголові браузери не можуть запитувати дозвіл на сповіщення, що викриває їх через поведінку API
- Iframe contentWindow: Headless Chrome по-різному обробляє доступ до крос-орігінальних iframe
- Аномалії часу: Автоматизовані браузери виконують JavaScript з нелюдською швидкістю або ідеально рівномірним часом
Спуфінг фінгепринту та антидетекція
Кілька інструментів намагаються модифікувати фінгепринти браузера:
| Інструмент | Підхід | Ризик виявлення |
|---|---|---|
| GoLogin | Власний Chromium із налаштовуваними профілями фінгепринту | Середній |
| Multilogin | Імітація браузера з глибокою кастомізацією фінгепринту | Середній |
| Puppeteer Extra (Stealth) | Плагін, який виправляє виявні артефакти Puppeteer | Середній-високий |
| undetected-chromedriver | Модифікований ChromeDriver, який уникає поширених детекцій | Середній-високий |
| Розширення браузера | Блокувальник canvas, спуфінг WebGL | Високий (додає виявні артефакти) |
Стратегії захисту для власників сайтів
Якщо ви захищаєте свій сайт від ботів, впроваджуйте фінгепринтинг як частину багаторівневого захисту:
- Використовуйте кероване рішення:
What You Get
High Trust Score
Pre-established account with positive activity history and cleared standing
Ready to Spend
Skip the warm-up phase - accounts are ready for immediate campaign launch
High Spend Ceiling
Elevated daily and monthly spend limits from day one
30-Day Replacement
Full replacement if account triggers suspension within 30 days
24h Delivery
Credentials delivered within 24 hours of payment confirmation
Dedicated Support
Direct Telegram/WhatsApp line to your account manager
Коментарі
Маєте питання чи досвід? Приєднуйтесь. Ваш email не публікується.
We implemented this last month and already seeing positive signals.
Thanks for the feedback. Based on our experience across hundreds of accounts, this approach shows results within 2-4 weeks.