Eu uso mod_security
para bloquear bots ruins assim:
SecRule REQUEST_HEADERS:User-Agent "CareerBot" "deny,log,noauditlog,severity:2,msg:'Spiderbot blocked',status:403"
É claro que isso significaria adicionar uma linha como essa para cada bot "ruim", então uma maneira melhor de manutenção seria ter um arquivo como badbots.txt
tendo um bot UA por linha, e então usar
SecRule REQUEST_HEADERS:User-Agent "@pmFromFile badbots.txt" "deny,log,noauditlog,severity:2,msg:'Spiderbot blocked',status:403"
Para os bots ruins, eu uso Fail2ban diretamente. Ele ainda vem com uma "badbot jail" para começar, onde você pode simplesmente adicionar mais bots quando os encontrar. Dessa forma, eles não encontram simplesmente erros 403 em cada página que acessam, mas são bloqueados em sua primeira tentativa via iptables, o que os mantém (quase) completamente longe de seus servidores.
Como Renan já descreve na sua resposta (e os comentários também são), posso confirmar com minha experiência que apenas alguns poucos bots realmente obedecem ao robots.txt
, então parei de cuidar dele (exceto para configurar honeypots - isto é, colocando diretórios não existentes em sua disallow
parte que eu então posso analisar dos logs de erro do Apache para bloquear aqueles " bandidos "também".