ФорумПрограммированиеПыхнуть хотите?Готовые решения → Определение поисковых роботов

Определение поисковых роботов

  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 8:53


    function DetectSearchEngine($USER_AGENT)
    {
    //Массив поисковых ботов: array('что ищем в USER_AGENT', 'Название бота, которое будет выводиться');
    $engines = array(
    array('Aport', 'Aport'),
    array('Google', 'Google'),
    array('msnbot', 'MSN'),
    array('Rambler', 'Rambler'),
    array('Yahoo', 'Yahoo'),
    array('Yandex', 'Yandex')
    );

    foreach ($engines as $engine)
    {
    if (strstr($USER_AGENT, $engine[0]))
    {
    return($engine[1]);
    }
    }

    return (false);
    }


    Использование:

    $detect = DetectSearchEngine($_SERVER['HTTP_USER_AGENT']);

    if ($detect)
    {
    print 'Вы бот! (' . $detect . ')';
    }
    else
    {
    print 'Здрасте, посетитель, Вы нормальный! ;)';
    }


    данная функция применяется на этом форуме, результаты можно увидеть на главной — внизу.
    Здесь приведен основной список ботов, который необходимо обязательно дополнить.
    Кто владеет списком ботов, делимся ;)
    все умрут, а я изумруд
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 8:56, спустя 3 минуты 44 секунды

    Ассоциативный массив был бы веселее.
    static $engines = Array('rambler' => 'Рамблэр');
    return isSet($engines[$UA]) ? $engines[$UA] : false;


    List of User-Agents (Spiders, Robots, Crawler, Browser)
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:00, спустя 3 минуты 10 секунд

    $engines[$UA]

    если $UA точно совпадает с нашим значением, там у них же разные версии и все такое… поэтому strstr
    все умрут, а я изумруд
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:01, спустя 1 минуту 45 секунд

    пример:
    Yandex/1.01.001 (compatible; Win16; I) или Yahoo-MMCrawler/3.x или Yahoo-MMAudVid/1.0
    все умрут, а я изумруд
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:04, спустя 2 минуты 56 секунд

    Да, согласен.
    Может strIstr() лучше, для регистронезависимого поиска?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:16, спустя 11 минут 57 секунд

    хм, ну да
    но впринципе мы сразу указываем Yandex и AltaVista, поставлю stristr
    все умрут, а я изумруд
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:34, спустя 18 минут 8 секунд

    добавил такой список:

    array('Aport', 'Aport robot'),
    array('Google', 'Google'),
    array('msnbot', 'MSN'),
    array('Rambler', 'Rambler'),
    array('Yahoo', 'Yahoo'),
    array('AbachoBOT', 'AbachoBOT'),
    array('accoona', 'Accoona'),
    array('AcoiRobot', 'AcoiRobot'),
    array('ASPSeek', 'ASPSeek'),
    array('CrocCrawler', 'CrocCrawler'),
    array('Dumbot', 'Dumbot'),
    array('FAST-WebCrawler', 'FAST-WebCrawler'),
    array('GeonaBot', 'GeonaBot'),
    array('Gigabot', 'Gigabot'),
    array('Lycos', 'Lycos spider'),
    array('MSRBOT', 'MSRBOT'),
    array('Scooter', 'Altavista robot'),
    array('AltaVista', 'Altavista robot'),
    array('WebAlta', 'WebAlta'),
    array('IDBot', 'ID-Search Bot'),
    array('eStyle', 'eStyle Bot'),
    array('Mail.Ru', 'Mail.Ru Bot'),
    array('Scrubby', 'Scrubby robot'),
    array('Yandex', 'Yandex')

    фиг знает зачем всякие америконские нужны, ну да ладно, до кучи кинул

    какие ещё русские есть?
    все умрут, а я изумруд
  • kart

    Сообщения: 52 Репутация: N Группа: Кто попало

    Spritz 27 июля 2007 г. 9:41, спустя 6 минут 40 секунд

    какие ещё русские есть?

    ну ещё достаточно популярные mail.ru, gogo.ru, liveinternet.ru
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:49, спустя 7 минут 31 секунду

    имена ботов пожалуйста :)
    все умрут, а я изумруд
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 27 июля 2007 г. 9:50, спустя 1 минуту 36 секунд

    Ботов не отлавливать нужно, их нужно сюда загонять :)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!