Задать вопрос

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

...
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
  • Вопрос задан
  • 465 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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 вообще соотносится с кодом выше? Какие выводы мы должны из него сделать?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы