Как понять, какая защита висит на сайте и что именно она о вас собирает

16 авг 2026
362
39
5
2 месяца

Scrapfly Anti-bot Detector banner

Каждый, кто хоть раз писал парсер или настраивал сквозное тестирование на реальных сайтах, попадал в ситуацию, когда скрипт внезапно получает статус 403 или вечный редирект на пустую страницу. Сидишь в DevTools, перебираешь вкладки Network и Application, пытаясь угадать: это Cloudflare заблокировал запрос, DataDome подкинул невидимый чеклист или скрипт страницы тихо снял фингерпринт с Canvas и WebGL?

Команда Scrapfly выложила в открытый доступ расширение для Chrome под названием Scrapfly Anti-bot Detector. Это инструмент для исследователей безопасности, пентестеров и разработчиков парсеров, который в реальном времени анализирует страницу и показывает, какие защитные системы на ней работают и какие техники фингерпринтинга запускаются прямо сейчас.

Detection overview

Что умеет определять расширение

Расширение работает на Manifest V3 и не отправляет данные на внешние серверы. Весь анализ происходит локально в браузере.

Реклама

Оно классифицирует найденные защитные механизмы по трем направлениям:

  • Системы защиты от ботов. Определяет Cloudflare, Akamai, DataDome, PerimeterX, Imperva, Kasada, Shape Security и AWS WAF.
  • Капчи. Находит reCAPTCHA, hCaptcha, FunCaptcha, GeeTest и Cloudflare Turnstile.
  • Техники снятия цифрового отпечатка. Отслеживает 21 метод фингерпринтинга, включая Canvas, WebGL, AudioContext, шрифты, WebRTC, Performance API, свойства Navigator и Storage.

| Обнаружение | История | Редактор правил | |---|---|---| | Detection | History | Rules |

Как устроена многоуровневая детекция

Антибот-системы редко выдают себя явным заголовком ответа. Обычно они размазывают свою логику по скриптам, кукам и глобальным объектам. Расширение задействует сразу пять слоев анализа.

Сначала инспектируется DOM. Расширение ищет характерные элементы разметки, имена классов и подключенные внешние скрипты.

Параллельно сервис-воркер мониторит сетевые запросы, фильтруя заголовки, куки, адреса обращений и тела отправляемых полезных нагрузок (payloads).

Самая любопытная часть кроется в перехвате вызовов API браузера. До того как скрипты страницы начнут исполняться (на этапе document_start), расширение внедряет хуки в основной контекст страницы (MAIN world). Если защитный скрипт пытается нарисовать скрытый элемент на холсте или запросить параметры аудио-контекста, хук фиксирует обращение, собирает параметры вызова и передает их через изолированный мост в модуль детектора.

Хуки не висят бесконечно: они автоматически выгружаются либо после двух секунд неактивности, либо через 8 секунд после старта страницы.

| Инструменты извлечения данных | Настройки | |---|---| | Advanced Tools | Settings |

Встроенные инструменты для глубокого анализа

Помимо простого списка найденных вендоров, в расширении есть раздел Advanced Tools. Он решает прикладную задачу: вытащить параметры, которые нужны при отладке автоматизации.

  • Для reCAPTCHA, hCaptcha и Turnstile модуль находит SiteKey, селекторы контейнеров и зарегистрированные JS-колбэки.
  • Для Akamai и DataDome утилита перехватывает сгенерированные сенсорные данные (sensor data) и анализирует валидность защитных кук.
  • Для FunCaptcha и GeeTest парсятся публичные ключи и параметры челленджа.
  • Для Imperva и Shape Security сканируются специфические заголовки и связанные скрипты валидации.

Инструмент умеет захватывать данные с промежуточных экранов (challenge pages) до того, как браузер выполнит финальный редирект на целевую страницу.

Архитектура проекта и отсутствие сборки

Исходный код написан на чистом современном JavaScript без сборщиков, Webpack или TypeScript. Чтобы запустить проект локально, достаточно склонировать репозиторий и загрузить папку в Chrome через режим разработчика.

Структура репозитория разделена на четкие слои:

core/
├── manifest.json              # Конфигурация Manifest V3
├── background.js              # Service Worker, сетевой анализ
├── content.js                 # Content script в ISOLATED world
├── content-main-world.js      # JS-хуки в MAIN world
├── detectors/                 # Правила детекции в формате JSON
   ├── antibot/              # Cloudflare, Akamai, DataDome, Imperva
   ├── captcha/              # reCAPTCHA, Turnstile, hCaptcha
   └── fingerprint/          # Canvas, WebGL, Audio, Storage
└── modules/                   # Менеджеры состояния и обработчики

Все сигнатуры и правила детекции вынесены в JSON-файлы в каталоге detectors/. Их можно редактировать прямо в интерфейсе расширения через встроенный редактор правил, добавляя собственные регулярные выражения, проверки глобальных переменных объекта window или кастомные сигнатуры кук.

Для оптимизации быстродействия авторы применили LRU-кэш скомпилированных регулярных выражений, что исключает риск зависаний от ReDoS, и 12-часовой кэш результатов с досрочным выходом при совпадении с высоким уровнем уверенности.

Тесты написаны на встроенном раннере node:test и не требуют внешних зависимостей. Запустить проверку синтаксиса и тестов можно одной командой:

npm run verify

Для каких задач это пригодится

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

Второй сценарий, аудит собственной защиты. Если вы настраиваете WAF или антибот-модуль на продакшене, расширение наглядно покажет, видит ли сторонний наблюдатель ваши правила и корректно ли отрабатывают челленджи.

Наконец, это отличный учебный материал для тех, кто хочет изучить устройство Manifest V3, безопасную передачу данных между MAIN и ISOLATED контекстами и методы пассивного фингерпринтинга. Проект лицензирован под NPOSL-3.0 и доступен в Chrome Web Store.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.