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

Есть модуль который определяет город и перекидывает на поддомен принадлежащий этому городу. Поисковик (яндекс) заходят на сайт перебрасывается на Москву.
Думаю надо проверить является ли посетител ботом и если нет, то не редиректить его.
Как можно точно определить что на сайт зашел поисковик?
  • Вопрос задан
  • 13632 просмотра
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Вот есть решение на всех известных ботов:

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',
    '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($bname) ) {
   // Перебрасываем на Москву
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Думаю, что надо не перекидывать, а СПРАШИВАТЬ.
Как же задолбали такие горе-недоучки, которые лучше меня знают, в каком городе я живу, на каком языке хочу видеть сайт...
Ответ написан
Mulfarion
@Mulfarion
НЛО
Вырвано из контекста.
xdan.ru/How-to-detect-on-PHP-if-a-page-is-visited-...

Но это так к слову. А вот логика не понятна.
Начерта тут $botname = $bot; если функция нам вернёт тру или фальш? Видать откуда-то ещё корявые ручонки передрали функцию. Так что требует переваривания для работоспособности кодик. Но главное идея, а как ей крутить это понятно.
Ответ написан
@l2sap
Спасибо Евгений Калибров за скрипт. Пользовался данным скриптом некоторое время. Позже решил упростить его. Мой скрипт универсальный, ловит любого робота: Google, Yandex, Yahoo и Bing. Он удобен тем, что не нужно перечислять роботов каждого отдельно и здесь мы обходимся без циклов, что работает в несколько раз быстрее. Проверено, ботов находит идеально! Пробуйте и юзайте на здоровье.

class ScanBot
{

    public function isBot()
    {

        $down_reg = mb_strtolower($_SERVER['HTTP_USER_AGENT']);
        $down_reg = str_replace(array(' '), '', $down_reg);

        $find_bot_step1 = str_replace(array('yandex', 'google', 'yahoo', 'bing'), ' this_is_bot! ', $down_reg);
        $find_bot_step2 = explode(' ', $find_bot_step1);

        if ($find_bot_step2[1] == "this_is_bot!") {
            return true;
        }

        return false;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы