DadosAbertosDeFeira / maria-quiteria

Backend para coleta e disponibilização dos dados 📜
https://mq.dadosabertosdefeira.com.br/painel
MIT License
166 stars 69 forks source link

Adicionar robots.txt #144

Closed anapaulagomes closed 1 year ago

anapaulagomes commented 4 years ago

Estamos ficando sem memória nos servidores por conta de dois bots: DotBot/1.1; http://www.opensiteexplorer.org/dotbot e facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php). Devemos adicionar o robots.txt no portal para evitar esse problema.

Outros:

https://aspiegel.com/petalbot

ellalves commented 4 years ago

É para bloquear totalmente ou numa pasta específica?

ellalves commented 4 years ago

Posso bloquear apenas robôs ruins? Em teoria, sim, na prática, não. Se o robô defeituoso obedecer a /robots.txt e você souber o nome que ele procura no campo User-Agent. então você pode criar uma seção no seu /robotst.txt para excluí-la especificamente. Mas quase todos os robôs ruins ignoram /robots.txt, tornando isso inútil.

Se o robô defeituoso operar com um único endereço IP, você poderá bloquear o acesso ao servidor da Web por meio da configuração do servidor ou com um firewall de rede.

Se cópias do robô operam em vários endereços IP diferentes, como PCs seqüestrados que fazem parte de um botnet grande , torna-se mais difícil. A melhor opção é usar a configuração avançada de regras de firewall que bloqueia automaticamente o acesso a endereços IP que fazem muitas conexões; mas isso pode atingir bons robôs, assim como seus robôs ruins. Fonte: Robotstxt

anapaulagomes commented 4 years ago

Nesse caso, eu acho que esses robôs que citei na issue respeitam o robots.txt mas, infelizmente, para outros a gente não pode garantir. Vamos começar adicionando o arquivo e se continuar a gente vê o que faz. Temos que bloquear para /painel e /admin.

ellalves commented 4 years ago

Como descrito no site dos criadores do dotbot (https://moz.com/help/moz-procedures/crawlers/dotbot), esse robô pode ser bloqueado pelo robots.txt:

No nosso caso, basta fazer: robots.txt

User-agent: dotbot Disallow: /admin/ Disallow: /painel/

Se quiser bloquear totalmente basta bloquear o acesso do dotbot desde a raiz.

robots.txt User-agent: dotbot Disallow: /

ellalves commented 4 years ago

No caso do: Facebookexternalhit (https://www.facebook.com/externalhit_uatext.php) o robots.txt não é respeitado, então uma solução é bloquear pelo IP ou com .htaccess.

Para bloquear pelo .htaccess, basta fazer o seguinte:

.htaccess (bloquear bots ruins com um 403 - acesso negado/proibido):

` SetEnvIfNoCase User-Agent "facebookexternalhit" bad_bot

Order Allow,Deny Allow from all Deny from env=bad_bot

`

Se quiser bloquear o dotbot também basta fazer assim: ` SetEnvIfNoCase User-Agent "facebookexternalhit" bad_bot SetEnvIfNoCase User-Agent "dotbot" bad_bot

Order Allow,Deny Allow from all Deny from env=bad_bot

`