Limitation des robots d'indexation Web

8

Mon site Web est DoS'ed par Google webspiders. Google est le bienvenu pour indexer mon site, mais parfois il interroge un tagcloud sur mon site plus rapidement que mon serveur Web ne peut produire les résultats, ce qui fait que mon serveur Web manque de ressources.

Comment puis-je limiter l'accès à mon serveur Web de manière à ce que les visiteurs normaux ne soient pas affectés?

robots.txt n'est pas une option car cela empêcherait l'indexation de l'ensemble du site.

iptables -m recent est délicat, car certaines pages contiennent beaucoup d'images ou d'autres fichiers de données et des déclencheurs «récents» sur ceux-ci également (généralement mon agrégateur RSS, le chargement d'images et de flux).

iptables -m limit a le même inconvénient et en plus de cela, je n'ai pas pu être sélectif par adresse source IP.

Comment puis-je limiter les visiteurs qui font augmenter la charge de mon serveur?

J'exécute apache2 sur le serveur Ubuntu dans une machine virtuelle VirtualBox.

jippie
la source
1
Vous pouvez utiliser les outils pour les webmasters pour réduire le taux d'exploration. Voir support.google.com/webmasters/bin/…
derobert

Réponses:

5

Essayez le module Apache mod_qos . La version actuelle dispose des mécanismes de contrôle suivants.

  • Nombre maximal de demandes simultanées vers un emplacement / ressource (URL) ou un hôte virtuel.
  • Limitation de la bande passante telle que le nombre maximum autorisé de requêtes par seconde à une URL ou le maximum / minimum de kilo-octets téléchargés par seconde.
  • Limite le nombre d'événements de demande par seconde (conditions de demande spéciales). Il peut également «détecter» des personnes très importantes (VIP) qui peuvent accéder au serveur Web sans ou avec moins de restrictions.
  • Filtre de ligne de requête et d'en-tête générique pour refuser les opérations non autorisées.
  • Demander la limitation et le filtrage des données du corps (nécessite mod_parp).
  • Limitations du niveau de connexion TCP, par exemple, le nombre maximal de connexions autorisées à partir d'une seule adresse source IP ou d'un contrôle dynamique de maintien en vie.
  • Préfère les adresses IP connues lorsque le serveur manque de connexions TCP gratuites.

Cet exemple de règle conditionnelle de la documentation devrait vous permettre d'aller dans la bonne direction.

# 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
la source
Ça a l'air un peu plus compliqué que je ne l'avais espéré un vendredi soir en dégustant de la bière belge ... Je dois la regarder demain. Semble prometteur avec le navigateur et les choses. En y pensant ... ce serait bien si cela automatiquement tout hôte / agent utilisateur qui demande robot.txt: o) Thnx Uther
jippie
Profitez de cette bière!
George M
OK, ça a l'air assez simple. Je l'ai implémenté pour voir si mon serveur web pourra continuer maintenant.
jippie