2012-03-30 6 views
6

Wie kann ich den schlechten nicht identifizierten Bots widerstehen, um meine Website zu crawlen? Einige schlechte Bots, deren Name in cPanel von Apache nicht vorhanden ist, greifen schlecht auf die Bandbreite meiner Website zu.Wie blockiere ich schlechte nicht identifizierte Bots, die meine Website crawlen?

Ich hatte robots.txt auf batgap.com/robots.txt versucht und auch mit .htaccess blockiert, aber es gibt keine Verbesserung der Bandbreitennutzung. Ich kenne die IP dieser Bots nicht so, dass sie sie nicht per IP-Adresse blockieren können. Diese Bots verbrauchen zu viel Bandbreite der Site und daher muss ich das Ergebnis vom Server erhöhen.

+0

Cloudflare? Oder Sie können eine verschleierte JS-basierte Weiterleitung auswerten und sie an bekannte Bots spoofen, indem Sie ihnen stattdessen eine Header-Weiterleitung senden. Aber normale Benutzer sollten JS haben und einer verschleierten Weiterleitung folgen können. –

+0

@Sandeep Kumar, wenn es immer noch wirklich ist, lesen Sie [die Post] (http://scraping.pro/my-site-is-being-scraped-how-can-i-prevent-being-scraped/). –

Antwort

1

Leider wird robots.txt manchmal von diesen "schlechten Bots" ignoriert, obwohl wenn das Problem mehr Dinge wie echte Suchmaschinen-Spider sind, die Sie nicht sehen wollen, sollten sie es zur Kenntnis nehmen. Ich nehme an, mit CPanel können Sie in die Webserver (Apache) Protokolle gelangen? Dort können Sie nach zwei Dingen suchen: der IP und dem User-Agent. Sie können die Schuldigen dort finden und sie zu Ihrer robots.txt und .htaccess hinzufügen. Beachten Sie, dass .htaccess-Regeln, die IP-Adressen verweigern, weitaus besser sind, als sich auf robots.txt zu verlassen, weil Sie die Wahl aus den Händen des Bot-Erstellers herausnehmen.

Wenn Sie spezifische Bots wissen, die das tun, sollten Sie in der Lage sein, IP-Adressen und Benutzeragenten von Foren zu bekommen, aber wenn es eine allgemeinere Sache ist, dann habe ich wirklich Angst, dass es eher eine manuelle Arbeit ist.

Es gibt andere Methoden, die mit unterschiedlichen Auswirkungen verwendet werden können, z. B. mod_security (http://www.askapache.com/htaccess/modsecurity-htaccess-tricks.html), dies bedeutet jedoch, dass Sie darauf zugreifen müssen Ihre Webserverkonfiguration.

Schließlich können Sie die Links überprüfen, die auf Ihre Website zeigen (mit dem Link: Option auf Google). Manchmal, wenn Sie Links zu Spam-Foren oder Ähnlichem haben, kann dies die Chancen erhöhen, dass Bots kommen, um Sie zu bekommen. Vielleicht kannst du dir die Referer-URL in den Apache-Logs ansehen - aber das alles basiert auf vielen Vermutungen und du hättest wahrscheinlich Glück, wenn es einen großen Effekt hätte.

3

Ich bin von Incapsula und wir beschäftigen uns regelmäßig mit schlechten Bots.

Wir haben vor Kurzem eine Bot-bezogene Forschung veröffentlicht, die Einblicke in den Umfang des Problems gibt (http://www.incapsula.com/the-incapsula-blog/item/225-what-google-doesnt-show-you-31-of-website-traffic-can-harm-your-business) und angesichts dieser Daten muss ich @Leonard Challis zustimmen - Sie können Bot-Schutz nicht manuell behandeln.

Nichtsdestoweniger gibt es bot Schutzlösungen, sogar Freie (uns eingeschlossen), die Ihnen mit schlechten Bots helfen können.

BTW - Wie Sie bereits erwähnt haben, ist ein Nebenprodukt der schlechten Bots Besuche ein Verlust der Bandbreite. Wir sind erst kürzlich bewusst geworden, wie erstaunlich riesig Bot-bezogene Bandbreitennutzung wirklich ist. Dies ist ein interessantes Thema für sich. Wir glauben, dass Hosting-Provider durch die Vermeidung von schlechtem Bot-Verkehr ihre Effizienz erheblich verbessern können (hoffentlich damit Kosten senken oder Services verbessern). Wenn Sie sich einmal vorstellen, dass dies eine soziale und geschäftliche Implikation darstellt, können Sie den tatsächlichen Umfang dieses Problems mit dem schlechten Bot verstehen, das weit über den unmittelbaren Schaden hinausgeht.

1

Ich Block 'schlechte Bots' mit PHP. Ich filtriere in erster Linie IP-Adresse, dann von User-Agent sekundär. Ich lasse den "schlechten Bot" bis zu 999 Sekunden warten und gebe dann eine sehr kleine Webseite zurück. In der Regel (immer) werden die Zeitüberschreitung der Internetverbindung und null (0) Bytes zurückgegeben. Am besten habe ich sie für ein paar Minuten vor dem nächsten Opfer verzögert. http://gelm.net/How-to-block-Baidu-with-PHP.htm

1

Blockieren Sie unerwünschte Robots/Spiders Besucher über PHP

Anleitung:

Fügen Sie den folgenden PHP-Code am Anfang Ihrer Datei index.php.

Die Idee hier ist, den Code in der PHP-Homepage der Hauptwebsite, dem Haupteinstiegspunkt der Website, zu platzieren.

Wenn Sie andere PHP-Dateien haben, auf die direkt über eine URL zugegriffen wird (ohne PHP-Include oder Unterstützungstypen-Dateien), dann platzieren Sie den Code am Anfang dieser Dateien. Für die meisten PHP-Sites und PHP-CMS-Sites ist die index.php-Datei des Root-Verzeichnisses die Datei, die den Haupteinstiegspunkt der Site darstellt.

Denken Sie daran, dass Ihre Website-Statistiken, dh AWStats, weiterhin die Treffer unter Unbekannter Roboter protokollieren (identifiziert durch 'bot' gefolgt von einem Leerzeichen oder einem der folgenden Zeichen _ +:,.;/-), aber Diese Bots werden für den Zugriff auf den Inhalt Ihrer Website gesperrt.

<?php 
// --------------------------------------------------------------------------------------------------------------- 

// Banned IP Addresses and Bots - Redirects banned visitors who make it past the .htaccess and or robots.txt files to an URL. 
// The $banned_ip_addresses array can contain both full and partial IP addresses, i.e. Full = 123.456.789.101, Partial = 123.456.789. or 123.456. or 123. 
// Use partial IP addresses to include all IP addresses that begin with a partial IP addresses. The partial IP addresses must end with a period. 
// The $banned_bots, $banned_unknown_bots, and $good_bots arrays should contain keyword strings found within the User Agent string. 
// The $banned_unknown_bots array is used to identify unknown robots (identified by 'bot' followed by a space or one of the following characters _+:,.;/\-). 
// The $good_bots array contains keyword strings used as exemptions when checking for $banned_unknown_bots. If you do not want to utilize the $good_bots array such as 
// $good_bots = array(), then you must remove the the keywords strings 'bot.','bot/','bot-' from the $banned_unknown_bots array or else the good bots will also be banned. 
    $banned_ip_addresses = array('41.','64.79.100.23','5.254.97.75','148.251.236.167','88.180.102.124','62.210.172.77','45.','195.206.253.146'); 
    $banned_bots = array('.ru','AhrefsBot','crawl','crawler','DotBot','linkdex','majestic','meanpath','PageAnalyzer','robot','rogerbot','semalt','SeznamBot','spider'); 
    $banned_unknown_bots = array('bot ','bot_','bot+','bot:','bot,','bot;','bot\\','bot.','bot/','bot-'); 
    $good_bots = array('Google','MSN','bing','Slurp','Yahoo','DuckDuck'); 
    $banned_redirect_url = 'http://english-1329329990.spampoison.com'; 

// Visitor's IP address and Browser (User Agent) 
    $ip_address = $_SERVER['REMOTE_ADDR']; 
    $browser = $_SERVER['HTTP_USER_AGENT']; 

// Declared Temporary Variables 
    $ipfound = $piece = $botfound = $gbotfound = $ubotfound = ''; 

// Checks for Banned IP Addresses and Bots 
    if($banned_redirect_url != ''){ 
    // Checks for Banned IP Address 
     if(!empty($banned_ip_addresses)){ 
      if(in_array($ip_address, $banned_ip_addresses)){$ipfound = 'found';} 
      if($ipfound != 'found'){ 
      $ip_pieces = explode('.', $ip_address); 
      foreach ($ip_pieces as $value){ 
       $piece = $piece.$value.'.'; 
       if(in_array($piece, $banned_ip_addresses)){$ipfound = 'found'; break;} 
      } 
      } 
      if($ipfound == 'found'){header("location: $banned_redirect_url"); exit();} 
     } 

    // Checks for Banned Bots 
     if(!empty($banned_bots)){ 
      foreach ($banned_bots as $bbvalue){ 
      $pos1 = stripos($browser, $bbvalue); 
      if($pos1 !== false){$botfound = 'found'; break;} 
      } 
      if($botfound == 'found'){header("location: $banned_redirect_url"); exit();} 
     } 

    // Checks for Banned Unknown Bots 
     if(!empty($good_bots)){ 
      foreach ($good_bots as $gbvalue){ 
      $pos2 = stripos($browser, $gbvalue); 
      if($pos2 !== false){$gbotfound = 'found'; break;} 
      } 
     } 
     if($gbotfound != 'found'){ 
      if(!empty($banned_unknown_bots)){ 
      foreach ($banned_unknown_bots as $bubvalue){ 
       $pos3 = stripos($browser, $bubvalue); 
       if($pos3 !== false){$ubotfound = 'found'; break;} 
      } 
      if($ubotfound == 'found'){header("location: $banned_redirect_url"); exit();} 
      } 
     } 
    } 

// --------------------------------------------------------------------------------------------------------------- 
?> 
Verwandte Themen