Как заблокировать плохих неопознанных ботов, сканирующих мой сайт? - PullRequest
6 голосов
/ 30 марта 2012

Как я могу противостоять плохим неопознанным ботам при сканировании моего сайта? Некоторые плохие боты, чье имя отсутствует в cPanel of Apache, плохо обращаются к пропускной способности моего сайта.

Я пробовал robots.txt на batgap.com/robots.txt, а также заблокировал его с помощью .htaccess, но использование полосы пропускания не улучшилось. Я не знаю IP этих ботов, поэтому не могу заблокировать их по IP-адресу. Эти боты потребляют слишком большую пропускную способность сайта, поэтому мне нужно увеличить ее с сервера.

Ответы [ 4 ]

3 голосов
/ 24 июня 2012

Я из Incapsula, и мы регулярно имеем дело с плохими ботами.

Недавно мы выпустили исследование, посвященное ботам, которое дает представление о масштабах проблемы (http://www.incapsula.com/the-incapsula-blog/item/225-what-google-doesnt-show-you-31-of-website-traffic-can-harm-your-business) и в свете этих данных я должен согласиться с @Leonard Challis - вы просто не можете управлять защитой ботов вручную.

Сказав, что есть решения для защиты ботов, даже бесплатные (включая нас), которыеможет помочь вам с плохими ботами.

Кстати - Как вы уже упоминали, одним из побочных продуктов посещений плохих ботов является потеря пропускной способности.Недавно мы узнали о том, насколько удивительным является ОГРОМНОЕ использование полосы пропускания, связанное с ботами.Это интересная тема сама по себе.Мы считаем, что, избегая плохого трафика ботов, хостинг-провайдеры могут значительно повысить свою эффективность (надеемся, что это позволит снизить стоимость или улучшить качество услуг).Как только вы представите себе, как это влияет на социальные и бизнес-аспекты, вы сможете понять реальный масштаб этой проблемы с плохим ботом, которая выходит далеко за рамки непосредственного нанесенного ущерба.

1 голос
/ 04 октября 2015

Блокировка нежелательных посетителей роботов / пауков через PHP

Инструкции:

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

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

Если у вас есть другие файлы PHP, к которым есть прямой доступ черезURL (не включая файлы PHP include или требующие файлы поддержки), затем поместите код в начало этих файлов.Для большинства сайтов 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();}
          }
        }
   }

// ---------------------------------------------------------------------------------------------------------------
?>
1 голос
/ 14 мая 2014

Я блокирую «плохих ботов» с помощью PHP.Я фильтрую в первую очередь по IP-адресу, а затем через User-Agent.Я заставляю «плохого бота» ждать до 999 секунд, а затем возвращаю очень маленькую веб-страницу.Обычно (всегда) время ожидания интернет-соединения и ноль (0) байтов возвращаются.Лучше всего я задержал их на несколько минут, прежде чем добраться до следующей жертвы.http://gelm.net/How-to-block-Baidu-with-PHP.htm

1 голос
/ 30 марта 2012

К сожалению, robots.txt иногда игнорируется этими "плохими ботами", хотя, если проблема заключается в чем-то большем, чем настоящие пауки поисковых систем, которые вы не хотите видеть, они должны принять это во внимание.Я предполагаю, что с CPanel вы можете войти в журналы веб-сервера (apache)?Там вы можете искать две вещи: IP и User-Agent.Вы можете найти виновных и добавить их в свои robots.txt и .htaccess.Обратите внимание, что правила .htaccess, запрещающие использование IP-адресов, намного лучше, чем просто полагаться на robots.txt, потому что вы выбираете из рук создателя бота.

Если вы знаете конкретных ботов, которые делают это, вы должны иметь возможностьполучать IP-адреса и пользовательских агентов с форумов, но если это более общий вопрос, то, боюсь, это скорее ручная работа.

Существуют и другие методы, которые могут использоваться с различным эффектом, напримеркак mod_security (http://www.askapache.com/htaccess/modsecurity-htaccess-tricks.html), но это будет означать, что вам нужно будет получить доступ к конфигурации вашего веб-сервера.

Наконец, вы можете проверить ссылки, указывающие на ваш веб-сайт (используя опцию link: в Google)Иногда, если у вас есть ссылки на спам-форумах или тому подобное, это может увеличить вероятность того, что боты придут за вами. Может быть, вы можете посмотреть на URL-адрес реферера в журналах apache - но все это основано на многих предположениях, и вывозможно, повезло бы, если бы это имело большой эффект.

...