Как определить бота яндекс?

...
if ($row27[count] == 0) {
	 // echo 'Все ок, добавляем клик';
	 
	function isBot(&$botname = ''){
	/* Эта функция будет проверять, является ли посетитель роботом поисковой системы */
	  $bots = array(
    'rambler','googlebot','aport','yahoo','msnbot','turtle','mail.ru','omsktele',
    'yetibot','picsearch','sape.bot','sape_context','gigabot','snapbot','alexa.com',
    'megadownload.net','askpeter.info','igde.ru','ask.com','qwartabot','yanga.co.uk',
    'scoutjet','similarpages','oozbot','shrinktheweb.com','aboutusbot','followsite.com',
    'dataparksearch','google-sitemaps','appEngine-google','feedfetcher-google',
    'liveinternet.ru','xml-sitemaps.com','agama','metadatalabs.com','h1.hrn.ru',
    'googlealert.com','seo-rus.com','yaDirectBot','yandeG','yandex','YandexBot','YandexBot/3.0',
    'yandexSomething','Copyscape.com','AdsBot-Google','domaintools.com',
    'Nigma.ru','bing.com','dotnetdotcom'
	);
	  foreach($bots as $bot)
	    if(stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false){
	      $botname = $bot;
	      return true;
	    }
	  return false;
	}
	if( !isBot() ) 
		echo 'На сайте сейчас'.$bot ;
		// накручиваем счетчик если запрос не от бота
		$click_info = mysql_query("UPDATE ad_stat_cleaned SET clicks=clicks+1 WHERE bid='$safe_id' AND date='$today'");
		$click_user_info = mysql_query("INSERT INTO ad_stat (userinfo, IP, hash, ban_id, datetime, referer, position) VALUES ('$a', '$b', '$hash_input', '$safe_id', '$datetime', '$c', '$posit')");
		$r28 = mysql_query("SELECT url AS url FROM `ad_banners`
		WHERE bid=$safe_id");
		$row28 = mysql_fetch_array($r28);
		header("Location: $row28[url]");	
		$bname = '';
	if( isBot($bname) ) echo 'На сайте сейчас бот '.$bname;
	} else {
	// echo 'клик уже есть, не добавляем, делаем редирект';
...


че получаю по факту

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3554.0 Safari/537.36
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/33.0.1750.117 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36
Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
  • Вопрос задан
  • 378 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
if( !isBot() ) 
    echo 'На сайте сейчас'.$bot ;

Все следующие строки к условию не относятся. PHP - это не Питон, здесь отступы ничего не решают.
Как минимум

function isBot(&$botname = ''){
  /* Эта функция будет проверять, является ли посетитель роботом поисковой системы */
  $bots = array(
    'rambler','googlebot','aport','yahoo','msnbot','turtle','mail.ru','omsktele',
    'yetibot','picsearch','sape.bot','sape_context','gigabot','snapbot','alexa.com',
    'megadownload.net','askpeter.info','igde.ru','ask.com','qwartabot','yanga.co.uk',
    'scoutjet','similarpages','oozbot','shrinktheweb.com','aboutusbot','followsite.com',
    'dataparksearch','google-sitemaps','appEngine-google','feedfetcher-google',
    'liveinternet.ru','xml-sitemaps.com','agama','metadatalabs.com','h1.hrn.ru',
    'googlealert.com','seo-rus.com','yaDirectBot','yandeG','yandex','YandexBot','YandexBot/3.0',
    'yandexSomething','Copyscape.com','AdsBot-Google','domaintools.com',
    'Nigma.ru','bing.com','dotnetdotcom'
  );
  foreach($bots as $bot) {
    if (stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false) {
      $botname = $bot;
      return true;
    }
  }
  return false;
}
 
$botname = '';

if(!isBot($botname)) {
    // накручиваем счетчик если запрос не от бота
    $click_info = mysql_query("UPDATE ad_stat_cleaned SET clicks=clicks+1 WHERE bid='$safe_id' AND date='$today'");
    $click_user_info = mysql_query("INSERT INTO ad_stat (userinfo, IP, hash, ban_id, datetime, referer, position) VALUES ('$a', '$b', '$hash_input', '$safe_id', '$datetime', '$c', '$posit')");
    $r28 = mysql_query("SELECT url AS url FROM `ad_banners` WHERE bid=$safe_id");
    $row28 = mysql_fetch_array($r28);
    header("Location: $row28[url]");
} else {
  echo 'На сайте сейчас бот '.$botname;
}



Код ужасный, конечно...

че получаю по факту
Как этот список UA вообще соотносится с кодом выше? Какие выводы мы должны из него сделать?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽