Как определить, что посетитель вашего сайта поисковый робот, а не человек на PHP?
Почти каждое устройство в сети Интернет при посещении того или иного сайта посылает так называемых «User Agent», некую информацию в виде названия операционной системы, языка, браузера и прочих параметров.
Некоторые из этих данных динамичны (меняются с течением времени), а некоторые – статичны, то есть не изменяются. По заголовку, посылаемому браузером посетителя к вашему веб-сайту, мы можем определить, является ли он человеком или же поисковым роботом.
Для такого определения мы воспользуемся PHP и готовой для него функцией определения популярных поисковых (и не только) ботов.
Сама функция выглядит так:
$botname = "";
function is_Bot() {
if(!isset($_SERVER["HTTP_USER_AGENT"])) {
$_SERVER["HTTP_USER_AGENT"] = "";
}
$bots = array(
"Google", "Yandex", "Baiduspider", "Lycos", "Genieo", "Slurp", "WebAlta", "facebook",
"Mail.Ru", "ia_archiver", "Teoma", "Yahoo", "Ask", "Rambler", "crawler4j", "MJ12",
"Seznam", "Bot", "cURL", "DuckDuckGo", "AOL", "Lighthouse"
);
foreach($bots as $bot) {
if(stripos($_SERVER["HTTP_USER_AGENT"], $bot) !== false) {
$botname = $bot; // Если это бот - его идентификатор
return true;
}
}
return false;
}
И вот пример ее использования:
if(is_Bot()) { // Условие, если это бот
// Делаем действие
}
Функция содержит в себе идентификаторы всех популярных поисковых роботов. По желанию вы можете дополнить их своим списком или, например, ограничиться только определенными ботами.