Самый простой способ отличить поисковых ботов от ддос-ботов - по User Agent.
Простейший скрипт для определения ботов поисковиков.
Но ддос боты могут выдавать себя за поисковых ботов, если ддосер поймет, что поискового бота вы определяете только по User Agent. Тогда нам поможет php-функция gethostbyaddr.
С проверкой Рамблер и Yahoo ботов есть проблемы, поэтому их убрал.
Функция gethostbyaddr медленная, поэтому нам нужно будет сохранять результат проверки. Рекомендую создавать файлы с именем ip адреса для "хороших" и "плохих" ботов. Например, так.
Вы можете сделать для хороших и плохих ботов разные папки, в общем принцип понятен.
Акуальный список User Agent ботов Яндекса смотрите здесь.
Акуальный список User Agent ботов Гугла смотрите здесь.
Примеры User Agent других поисковых ботов.
Простейший скрипт для определения ботов поисковиков.
PHP:
function isSearchBot()
{
$bots = array('Google','Yandex','mail.ru','Rambler','yahoo.com','msn.com','bing.com'); // Посмотрите статистику и уберите ненужные вам поисковые системы, это уменьшит нагрузку
foreach($bots as $b) { if( strpos($_SERVER['HTTP_USER_AGENT'], $b) == true ) return $b; }
return false;
}
С проверкой Рамблер и Yahoo ботов есть проблемы, поэтому их убрал.
PHP:
function isSearchBot()
{
$bots = array('Google'=>array('.googlebot.com', '.google.com'), 'Yandex'=>array('.yandex.com', '.yandex.ru', '.yandex.net'), 'mail.ru'=>array('.mail.ru'), 'msn.com'=>array('.msn.com'), 'bing.com'=>array('.msn.com'));
foreach($bots as $u=>$h)
{
if( strpos($_SERVER['HTTP_USER_AGENT'], $u) == true )
{
$iphost=gethostbyaddr($_SERVER['REMOTE_ADDR']);
foreach($h as $host)
{
if (substr($iphost, -strlen($host) )==$host) return true;
}
return 'фейковый бот';
}
}
return 'не бот';
}
PHP:
if (!file_exists('search/'.$_SERVER['REMOTE_ADDR']))
{
$isbot= isSearchBot(); // Проверяем на бота
file_put_contents('search/'.$_SERVER['REMOTE_ADDR'], $isbot); // Записываем результат
}
else $isbot=file_get_contents('search/'.$_SERVER['REMOTE_ADDR']);
Акуальный список User Agent ботов Яндекса смотрите здесь.
Акуальный список User Agent ботов Гугла смотрите здесь.
Примеры User Agent других поисковых ботов.
Код:
Mail.ru
Mozilla/5.0 (compatible; Mail.RU_Bot/Fast/2.0)
Rambler
StackRambler/2.0 (MSIE incompatible)
StackRambler/2.0
Yahoo
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
MSN
msnbot/1.1 (+http://search.msn.com/msnbot.htm)
msnbot-media/1.0 (+http://search.msn.com/msnbot.htm)
msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)
msnbot-news (+http://search.msn.com/msnbot.htm)
Bing
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Последнее редактирование: