Cloudflare Workers

Detección de bots y VPN en un Cloudflare Worker

Un Worker delante de tu sitio revisa a cada visitante y le cuenta a tu servidor de origen lo que encontró.

Configuración

Listo en tres pasos

  1. 1

    Despliega el Worker

    O usa el botón de despliegue de arriba.

    shell
    git clone https://github.com/ipscanner/ipscanner-cloudflare
    cd ipscanner-cloudflare
    npm install
    npx wrangler deploy
  2. 2

    Añade tu clave de API

    shell
    npx wrangler secret put IPSCANNER_API_KEY
  3. 3

    Ponlo delante de tu sitio

    En un dominio propio o en workers.dev, apunta ORIGIN_URL a tu backend.

    wrangler.jsonc
    "routes": [{
      "pattern": "example.com/*",
      "zone_name": "example.com"
    }]

Cómo funciona

Qué pasa en cada solicitud

  1. 1

    El Worker lee la IP, el User-Agent y el JA4 del visitante, cuando Cloudflare lo proporciona.

  2. 2

    Agentscan e IP Detection se ejecutan en paralelo, con caché por visitante, y dejan pasar la solicitud tras 1,5 segundos.

  3. 3

    El modo monitor envía cabeceras de veredicto a tu servidor de origen. El modo enforce además responde con un 403 al visitante bloqueado.

  4. 4

    Los crawlers verificados siempre pasan, y se eliminan las cabeceras X-IPScanner-* que envíe el cliente.

Cabeceras

Cabeceras que recibe tu servidor de origen

Si una comprobación falla o se omite, solo se define X-IPScanner-Status.

CabeceraEjemplo
X-IPScanner-ClassAgentscanhuman
X-IPScanner-ActionAgentscanallow
X-IPScanner-ConfidenceAgentscan0.92
X-IPScanner-Network-ClassIP Detectionresidential_clean
X-IPScanner-AnonymizedAmbosfalse
X-IPScanner-RiskIP Detection12
X-IPScanner-CountryIP DetectionDE
X-IPScanner-StatusWorkerok

Ajustes

Ajustes

Defínelos en el bloque vars de wrangler.jsonc.

VariablePor defecto
MODEmonitor añade cabeceras, enforce además bloqueamonitor
CHECK_AGENTEjecuta Agentscantrue
CHECK_IPEjecuta IP Detectiontrue
BLOCK_CLASSESClases de Agentscan a bloquear en modo enforcemalicious_automation
BLOCK_ANONYMIZEDTambién bloquea VPN, proxy y Tor en modo enforcefalse
TIMEOUT_MSPor llamada, después la solicitud pasa1500
AGENT_TTLSegundos en caché de un veredicto de Agentscan600
IP_TTLSegundos en caché de una consulta de IP3600
SKIP_PATHSRegex de rutas que omiten la comprobaciónRecursos estáticos
ORIGIN_URLBackend de destino fuera de una rutaVacío

Preguntas

Preguntas sobre el Cloudflare Worker

Una solicitud por comprobación activa para cada visitante sin caché, así que dos con ambas activas. Las visitas repetidas dentro del TTL de la caché no consumen ninguna.

Empieza en modo monitor

Observa las cabeceras durante una semana antes de bloquear nada.