2017-07-04 13 views
-1

Wir haben ein Problem mit einer Reihe unserer Websites, wo Yahoo, Google, Yandex, Bing Ahrefs und andere alle die Website zur gleichen Zeit indexieren, die die Website tötet.Web Crawler überladen Website

Ich habe Fail2Ban konfiguriert, um die Quell-IPs zu blockieren, aber diese sind für immer ändern so nicht ideal. Ich habe auch versucht, robots.txt zu verwenden, aber das macht wenig Unterschied.

Wir haben versucht, die Seite hinter Cloudflare zu setzen, aber auch hier macht das wenig Unterschied und wir können nur die Quell-IPs blockieren.

Was kann ich noch tun?

Derzeit überwachen wir die Website mit Nagios, die Nginx neu startet, wenn die Website nicht mehr reagiert, aber das scheint alles andere als ideal zu sein.

Ubuntu Server nginx

Robots.txt-Datei ausgeführt wird, hier: -

User-agent: * 
Disallow:/

hier im Falle der Veröffentlichung gibt es etwas gibt, dass ich unsere Entwickler zu bekommen, um zu versuchen.

Dank

+1

Ich bin nicht sicher, dass Stack Overflow der richtige Ort ist, um das zu fragen. Unabhängig davon, posten Sie bitte Ihre /robots.txt hier. –

+1

a) Ich denke, Serverfehler könnte die passendere Seite im Stapelaustausch sein b) Bist du sicher, dass sich die robots.txt im richtigen Verzeichnis befindet? zumindest google, yahoo und bing respektieren es. Google hat irgendwo in seinen Webmaster-Tools ein Test-Tool für die robots.txt – cypherabe

Antwort

0

Ihre robots.txt sollte gearbeitet haben. Beachten Sie, dass nicht alle Crawler robots.txt respektieren.

robots.txt ist die Groß-/Kleinschreibung und muss unter www.ihredomain.com/robots.txt weltweit lesbar sein.

Sehen Sie, was passiert, wenn Sie Crawl-delay: 10 hinzufügen.

0

Ein einfacher Ansatz ist es, sie basierend auf Header in ihren Anfragen zu bewerten. Schematisch sieht das wie folgt aus.

Auf http Ebene in Nginx Konfiguration:

map $http_user_agent $bot_ua { 
    default ''; 

    "~*Googlebot|Bing" Y; 
} 

limit_req_zone $bot_ua zone=bot:1m rate=1r/s; 

Dies wird sicherstellen, dass alle Anfragen mit Googlebot oder Bing in User-Agent werden Rate auf 1 Anfrage pro Sekunde begrenzt sein. Beachten Sie, dass die Ratenbegrenzung "global" ist (vs. per-IP), d. H. Alle Bots warten in einer einzigen Warteschlange auf den Zugriff auf die Website. Die Konfiguration kann leicht geändert werden, um das Limit pro IP-Basis zu begrenzen oder einige Benutzeragenten in die weiße Liste aufzunehmen.

Bei server oder location Stufe:

limit_req zone=bot burst=5; 

, die einen "Burst" von 5-Anfragen bedeutet, ist möglich. Sie können diese Option löschen, wenn Sie möchten.

Nginx wird HTTP-Statuscode 429 ausgeben, wenn ein Anforderungsrate begrenzt ist. "Sane" -Web-Crawler erkennen dies und verlangsamen das Scannen der Website.


Obwohl ich sagen sollte, dieses ganze Problem ist viel komplizierter. Es gibt eine Menge böswilliger Anfragen, die vorgeben, dass sie von Google, Twitter, FB usw. stammen, die von verschiedenen Scannern und Crawlern stammen (z. B. this question) und weder robots.txt noch 429 respektieren. Manchmal sind sie ziemlich intelligent und haben User-Agents Browser imitiert. In diesem Fall hilft Ihnen der obige Ansatz nicht.