2012-03-30 10 views
6

Jak mogę się oprzeć złym niezidentyfikowanym botom, aby zaindeksować moją witrynę? Niektóre złe boty, których nazwy nie ma w cPanel Apache, mają zły dostęp do przepustowości mojej witryny.Jak zablokować złe niezidentyfikowane boty indeksujące moją witrynę?

Próbowałem pliku robots.txt na batgap.com/robots.txt i również został zablokowany przez .htaccess, ale nie ma poprawy wykorzystania przepustowości. Nie znam adresu IP tych botów, więc nie mogę ich zablokować za pomocą adresu IP. Te boty zużywają zbyt dużo przepustowości witryny, a więc wynik, którego potrzebuję, aby zwiększyć ją z serwera.

+0

Cloudflare? Możesz też przeanalizować przekierowane przekierowanie oparte na JS i podszyć je znanym botom, wysyłając zamiast nich przekierowanie nagłówka. Jednak zwykli użytkownicy powinni mieć JS i być w stanie śledzić zaciemnione przekierowanie. –

+0

@Sandeep Kumar, jeśli to wciąż aktualne, przeczytaj [post] (http://scraping.pro/my-site-is-being-scraped-how-can-i-prevent-being-scraped/). –

Odpowiedz

1

Niestety, robots.txt jest czasem ignorowany przez te "złe boty", ale jeśli problemem jest więcej rzeczy, takich jak oryginalne pająki wyszukiwarek, których nie chcesz widzieć, powinny wziąć to pod uwagę. Zakładam, że z CPanel można dostać się do logów serwera WWW (apache)? Tam możesz szukać dwóch rzeczy: adresu IP i użytkownika-agenta. Możesz znaleźć winnych tam i dodać je do pliku robots.txt i .htaccess. Zauważ, że reguły .htaccess odmawiające adresów IP są o wiele lepsze niż poleganie na pliku robots.txt, ponieważ wybieramy z rąk twórcy botów.

Jeśli znasz konkretne roboty, które to robią, powinieneś być w stanie uzyskać adresy IP i użytkowników z forum, ale jeśli jest to coś bardziej ogólnego, to obawiam się, że jest to bardziej ręczna robota.

Istnieją inne metody, które mogą być używane z różnym skutkiem, takie jak mod_security (http://www.askapache.com/htaccess/modsecurity-htaccess-tricks.html), ale będzie to oznaczać, że będziesz musiał uzyskać dostęp konfiguracja twojego serwera sieciowego.

Wreszcie, możesz sprawdzić linki, które wskazują na twoją stronę internetową (używając linku: opcja w google). Czasami, jeśli masz linki na forach spamerskich lub podobnych, może to zwiększyć szanse na pojawienie się botów. Być może możesz spojrzeć na adres URL odnośnika w dziennikach apache - ale wszystko to opiera się na wielu przypuszczeniach i prawdopodobnie będziesz miał szczęście, jeśli będzie miał świetny efekt.

3

Jestem z Incapsula i mamy do czynienia ze złymi botami na bieżąco.

Niedawno opublikowaliśmy badania związane z robotami, które dostarczają wglądu w zakres problemu (http://www.incapsula.com/the-incapsula-blog/item/225-what-google-doesnt-show-you-31-of-website-traffic-can-harm-your-business) iw świetle tych danych muszę się zgodzić z @Leonard Challis - po prostu nie można obsługiwać ochrony botów ręcznie.

Po tych słowach istnieją rozwiązania w zakresie ochrony przed botami, nawet te bezpłatne (w tym my), które mogą pomóc w przypadku złych botów.

BTW - Tak jak wspomniałeś, jednym ze skutków ubocznych odwiedzin złych botów jest utrata przepustowości. Niedawno dowiedzieliśmy się, jak zaskakująco OGROMNE jest wykorzystanie przepustowości związanego z botami. Jest to interesujący temat sam w sobie. Uważamy, że poprzez unikanie złego ruchu bota, dostawcy hostingu mogą w znacznym stopniu poprawić swoją efektywność (miejmy nadzieję, że dzięki temu obniżysz koszty lub poprawisz jakość usług). Kiedy już sobie wyobrazisz, jakie są tego skutki społeczne i biznesowe, możesz zrozumieć rzeczywisty zakres tego problemu, który wykracza poza bezpośrednie szkody.

1

Blokuję "złe boty" za pomocą PHP. Filtruję najpierw adres IP, a następnie użytkownika-agenta. Sprawię, że "zły bot" będzie czekać aż do 999 sekund, a następnie zwróci bardzo małą stronę internetową. Zazwyczaj (zawsze) zwracane są limity czasu połączenia z Internetem i bajty zerowe (0). Najlepsze, że opóźniłem je na kilka minut przed dotarciem do następnej ofiary. http://gelm.net/How-to-block-Baidu-with-PHP.htm

1

blokować niechciane Robots/Spiders odwiedzającym za pośrednictwem PHP

Instrukcje:

Place następujący kod PHP na początku pliku index.php.

Ideą jest umieszczenie kodu na stronie głównej PHP strony głównej, głównym punkcie wejścia na stronę.

Jeśli masz inne pliki PHP, do których można uzyskać bezpośredni dostęp za pośrednictwem adresu URL (bez uwzględniania PHP lub wymagają plików typu wsparcia), umieść kod na początku tych plików. W przypadku większości witryn PHP i witryn PHP CMS, plik główny indeksu.php jest plikiem, który jest głównym punktem wejścia na stronę.

Należy pamiętać, że statystyki witryny, np. AWStats, będą nadal rejestrować trafienia w obszarze Nieznany robot (identyfikowane przez "bot", po którym następuje spacja lub jeden z następujących znaków _ +:,.;/-), ale te boty będą zablokowane przed dostępem do zawartości Twojej witryny.

<?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();} 
      } 
     } 
    } 

// --------------------------------------------------------------------------------------------------------------- 
?> 
Powiązane problemy