Screaming Frog, user-agent por defecto, Start. A los diez segundos: “el sitio no carga”. En más de una agencia de Cusco el servidor está bien. El WAF responde 406 Not Acceptable si el user-agent parece scraper. Frog, de fábrica, parece scraper.
Cambio el UA a Chrome, mando Accept: text/html, y sale 200. El 406 hay que anotarlo. No es downtime.
curl -sI -A "Screaming Frog SEO Spider/20.0" https://www.agencia.com/
# a menudo: HTTP/2 406
curl -sI -A "Mozilla/5.0" -H "Accept: text/html" https://www.agencia.com/
# HTTP/2 200
Qué es el WAF en esta película
Un proxy (Cloudflare, ModSecurity, un plugin “anti-bot”, el panel del hosting) inspecciona la petición. Reglas típicas: UA vacío, UA de herramientas, falta de Accept, rate limit, datacenter IP. Googlebot debería estar en una lista permitida; no siempre lo está si alguien copió reglas agresivas.
Google publica rangos de IP y un método para verificar Googlebot (DNS inverso). Si GSC muestra picos de 4xx o “anomalía en el rastreo”, entonces el WAF es un problema de indexación, no solo de Frog. Hasta que no lo veas en GSC, no asumas que Google está bloqueado. Asumir eso es el error simétrico al de “el sitio está caído”.
Cómo configuras el laboratorio
- Screaming Frog: Configuration → User-Agent → Chrome. Headers
Accept. - Modo lista si solo quieres el catálogo del sitemap.
- Respeta
Crawl-delayde cortesía aunque Google lo ignore: no martilles 80 hilos contra un VPS de Cusco en temporada. - Guarda la config. El próximo junior no debería volver al 406.
El auditor en Python que escribí para una red de tours hace lo mismo: UA de navegador por defecto. Sin eso, el script miente.
Qué vigilar en producción
| Señal | Qué puede ser | Acción |
|---|---|---|
| GSC: 403/406/429 en estadísticas de rastreo | WAF o rate limit a Googlebot | Allowlist, verificar IPs, bajar sensibilidad |
| Frog 406, Chrome 200 | Regla anti-scraper | Documentar. No “arreglar” abriendo el WAF al mundo |
406 a Googlebot en un curl | Alguien bloqueó mal | Urgente. Inspección de URL en GSC |
| Challenge JS (Cloudflare) | El HTML inicial no es el contenido | Render en Frog; ver HTML renderizado vs original |
No apagues el WAF para que un crawler de 99 dólares se sienta cómodo. Apágalo (o ajústalo) si Google no puede rastrear. El resto de herramientas se adaptan al sitio, no al revés.
Qué pedirle a sistemas
El firewall está haciendo su trabajo con scrapers. Necesito una excepción documentada para Googlebot y un UA de Chrome para las auditorías internas. No necesito que el sitio sea rastreable por cualquier script de Internet.
No pido que desactiven Cloudflare. Pido una vía de medición.