Cloudflare Workers
Un Worker delante de tu sitio revisa a cada visitante y le cuenta a tu servidor de origen lo que encontró.
Configuración
O usa el botón de despliegue de arriba.
git clone https://github.com/ipscanner/ipscanner-cloudflare
cd ipscanner-cloudflare
npm install
npx wrangler deploynpx wrangler secret put IPSCANNER_API_KEYEn un dominio propio o en workers.dev, apunta ORIGIN_URL a tu backend.
"routes": [{
"pattern": "example.com/*",
"zone_name": "example.com"
}]Cómo funciona
El Worker lee la IP, el User-Agent y el JA4 del visitante, cuando Cloudflare lo proporciona.
Agentscan e IP Detection se ejecutan en paralelo, con caché por visitante, y dejan pasar la solicitud tras 1,5 segundos.
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.
Los crawlers verificados siempre pasan, y se eliminan las cabeceras X-IPScanner-* que envíe el cliente.
Cabeceras
Si una comprobación falla o se omite, solo se define X-IPScanner-Status.
| Cabecera | Fuente | Ejemplo |
|---|---|---|
| X-IPScanner-ClassAgentscan | Agentscan | human |
| X-IPScanner-ActionAgentscan | Agentscan | allow |
| X-IPScanner-ConfidenceAgentscan | Agentscan | 0.92 |
| X-IPScanner-Network-ClassIP Detection | IP Detection | residential_clean |
| X-IPScanner-AnonymizedAmbos | Ambos | false |
| X-IPScanner-RiskIP Detection | IP Detection | 12 |
| X-IPScanner-CountryIP Detection | IP Detection | DE |
| X-IPScanner-StatusWorker | Worker | ok |
Ajustes
Defínelos en el bloque vars de wrangler.jsonc.
| Variable | Por defecto | Qué hace |
|---|---|---|
| MODEmonitor añade cabeceras, enforce además bloquea | monitor | monitor añade cabeceras, enforce además bloquea |
| CHECK_AGENTEjecuta Agentscan | true | Ejecuta Agentscan |
| CHECK_IPEjecuta IP Detection | true | Ejecuta IP Detection |
| BLOCK_CLASSESClases de Agentscan a bloquear en modo enforce | malicious_automation | Clases de Agentscan a bloquear en modo enforce |
| BLOCK_ANONYMIZEDTambién bloquea VPN, proxy y Tor en modo enforce | false | También bloquea VPN, proxy y Tor en modo enforce |
| TIMEOUT_MSPor llamada, después la solicitud pasa | 1500 | Por llamada, después la solicitud pasa |
| AGENT_TTLSegundos en caché de un veredicto de Agentscan | 600 | Segundos en caché de un veredicto de Agentscan |
| IP_TTLSegundos en caché de una consulta de IP | 3600 | Segundos en caché de una consulta de IP |
| SKIP_PATHSRegex de rutas que omiten la comprobación | Recursos estáticos | Regex de rutas que omiten la comprobación |
| ORIGIN_URLBackend de destino fuera de una ruta | Vacío | Backend de destino fuera de una ruta |
Preguntas
Observa las cabeceras durante una semana antes de bloquear nada.