Мощные VPS/VDS-сервера на новейшем поколении процессоров Intel от 570р в месяц   •   Реклама
19 338 просм
5 комм
Поделиться:

Как определить, что посетитель вашего сайта поисковый робот, а не человек на PHP?

Почти каждое устройство в сети Интернет при посещении того или иного сайта посылает так называемых «User Agent», некую информацию в виде названия операционной системы, языка, браузера и прочих параметров.

Некоторые из этих данных динамичны (меняются с течением времени), а некоторые – статичны, то есть не изменяются. По заголовку, посылаемому браузером посетителя к вашему веб-сайту, мы можем определить, является ли он человеком или же поисковым роботом.

Для такого определения мы воспользуемся PHP и готовой для него функцией определения популярных поисковых (и не только) ботов.

Сама функция выглядит так:

function isBot() {

	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) {
		
			return $bot;
			
		}
		
	}
	
	return false;

}

И вот пример ее использования:

if(isBot()) { // Условие, если это бот

	// Выполняем действие или выводим имя бота через echo isBot();
   
}

Функция содержит в себе идентификаторы всех популярных поисковых роботов. По желанию вы можете дополнить их своим списком или, например, ограничиться только определенными ботами.

Хочется отметить, что этот вариант определения поисковых роботов не дает 100% точности, так как заголовок (User Agent) можно подменить.

5
комментариев
Форма комментирования этой статьи скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 25
    919
      •  Команда Pandoge
    27 мар в 14:40

    Инструкция обновлена.

    Изменен код и расширена база ботов.

      • 0
      5
        •  Пользователь
      9 окт в 13:53

      Артём Мáлков, привет, куда надо добавить/вставить функцию, и пример использования

      • 0
      919
        •  Команда Pandoge
      9 окт в 22:44

      Damirlt, здравствуйте! Подскажите, на чём сделан сайт?

      • 0
      5
        •  Пользователь
      10 окт в 20:07

      Артём Мáлков, сайт на html

      • 0
      919
        •  Команда Pandoge
      изменено 12 окт в 13:03

      Sergey, наверное самый простой вариант:

      1. В корне сайта создаете файл check-bots.php. Открываете. В самом верху пишите:

      <?php

      и сразу после вставляете функцию из статьи.

      2. У нужной страницы меняете формат с .html на .php. Это нужно делать аккуратно, т.к страница поменяет свой адрес, в следствии чего может пропасть с поиска. Чтобы этого не было - прописывайте редирект. Так же новый адрес нужно прописать в меню сайта, если такие есть.

      После смены формата на странице будет работать PHP-код (если нет ограничений со стороны хостинга).

      3. На странице из шага 2, в самый верх вставляете:

      <?php
      
      	require_once $_SERVER['DOCUMENT_ROOT'].'/check-bots.php';
      	
      ?>

      и на этой же странице вам будет доступно условие из статьи:

      if(isBot()) {

      Пример:

      <?php
      
      	if(isBot()) {
      		
      		echo 'Вы - бот';
      		
      	} else {
      		
      		echo 'Вы - не бот';
      		
      	}
      	
      ?>

      Проверить, что скрипт действительно определяет ботов можно через сервис Яндекса - https://webmaster.yandex.ru/tools/server-response/

      Указываете страницу с условием и смотрите возвращаемое содержимое.

Подняться наверх
«Pandoge» - помощник вебмастера