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

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

...
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
  • Вопрос задан
  • 512 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 вообще соотносится с кодом выше? Какие выводы мы должны из него сделать?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽