Durante um final de semana, fui alertado por múltiplos picos de CPU em nossos servidores web. Após investigar os logs de acesso, identifiquei um padrão claro: um bot usando o user-agent Scrapy/2.11.2 (+https://scrapy.org)
estava fazendo scraping intenso em diversos sites hospedados.
Neste post, mostro como identifiquei o problema e bloqueei esse bot diretamente no NGINX.
Diagnóstico
Recebi 114 alertas do monitoramento, de uso excessivo de CPU.
Logs apontaram requisições contínuas com o user-agent
do Scrapy
.
Nenhum impacto direto em disponibilidade, mas o abuso estava consumindo recursos desnecessários.
Exemplo de log:
34.29.150.158 - - [01/Jun/2025:22:41:26 +0000] "GET /artigo HTTP/1.1" 200 73470 "https://site.com.br/" "Scrapy/2.11.2 (+https://scrapy.org)"
Solução: bloquear o User-Agent no NGINX
A forma mais simples e direta: utilizar uma regra de if no NGINX para inspecionar o cabeçalho User-Agent
.
Abra o arquivo de configuração de NGINX do site ou de algum arquivo de configuração que seja incluído nas configurações, pode também inserir num bloco server
, nas configurações de NGINX do site:
sudo vim /etc/nginx/snippets/restrictions.conf
Adicione a regra abaixo:
if ($http_user_agent ~* "Scrapy/.*\(\+https://scrapy\.org\)") {
return 403;
}
Essa regex garante que apenas o Scrapy com o padrão oficial da ferramenta seja bloqueado, evitando falsos positivos.
Inclua o restrictions.conf
no seu server {}
:
include /etc/nginx/snippets/restrictions.conf;
Teste e recarregue o NGINX:
sudo nginx -t && sudo systemctl reload nginx
Resultado
Após aplicar a regra, todas as requisições do bot passaram a ser negadas com status 403.
O gráfico do monitoramento estabilizou e os alertas de CPU pararam.
Bots legítimos respeitam regras de robots.txt
. Scrapy
pode ser facilmente configurado para ignorá-las, então bloquear o User-Agent
é uma defesa válida.
Sempre monitore logs. Bots mudam padrões, então essa regra pode precisar de ajustes futuros.
Para cenários mais robustos, considere um WAF como Cloudflare, ModSecurity ou fail2ban com parsing de logs.
Bloquear não resolve tudo, mas reduz significativamente o ruído para os usuários legítimos.
Você já precisou lidar com bots abusivos? Conta aqui nos comentários!
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.