Night Watch
Mantenha seus sites no ar durante inundações de scrapers: um monitor de disponibilidade, uma proteção do plano gratuito da Cloudflare e um portão de bots.
- Linux
- Python 3.10+
- Cloudflare Free plan
- ASGI or WSGI apps

O que ele faz
O Night Watch abre todos os sites que você executa como um visitante faria, a cada cinco minutos, e avisa no momento em que um deles para de abrir e no momento em que volta. Quando um site cai porque um scraper está o inundando, o watch ativa uma regra do Cloudflare que bloqueia a inundação na borda, e seu app continua atendendo as pessoas enquanto isso durar.
- Todos os sites, a cada cinco minutos. Cada zona na sua conta do Cloudflare, além de qualquer página que você listar, opcionalmente com um texto que a página deve conter. Uma mensagem quando um site cai, outra quando volta com quanto tempo ficou fora, e um lembrete enquanto permanece fora. Por e-mail, um webhook de chat, ou ambos.
- Um escudo no plano Free. Três regras personalizadas de WAF: um user agent do Chrome sem os headers que todo Chrome real envia recebe um desafio, requisições de página vindas de nuvens de scraper recebem um desafio, e uma regra de emergência desafia estranhos sem cookie e sem link durante uma inundação.
- Ativado sozinho. Quando um site cai por sobrecarga, o watch ativa a regra de emergência e diz isso no alarme; horas depois que o site volta, ele desativa. Um escudo que você ativou manualmente permanece ativado.
- Um portão dentro do seu app. Um arquivo sem dependências, para FastAPI, Starlette, Django, Flask ou qualquer app ASGI ou WSGI. Ele recusa navegadores falsos antes que seu código rode e mantém estranhos dentro do que cada worker consegue atender. Pessoas com um cookie ou chegando por um link nunca percebem isso.
- Veja o que está te atingindo. O que o firewall do Cloudflare desafiou nos últimos minutos, por regra, rede, país, user agent e caminho, lido dos eventos brutos que o plano Free permite.
- Desfazer embutido. Cada mudança de regra salva primeiro as regras da zona, suas próprias regras permanecem no lugar à frente das nossas, e um comando restaura o conjunto salvo.
Testado nos nossos próprios sites
- Uma inundação real, uma hora: em um site nosso, a regra de navegador falso desafiou mais de 10.000 requisições. As 10.000 que o Cloudflare nos deixa ler vieram de 9.627 endereços de banda larga residencial, nenhum enviando mais que 4: um limite de taxa por endereço nunca teria disparado.
- Cada regra, testada ao vivo no plano Free: um estranho foi desafiado enquanto a regra de emergência estava ativada e liberado com um cookie ou um link; um user agent do Chrome sem headers de navegador foi desafiado; o Googlebot passou. As regras anteriores da zona foram então restauradas exatamente.
- A porta sob 1.747 requisições por segundo no uvicorn: cada scraper sem cabeçalhos de navegador era recusado, estranhos ficavam restritos ao que o app podia servir, e cada visitante recorrente, visitante de link e requisição do Googlebot era servido em uma mediana de 0,20 segundos, o tempo da própria página.
O que está incluído
O monitor
Sites da sua conta Cloudflare e uma lista, verificações que simulam um visitante, mensagens por e-mail ou webhook, e um teste que distingue "tudo fora do ar" de "esta máquina está offline".
O escudo
Instalar, status, ativar, desativar, desinstalar e restaurar para uma zona ou todas, com cada alteração sendo salva antes.
A porta
Middleware ASGI e WSGI, uma página de "um momento" de 2 segundos que entrega um cookie às pessoas, e uma linha de log por minuto.
O runbook
O que fazer quando um site está lento ou fora do ar, como ler um pico de tráfego e o que não ativar no painel da Cloudflare.
Requisitos
- Linux com systemd e Python 3.10 ou mais recente; nada a instalar via pip.
- Para o escudo e a visualização de eventos, sites na Cloudflare (qualquer plano, incluindo o plano Free) e um token de API.
- Uma máquina diferente daquela que serve seus sites, para que possa avisá-lo quando aquela estiver fora do ar.
Boas informações
- A regra de emergência também desafia uma pessoa que digita seu endereço em um navegador novo, por isso ela fica desativada exceto durante um pico de tráfego.
- Bots verificados e robôs que se identificam nunca são desafiados, e os mecanismos de busca nunca são barrados pela porta.
- O escudo usa três das cinco regras customizadas que o plano Free permite por zona.
Perguntas
Preciso de um plano pago da Cloudflare?
Não. Tudo o que o Night Watch faz funciona no plano Free: as três regras, a visualização de eventos e a alternância automática. Um plano pago apenas oferece mais slots de regras além dos nossos.
Vai bloquear o Google ou os crawlers de busca de IA?
Não. Os bots verificados da Cloudflare e todos os robôs que se identificam no user agent passam pelo escudo, e a porta nunca barra um mecanismo de busca ou uma pré-visualização de link. Se quiser bloquear crawlers de IA, essa é uma escolha separada no painel da Cloudflare.
Meu site não está na Cloudflare. Ainda é útil?
O monitor e a porta funcionam em qualquer lugar: o monitor abre qualquer URL, e a porta protege qualquer app web em Python. O escudo e a visualização de eventos precisam da Cloudflare.
Qual a diferença em relação a um monitor de uptime?
Um monitor de uptime informa que um site está fora do ar. O Night Watch também informa e, em seguida, age na causa mais comum que observamos: ativa o shield na borda da Cloudflare, e o gate mantém seu app servindo às pessoas que você deseja enquanto a inundação durar.
Atualizado: