JavaScript-фингерпринтинг и обнаружение ботов: как сайты вас идентифицируют
Ключевые выводы
- JavaScript-фингерпринтинг собирает 50+ характеристик браузера для создания уникального идентификатора, он более устойчив, чем куки, и его сложнее заблокировать.
- Ключевые сигналы фингерпринтинга включают Canvas, WebGL, AudioContext, шрифты, свойства экрана и данные Navigator API.
- Антибот-системы комбинируют JS-фингерпринтинг с TLS-фингерпринтингом (JA3/JA4) и поведенческим анализом для высокоточной детекции ботов.
- Headless-браузеры (Puppeteer, Playwright) и инструменты автоматизации оставляют обнаруживаемые следы, которые выявляет фингерпринтинг: отсутствующие API, идентичные выходные данные, аномалии времени.
- Спуфинг отпечатков возможен, но становится всё сложнее, антибот-системы используют проверки согласованности, которые ловят несоответствия подменённых значений.
Содержание
- Что такое JavaScript-фингерпринтинг?
- Как работает браузерный фингерпринтинг
- Ключевые сигналы фингерпринтинга
- TLS-фингерпринтинг (JA3/JA4)
- Как антибот-системы используют фингерпринтинг
- Обнаружение headless-браузеров
- Спуфинг отпечатков и антидетект
- Стратегии защиты для владельцев сайтов
- Вопросы конфиденциальности
Каждый раз, когда вы заходите на сайт, ваш браузер молча раскрывает десятки уникальных характеристик: разрешение экрана, модель GPU, установленные шрифты, особенности обработки звука и то, как именно браузер рендерит невидимые canvas-элементы. Вместе эти сигналы создают браузерный отпечаток, столь же уникальный, как отпечаток пальца человека.
Эта технология лежит в основе современных систем обнаружения ботов, предотвращения мошенничества и защиты от автоматизации. Понимание того, как она работает, необходимо, независимо от того, защищаете ли вы свой сайт от ботов или пытаетесь понять, почему некоторые системы безопасности блокируют ваш трафик.
Самый мощный рычаг для повышения эффективности платного трафика в 2026 году, это гигиена аккаунтов. Возрастные кабинеты, чистые платёжные инструменты и изолированные браузерные профили дают преимущество в CPAiCost Per Acquisition, стоимость одного целевого действия (продажи, регистрации, лида).Подробнее в глоссарии → на 30-50% на том же креативе.
Что такое JavaScript-фингерпринтинг?
JavaScript-фингерпринтинг, это техника, использующая браузерные JavaScript API для сбора характеристик устройства и окружения, создающая уникальный идентификатор для каждого сеанса браузера. В отличие от куки (которые пользователь может удалить) или IP-адресов (которые меняются), отпечатки:
- Устойчивы: сохраняются после очистки куки, в режиме инкогнито и после перезапуска браузера
- Уникальны: комбинация 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-фингерпринтинг
Web Audio 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
- Battery API: Уровень заряда батареи и статус зарядки (устарело в большинстве браузеров из соображений конфиденциальности)
- Состояния разрешений: Были ли предоставлены/запрещены разрешения на уведомления, геолокацию, камеру
- Client Hints: 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 указывает на headless, пометить)
- Сравнение с известными ботами: Сопоставление отпечатка с базой данных сигнатур известных бот-инструментов
- Поведенческий слой: Комбинация оценки отпечатка с движением мыши, временем кликов и паттернами прокрутки
Обнаружение headless-браузеров
Headless-браузеры (Chrome headless, Puppeteer, Playwright) оставляют характерные следы:
- navigator.webdriver: Установлен в
trueв автоматизированных браузерах (можно подделать, но обнаруживается через проверки прототипов) - Отсутствие объекта chrome:
window.chromeотсутствует или неполон в headless Chrome - Количество плагинов: В реальном Chrome есть плагины; headless Chrome обычно сообщает ноль
- Несоответствие WebGL-вендора: Headless-среды часто сообщают "Google Inc. (Google SwiftShader)", программный рендерер
- Разрешение на уведомления: Headless-браузеры не могут запрашивать разрешение на уведомления, что раскрывает их через поведение API
- Iframe contentWindow: Headless Chrome обрабатывает кросс-доменный доступ к iframe иначе
- Аномалии времени: Автоматизированные браузеры выполняют JavaScript с нечеловеческой скоростью или идеально равномерными интервалами
Спуфинг отпечатков и антидетект
Несколько инструментов пытаются модифицировать браузерные отпечатки:
| Инструмент | Подход | Риск обнаружения |
|---|---|---|
| GoLogin | Кастомный Chromium с настраиваемыми профилями отпечатков | Средний |
| Multilogin | Имитация браузера с глубокой настройкой отпечатка | Средний |
| Puppeteer Extra (Stealth) | Плагин, патчащий обнаруживаемые артефакты Puppeteer | Средний-Высокий |
| undetected-chromedriver | Модифицированный ChromeDriver, избегающий типичных детекций | Средний-Высокий |
| Расширения браузера | Блокировщик canvas, спуфинг WebGL | Высокий (добавляет обнаруживаемые артефакты) |
Стратегии защиты для владельцев сайтов
Если вы защищаете свой сайт от ботов, внедряйте фингерпринтинг как часть многоуровневой защиты:
- Используйте управляемое решение: Cloudflare, Akamai или DataDome обрабатывают фингерпринтинг в масштабе
- Комбинируйте с ограничением скорости: Фингерпринтинг идентифицирует ботов; ограничение скорости сдерживает их воздействие
- Добавьте поведенческий анализ: Фингерпринтинг + отслеживание мыши + время кликов = комплексное обнаружение
- Размещайте на защищённой от DDoS инфраструктуре: Фингерпринтинг работает на уровне приложения, вам также нужна сетевая DDoS-защита
- Регулярно обновляйте детекцию: Бот-инструменты эволюционируют; ваша детекция должна эволюционировать быстрее
Вопросы конфиденциальности
Браузерный фингерпринтинг вызывает серьёзные опасения по поводу конфиденциальности. Крупные браузеры всё больше ограничивают возможности фингерпринтинга:
- Firefox: Предлагает режим сопротивления фингерпринтингу, который нормализует canvas, WebGL и другие выводы
- Safari: Ограничивает чтение canvas и перечисление шрифтов
- Chrome: Сокращает информацию user-agent через Client Hints и Privacy Sandbox
- GDPR/Законы о конфиденциальности: Фингерпринтинг может считаться сбором персональных данных, требующим согласия в ЕС
Защитите свой сайт от атак ботов
Наша команда безопасности внедряет комплексное обнаружение ботов, фингерпринтинг, DDoS-защиту и настройку WAF для сайтов и приложений, подвергающихся атакам.
Telegram: @unlednetwork → Написать в WhatsApp →
Комментарии
Есть вопрос или опыт? Присоединяйтесь. Ваш email не публикуется.
We implemented this last month and already seeing positive signals.
Great question! This is something we see frequently with our clients. The key is consistency rather than a one-time fix.