>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
JavaScript

Cómo descubrir qué protección se está ejecutando en un sitio y qué está recopilando sobre ti

Scrapfly Anti-bot Detector banner

Cualquiera que haya escrito un parser o configurado pruebas end-to-end en sitios web reales ha encontrado una situación donde el script de repente obtiene un estado 403 o un redireccionamiento infinito a una página en blanco. Te sientas en DevTools, navegando entre las pestañas Network y Application, intentando adivinar: ¿fue Cloudflare quien bloqueó la solicitud, DataDome deslizó una lista de verificación invisible, o el script de la página tomó discretamente una huella de Canvas y WebGL?

El equipo de Scrapfly ha lanzado una extensión de Chrome de código abierto llamada Scrapfly Anti-bot Detector. Esta es una herramienta para investigadores de seguridad, pentesters y desarrolladores de parsers que analiza páginas en tiempo real y muestra qué sistemas de protección están activos y qué técnicas de fingerprinting se están activando en este momento.

Detection overview

Qué puede detectar la extensión

La extensión funciona con Manifest V3 y no envía datos a servidores externos. Todo el análisis se realiza localmente en el navegador.

Clasifica los mecanismos de protección detectados en tres categorías:

  • Sistemas de protección contra bots. Detecta Cloudflare, Akamai, DataDome, PerimeterX, Imperva, Kasada, Shape Security y AWS WAF.
  • CAPTCHAs. Encuentra reCAPTCHA, hCaptcha, FunCaptcha, GeeTest y Cloudflare Turnstile.
  • Técnicas de fingerprinting digital. Rastrea 21 métodos de fingerprinting, incluyendo Canvas, WebGL, AudioContext, fuentes, WebRTC, Performance API, propiedades de Navigator y Storage.

| Detection | History | Rules Editor | |---|---|---| | Detection | History | Rules |

Cómo funciona la detección multicapa

Los sistemas anti-bot rara vez se revelan con una respuesta de encabezado explícita. Por lo general distribuyen su lógica a través de scripts, cookies y objetos globales. La extensión utiliza cinco capas de análisis simultáneamente.

Primero, inspecciona el DOM. La extensión busca elementos de marcado característicos, nombres de clases y scripts externos conectados.

En paralelo, el service worker monitorea las solicitudes de red, filtrando encabezados, cookies, URLs de solicitud y los cuerpos de las cargas útiles enviadas.

La parte más interesante radica en interceptar las llamadas a la API del navegador. Antes de que los scripts de la página comiencen a ejecutarse (en la etapa document_start), la extensión inyecta hooks en el contexto principal de la página (MAIN world). Si un script de protección intenta dibujar un elemento oculto en un canvas o solicitar parámetros de contexto de audio, el hook registra la llamada, recopila los parámetros de la llamada y los pasa a través de un puente aislado al módulo detector.

Los hooks no permanecen activos indefinidamente: se descargan automáticamente después de dos segundos de inactividad o 8 segundos después de que la página comienza.

| Data extraction tools | Settings | |---|---|---| | Advanced Tools | Settings |

Herramientas integradas para análisis profundo

Más allá de una simple lista de proveedores detectados, la extensión incluye una sección de Herramientas Avanzadas. Resuelve un problema práctico: extraer los parámetros necesarios para depurar la automatización.

  • Para reCAPTCHA, hCaptcha y Turnstile, el módulo encuentra el SiteKey, selectores de contenedores y callbacks de JS registrados.
  • Para Akamai y DataDome, la utilidad intercepta datos de sensores generados y analiza la validez de las cookies de protección.
  • Para FunCaptcha y GeeTest, analiza claves públicas y parámetros de desafío.
  • Para Imperva y Shape Security, escanea encabezados específicos y scripts de validación asociados.

La herramienta puede capturar datos de páginas de desafío intermedias antes de que el navegador realice la redirección final a la página de destino.

Arquitectura del proyecto y sin paso de compilación

El código fuente está escrito en JavaScript moderno puro sin bundlers, Webpack o TypeScript. Para ejecutar el proyecto localmente, simplemente clona el repositorio y carga la carpeta en Chrome mediante el modo desarrollador.

La estructura del repositorio se divide en capas claras:

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/                   # Менеджеры состояния и обработчики

Todas las firmas de detección y reglas se extraen en archivos JSON en el directorio detectors/. Puedes editarlos directamente en la interfaz de la extensión a través del editor de reglas integrado, agregando tus propias expresiones regulares, verificaciones de variables de objetos globales window o firmas de cookies personalizadas.

Para la optimización del rendimiento, los autores usaron una caché LRU para expresiones regulares compiladas, lo que elimina el riesgo de bloqueos por ReDoS, y una caché de resultados de 12 horas con salida anticipada en coincidencias de alta confianza.

Las pruebas están escritas en el runner integrado node:test y no requieren dependencias externas. Puedes ejecutar la verificación de sintaxis y las pruebas con un solo comando:

npm run verify

Para qué tareas servirá esto

En primer lugar, la extensión ahorra tiempo a los desarrolladores de crawlers y analistas de datos. En lugar de buscar manualmente en código minificado y registros de red, puedes en un par de segundos entender exactamente con quién estás tratando y qué firmas de entorno verifica la página.

El segundo escenario es auditar tu propia protección. Si estás configurando un WAF o módulo anti-bot en producción, la extensión mostrará claramente si un observador externo puede ver tus reglas y si los desafíos funcionan correctamente.

Finalmente, este es un excelente material de aprendizaje para cualquiera que quiera estudiar cómo funciona Manifest V3, la transferencia segura de datos entre contextos MAIN e ISOLATED, y los métodos de fingerprinting pasivo. El proyecto tiene licencia NPOSL-3.0 y está disponible en la Chrome Web Store.

Proyectos relacionados