Night Watch
Mantén tus sitios en línea ante inundaciones de scrapers: un monitor de disponibilidad, un escudo con el plan gratuito de Cloudflare y una barrera anti-bots.
- Linux
- Python 3.10+
- Cloudflare Free plan
- ASGI or WSGI apps

Qué hace
Night Watch abre cada sitio que ejecutas como lo haría un visitante, cada cinco minutos, y te avisa en el momento en que uno deja de abrir y en el momento en que vuelve. Cuando un sitio se cae porque un scraper lo está saturando, el watch activa una regla de Cloudflare que detiene la avalancha en el borde, y tu app sigue sirviendo a las personas mientras dure.
- Cada sitio, cada cinco minutos. Cada zona de tu cuenta de Cloudflare, además de cualquier página que listes, opcionalmente con el texto que la página debe contener. Un mensaje cuando un sitio se cae, otro cuando vuelve indicando cuánto tiempo estuvo caído, y un recordatorio mientras sigue caído. Por correo, un webhook de chat, o ambos.
- Un escudo en el plan Free. Tres reglas personalizadas de WAF: un user agent de Chrome sin las cabeceras que envía todo Chrome real recibe un desafío, las solicitudes de página desde nubes de scrapers reciben un desafío, y una regla de emergencia desafía a desconocidos sin cookie y sin enlace durante una avalancha.
- Se activa solo. Cuando un sitio se cae por sobrecarga, el watch activa la regla de emergencia y lo indica en la alarma; horas después de que el sitio vuelva, la desactiva. Un escudo que activaste tú mismo permanece activo.
- Una barrera dentro de tu app. Un archivo sin dependencias, para FastAPI, Starlette, Django, Flask o cualquier app ASGI o WSGI. Rechaza navegadores falsos antes de que se ejecute tu código y limita a los desconocidos a lo que cada worker puede servir. Las personas con una cookie o que llegan a través de un enlace nunca lo notan.
- Mira qué te está golpeando. Lo que el firewall de Cloudflare desafió en los últimos minutos, por regla, red, país, user agent y ruta, leído de los eventos en bruto que permite el plan Free.
- Deshacer integrado. Cada cambio de regla guarda primero las reglas de la zona, tus propias reglas permanecen en su lugar por delante de las nuestras, y un comando restaura el conjunto guardado.
Probado en nuestros propios sitios
- Una avalancha real, una hora: en uno de nuestros sitios, la regla de navegador falso desafió más de 10,000 solicitudes. Las 10,000 que Cloudflare nos permite leer provenían de 9,627 direcciones de banda ancha doméstica, ninguna enviando más de 4: un límite de tasa por dirección nunca se habría activado.
- Cada regla, probada en vivo en el plan Free: se desafió a un desconocido mientras la regla de emergencia estaba activa y se le dejó pasar con una cookie o un enlace; se desafió a un user agent de Chrome sin cabeceras de navegador; Googlebot pasó. Las reglas anteriores de la zona se restauraron entonces exactamente.
- La puerta bajo 1.747 solicitudes por segundo en uvicorn: cada scraper sin cabeceras de navegador rechazado, los desconocidos limitados a lo que la app podía servir, y cada visitante recurrente, visitante de enlace y solicitud de Googlebot servidos en una mediana de 0,20 segundos, el tiempo propio de la página.
Qué incluye
El watchdog
Sitios de tu cuenta de Cloudflare y una lista, comprobaciones que parecen de un visitante, mensajes por correo o webhook, y una prueba que distingue «todo caído» de «esta máquina está sin conexión».
El escudo
Instalar, estado, activar, desactivar, desinstalar y restaurar para una zona o todas, con copia de seguridad de cada cambio antes de aplicar.
La puerta de acceso
Middleware ASGI y WSGI, una página de "un momento" de 2 segundos que entrega una cookie y una línea de registro por minuto.
El runbook
Qué hacer cuando un sitio está lento o caído, cómo interpretar una avalancha de datos y qué no activar en el panel de Cloudflare.
Requisitos
- Linux con systemd y Python 3.10 o posterior; nada que instalar desde pip.
- Para el shield y la vista de eventos, sitios en Cloudflare (cualquier plan, incluido el plan Free) y un token de API.
- Una máquina distinta de la que sirve tus sitios, para que pueda avisarte cuando esa esté caída.
Conviene saber
- La regla de emergencia también desafía a quien escribe tu dirección en un navegador nuevo, por eso está desactivada excepto durante una avalancha de tráfico.
- Los bots verificados y los robots que se identifican nunca son desafiados, y los motores de búsqueda nunca son rechazados por la barrera.
- El escudo utiliza tres de las cinco reglas personalizadas que el plan Free permite por zona.
Preguntas
¿Necesito un plan de pago de Cloudflare?
No. Todo lo que hace Night Watch funciona con el plan gratuito: las tres reglas, la vista de eventos y el cambio automático. Un plan de pago solo te ofrece más espacios para reglas junto a los nuestros.
¿Bloqueará a los rastreadores de búsqueda de Google o de IA?
No. Los bots verificados de Cloudflare y todos los robots que se identifican en su user agent pasan el escudo, y la barrera nunca rechaza a un motor de búsqueda ni a una vista previa de enlace. Si quieres bloquear los rastreadores de IA, esa es una opción independiente en el panel de Cloudflare.
Mi sitio no está en Cloudflare. ¿Sigue siendo útil?
El watchdog y el gate funcionan en cualquier lugar: el watchdog abre cualquier URL y el gate protege cualquier aplicación web de Python. El shield y la vista de eventos necesitan Cloudflare.
¿En qué se diferencia de un monitor de disponibilidad?
Un monitor de disponibilidad te avisa de que un sitio está caído. Night Watch también te lo dice y, además, actúa sobre la causa más común que observamos: activa el escudo en el borde de Cloudflare, y la barrera mantiene tu aplicación al servicio de las personas que deseas mientras dure la avalancha.
Actualizado: