JavaScript-фінгепринтинг та виявлення ботів: як вебсайти вас ідентифікують

1,316 переглядів · вподобань · 16 поширень
Поширити
Від Unled Network · 5 квітня 2026 · 17 хв читання
JavaScript-фінгепринтинг та виявлення ботів: як вебсайти вас ідентифікують

Ключові висновки

  • JavaScript-фінгепринтинг збирає понад 50 характеристик браузера для створення унікального ідентифікатора, він стійкіший за файли cookie та складніший для блокування.
  • Ключові сигнали фінгепринту включають Canvas, WebGL, AudioContext, шрифти, властивості екрана та дані API navigator.
  • Антибот-системи поєднують JS-фінгепринтинг із TLS-фінгепринтингом (JA3/JA4) та поведінковим аналізом для високоточної детекції ботів.
  • Безголові браузери (Puppeteer, Playwright) та інструменти автоматизації залишають помітні сліди, які викриває фінгепринтинг, відсутні API, ідентичні результати, аномалії часу.
  • Спуфінг фінгепринтів можливий, але дедалі складніший, антибот-системи використовують перевірки узгодженості, які виявляють невідповідні спуфовані значення.

Щоразу, коли ви відвідуєте вебсайт, ваш браузер безшумно розкриває десятки унікальних характеристик, роздільну здатність екрана, модель GPU, встановлені шрифти, особливості обробки аудіо та точний спосіб, яким ваш браузер рендерить невидимі canvas-елементи. Разом ці сигнали створюють фінгепринт браузера, настільки ж унікальний, як відбиток пальця людини.

Ця технологія лежить в основі сучасних систем виявлення ботів, запобігання шахрайству та захисту від автоматизації. Розуміння того, як вона працює, є важливим, незалежно від того, чи захищаєте ви свій сайт від ботів, чи намагаєтеся зрозуміти, чому певні системи безпеки блокують ваш трафік.

Найбільший важіль для продуктивності платних медіа у 2026 році, це гігієна акаунтів. Старі акаунти, чисті платіжні інструменти та ізольовані профілі браузерів у сукупності дають перевагу в CPAВартість залучення клієнта. Ціна, яку ви платите за одну конверсію (продаж, реєстрацію, лід).Докладніше в глосарії → на 30-50% на тому самому креативі.

Сергій М., старший медіабаєр Unled Network

Що таке JavaScript-фінгепринтинг?

JavaScript-фінгепринтинг, це техніка, яка використовує браузерні JavaScript API для збору характеристик пристрою та середовища, створюючи унікальний ідентифікатор для кожного сеансу браузера. На відміну від файлів cookie (які користувачі можуть видалити) або IP-адрес (які змінюються), фінгепринти є:

Статистика унікальності: Дослідження проєкту Panopticlick від EFF показало, що 83,6% браузерів мають унікальний фінгепринт. Коли додається canvas-фінгепринтинг, унікальність перевищує 95%. Сучасні системи, що використовують 50+ сигналів, досягають майже 100% унікальності серед типових груп користувачів.

Як працює фінгепринтинг браузера

Скрипт фінгепринтингу зазвичай працює в три фази:

  1. Збір: JavaScript API запитують властивості браузера, об'єкт navigator, властивості екрана, рендеринг canvas, можливості WebGL, обробку AudioContext тощо.
  2. Хешування: Зібрані значення об'єднуються та хешуються (зазвичай SHA-256 або MurmurHash3) у компактний рядок фінгепринту
  3. Порівняння: Хеш порівнюється з відомими фінгепринтами, збіг із попереднім відвідувачем, відомим бот-інструментом або спуфованим середовищем

Ключові сигнали фінгепринту

Canvas-фінгепринтинг

Найпотужніший сигнал фінгепринтингу. Прихований елемент <canvas> малює текст, фігури та градієнти. Результат попіксельногоНевеликий відстежувальний фрагмент на вашому сайті, який записує дії відвідувачів (перегляди сторінок, додавання в кошик, покупки), щоб платформа могла оптимізуватися.Докладніше в глосарії → виведення варіюється залежно від 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Часовий поясСередня

Додаткові високоцінні сигнали

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.

Чому TLS-фінгепринтинг є нищівним для ботів: Спуфінг TLS-фінгепринту вимагає модифікації TLS-бібліотеки на рівні C/C++, набагато складніше, ніж зміна рядків user-agent. Більшість операторів ботів використовують HTTP-бібліотеки Python, Go або Node.js, які мають характерні JA3-хеші, що миттєво ідентифікують їх як небраузерних клієнтів.

Як антибот-системи використовують фінгепринтинг

Сучасні антибот-рішення, такі як Cloudflare Bot Management, Akamai Bot Manager та DataDome, поєднують фінгепринтинг із кількома шарами виявлення:

  1. Перевірка TLS-фінгепринту: Переконатися, що з'єднання надходить від реального браузера, а не HTTP-бібліотеки
  2. Виконання JavaScript: Запуск скриптів збору фінгепринту, боти, які не можуть виконати JS, негайно позначаються
  3. Валідація узгодженості: Перевірка, чи JS-фінгепринт збігається з TLS-фінгепринтом (наприклад, якщо JA3 вказує на Chrome, а canvas, на безголовий, позначити)
  4. Порівняння з відомими ботами: Зіставлення фінгепринту з базою даних відомих сигнатур бот-інструментів
  5. Поведінкове накладання: Поєднання оцінки фінгепринту з рухом миші, часом кліків та патернами прокручування

Виявлення безголових браузерів

Безголові браузери (Chrome headless, Puppeteer, Playwright) залишають характерні ознаки:

Спуфінг фінгепринту та антидетекція

Кілька інструментів намагаються модифікувати фінгепринти браузера:

ІнструментПідхідРизик виявлення
GoLoginВласний Chromium із налаштовуваними профілями фінгепринтуСередній
MultiloginІмітація браузера з глибокою кастомізацією фінгепринтуСередній
Puppeteer Extra (Stealth)Плагін, який виправляє виявні артефакти PuppeteerСередній-високий
undetected-chromedriverМодифікований ChromeDriver, який уникає поширених детекційСередній-високий
Розширення браузераБлокувальник canvas, спуфінг WebGLВисокий (додає виявні артефакти)
Фундаментальний виклик спуфінгу: Зміна canvas-виведення для відповідності іншому GPU вимагає ідеальної симуляції конвеєра рендерингу цього GPU. Антибот-системи тестують сотні мікроваріацій, які майже неможливо послідовно спуфувати. Невідповідність між спуфованими значеннями часто є більш виявною, ніж оригінальний фінгепринт.

Стратегії захисту для власників сайтів

Якщо ви захищаєте свій сайт від ботів, впроваджуйте фінгепринтинг як частину багаторівневого захисту:

WhatsApp Telegram