Как определить, что посетитель вашего сайта поисковый робот, а не человек на PHP?
Почти каждое устройство в сети Интернет при посещении того или иного сайта посылает так называемых «User Agent», некую информацию в виде названия операционной системы, языка, браузера и прочих параметров.
Некоторые из этих данных динамичны (меняются с течением времени), а некоторые – статичны, то есть не изменяются. По заголовку, посылаемому браузером посетителя к вашему веб-сайту, мы можем определить, является ли он человеком или же поисковым роботом.
Для такого определения мы воспользуемся PHP и готовой для него функцией определения популярных поисковых (и не только) ботов.
Сама функция выглядит так:
function isBot() {
if(!isset($_SERVER['HTTP_USER_AGENT'])) {
$_SERVER['HTTP_USER_AGENT'] = '';
}
$bots = [
'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) {
return $bot;
}
}
return false;
}
И вот пример ее использования:
if(isBot()) { // Условие, если это бот
// Выполняем действие или выводим имя бота через echo isBot();
}
Функция содержит в себе идентификаторы всех популярных поисковых роботов. По желанию вы можете дополнить их своим списком или, например, ограничиться только определенными ботами.
Хочется отметить, что этот вариант определения поисковых роботов не дает 100% точности, так как заголовок (User Agent) можно подменить.