Controle de rastreadores da Web

8

Meu site está sendo executado por webspiders do Google. O Google pode indexar meu site, mas às vezes consulta uma tagcloud no meu site mais rapidamente do que meu servidor da web pode produzir os resultados, fazendo com que meu servidor fique sem recursos.

Como posso limitar o acesso ao meu servidor da Web de forma que os visitantes normais não sejam afetados?

O robots.txt não é uma opção, pois impediria a indexação de todo o site.

iptables -m recent é complicado, porque algumas páginas têm muitas imagens ou outros arquivos de dados e gatilhos 'recentes' também (normalmente meu agregador de RSS, carregamento de imagens e feeds).

iptables -m limit tem a mesma desvantagem e, além disso, não fui capaz de ser seletivo por endereço de origem IP.

Como posso limitar os visitantes que fazem com que a carga do meu servidor suba muito?

Estou executando o apache2 no servidor Ubuntu em uma VM do VirtualBox.

jippie
fonte
1
Você pode usar as ferramentas do Google para webmasters para diminuir a taxa de rastreamento. Consulte support.google.com/webmasters/bin/…
derobert

Respostas:

5

Experimente o módulo mod_qos Apache. A versão atual possui os seguintes mecanismos de controle.

  • O número máximo de solicitações simultâneas para um local / recurso (URL) ou host virtual.
  • Limitação da largura de banda, como o número máximo permitido de solicitações por segundo para um URL ou o máximo / mínimo de kbytes baixados por segundo.
  • Limita o número de eventos de solicitação por segundo (condições especiais de solicitação). Também pode "detectar" pessoas muito importantes (VIP) que podem acessar o servidor da web sem ou com menos restrições.
  • Linha de solicitação genérica e filtro de cabeçalho para negar operações não autorizadas.
  • Solicitar limitação e filtragem de dados do corpo (requer mod_parp).
  • Limitações no nível da conexão TCP, por exemplo, o número máximo de conexões permitidas de um único endereço de origem IP ou controle dinâmico de manutenção ativa.
  • Prefere endereços IP conhecidos quando o servidor fica sem conexões TCP livres.

Este exemplo de regra condicional da documentação deve levá-lo na direção certa.

# set the conditional variable to spider if detecting a
# "slurp" or "googlebot" search engine:
BrowserMatch             "slurp"                  QS_Cond=spider
BrowserMatch             "googlebot"              QS_Cond=spider

# limits the number of concurrent requests to two applications
# (/app/b and /app/c) to 300 but does not allow access by a "spider"
# if the number of concurrent requests exceeds the limit of 10:
QS_LocRequestLimitMatch       "^(/app/b/|/app/c/).*$"  300
QS_CondLocRequestLimitMatch   "^(/app/b/|/app/c/).*$"  10   spider
George M
fonte
Parece um pouco mais complicado do que eu esperava em uma noite de sexta-feira, desfrutando de cerveja belga ... Tem que olhar amanhã. Parece promissor com a compatibilidade do navegador e outras coisas. Vindo para pensar sobre isso ... seria bom se ele automaticamente qualquer host / useragent que os pedidos robot.txt: o) Thnx Uther
jippie
Aprecie essa cerveja!
George M
OK, parece bem simples. Eu o implementei para ver se meu servidor da web conseguirá acompanhar agora.
jippie