Как понять, какая защита висит на сайте и что именно она о вас собирает
Каждый, кто хоть раз писал парсер или настраивал сквозное тестирование на реальных сайтах, попадал в ситуацию, когда скрипт внезапно получает статус 403 или вечный редирект на пустую страницу. Сидишь в DevTools, перебираешь вкладки Network и Application, пытаясь угадать: это Cloudflare заблокировал запрос, DataDome подкинул невидимый чеклист или скрипт страницы тихо снял фингерпринт с Canvas и WebGL?
Команда Scrapfly выложила в открытый доступ расширение для Chrome под названием Scrapfly Anti-bot Detector. Это инструмент для исследователей безопасности, пентестеров и разработчиков парсеров, который в реальном времени анализирует страницу и показывает, какие защитные системы на ней работают и какие техники фингерпринтинга запускаются прямо сейчас.
Что умеет определять расширение
Расширение работает на 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.
| Обнаружение | История | Редактор правил |
|---|---|---|
|
|
|
|
Как устроена многоуровневая детекция
Антибот-системы редко выдают себя явным заголовком ответа. Обычно они размазывают свою логику по скриптам, кукам и глобальным объектам. Расширение задействует сразу пять слоев анализа.
Сначала инспектируется DOM. Расширение ищет характерные элементы разметки, имена классов и подключенные внешние скрипты.
Параллельно сервис-воркер мониторит сетевые запросы, фильтруя заголовки, куки, адреса обращений и тела отправляемых полезных нагрузок (payloads).
Самая любопытная часть кроется в перехвате вызовов API браузера. До того как скрипты страницы начнут исполняться (на этапе document_start), расширение внедряет хуки в основной контекст страницы (MAIN world). Если защитный скрипт пытается нарисовать скрытый элемент на холсте или запросить параметры аудио-контекста, хук фиксирует обращение, собирает параметры вызова и передает их через изолированный мост в модуль детектора.
Хуки не висят бесконечно: они автоматически выгружаются либо после двух секунд неактивности, либо через 8 секунд после старта страницы.
| Инструменты извлечения данных | Настройки |
|---|---|
|
|
|
Встроенные инструменты для глубокого анализа
Помимо простого списка найденных вендоров, в расширении есть раздел 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.
