Как Выследить и остановить Ботов-изгоев?


Большая часть пропускной способности одного сайта используется неопознанным ботом. Согласно данным AWSTATS, в нем говорится: Неизвестный робот (идентифицированный как "бот*") потребил 164 ГБ в этом месяце.

Для сравнения, Googlebot потреблял 10 ГБ, а посетители (просмотренный трафик) - 25 ГБ. Это означает, что боты-мошенники потребляют более чем в 6 раз больше трафика посетителей. Для других сайтов который я запускаю (около дюжины), нормальное соотношение составляет 25% , поэтому для 25 ГБ просмотренного трафика боты возьмите в ОБЩЕЙ СЛОЖНОСТИ около 6 ГБ.

Поэтому возникает вопрос: Как определить, какие боты вызывают такое огромное количество запросов, и как их остановить или замедлить, если они полезны?

Очевидно, что большинство ботов, посещающих сайт, важны, включая Googlebot, Yahoo Slurp, MSNbot и т. Д., Включая ботов AdSense/DoubleClick, Поэтому я не могу просто заблокировать всех ботов.

Причина, по которой я расследую это, заключается в том, что я достигаю предела пропускной способности и превышена загрузка процессора для моего хоста, поэтому мне было отправлено уведомление.

Author: Stephen Ostermiller, 2011-09-28

2 answers

  1. Создайте страницу, которая фиксирует IP-адреса всех, кто ее посещает. Добавьте эти IP-адреса в файл htaccess, который блокирует его. ( смотрите пример здесь)

  2. Ссылка на эту страницу в нижнем колонтитуле вашего сайта с использованием прозрачного изображения размером 1 пиксель

  3. Заблокируйте эту страницу в robots.txt так что хорошие роботы его не найдут

Примечание: включение в белый список хороших IP-адресов и/или пользователей-агентов также является хорошей идеей ( IP-адреса поисковой системы Пауки)

 1
Author: John Conde, 2017-04-13 12:33:16

Блокировать нежелательных посетителей Роботов/Пауков с помощью PHP

Инструкции:

Поместите следующий PHP-код в начало вашего index.php файл.

Идея здесь состоит в том, чтобы разместить код на главной странице PHP основного сайта, главной точке входа на сайт.

Если у вас есть другие PHP-файлы, доступ к которым осуществляется напрямую по URL-адресу (не включая файлы типа PHP, включающие или требующие поддержки), поместите код в начало этих файлов. Для большинства PHP-сайты и сайты PHP CMS, корневые index.php файл - это файл, который является основной точкой входа на сайт.

Имейте в виду, что статистика вашего сайта, т. е. AWStats, все равно будет регистрировать обращения в разделе Неизвестный робот (обозначается "бот", за которым следует пробел или один из следующих символов _+:,.;/-), но этим ботам будет заблокирован доступ к контенту вашего сайта.

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

// ---------------------------------------------------------------------------------------------------------------
?>
 0
Author: Sammy, 2015-10-04 18:50:38