Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как лучше отсеивать поисковых роботов? (https://forum.antichat.xyz/showthread.php?t=105742)

inlanger 11.02.2009 11:59

Как лучше отсеивать поисковых роботов?
 
Нужно показывать поисковым бота немного другой контент... Как определить, что посетитель сайт - поисковый бот?

Trieg 11.02.2009 13:05

либо по диапазону его IP (имхо это гавно метод) а второй вариант по юзер агенту

PHP код:

function SpiderDetect() {
    
$engines = array(
        array(
'Google''Google Bot'),
        array(
'Gsa-crawler''Google Bot'),
        array(
'Yandex''Yandex Bot'),
        array(
'YaDirectBot''Yandex Direct Bot'),
        array(
'Yahoo''Yahoo Bot'),
        array(
'Rambler''Rambler Bot'),
        array(
'msn''MSN Bot'),
        array(
'Gigabot''Giga Bot'),
        array(
'Aport''Aport Bot'),
        array(
'Lycos''Lycos Bot'),
        array(
'FAST-WebCrawler''WebCrawler Bot'),
        array(
'Mail.Ru''Mail.Ru Bot'),
        array(
'IDBot''ID-Search Bot'),
        array(
'eStyle''eStyle Bot'),
        array(
'AbachoBOT''Abacho Bot'),
        array(
'accoona''Accoona Bot'),
        array(
'AcoiRobot''Acoi Bot'),
        array(
'ASPSeek''ASPSeek Bot'),
        array(
'CrocCrawler''CrocCrawler Bot'),
        array(
'Dumbot''Dumbot Bot'),
        array(
'GeonaBot''Geona Bot'),
        array(
'MSRBOT''MSR Bot'),
        array(
'Scooter''Altavista Bot'),
        array(
'AltaVista''Altavista Bot'),
        array(
'WebAlta''WebAlta Bot'),
        array(
'Scrubby''Scrubby Bot'),
        array(
'Slurp''Slurp Bot'),
        array(
'ia_archiver''IA.Archiver Bot'),
        array(
'Baiduspider''Baidu.com'),
        array(
'oBot''oBot'),
        array(
'Speedy Spider''EntireWeb Bot'),
        array(
'Speedy_Spider''EntireWeb Bot'),
        array(
'Teoma''Ask Bot'),
        array(
'Binky''libwww.Binky Bot'),
        array(
'amaya''libwww.amaya Bot'),
        array(
'Webgate''libwww.Webgate Bot'),
        array(
'W3C_Validator''libwww.W3C Validator Bot'),
        array(
'libwww''libwww.nothing Bot'),
        array(
'What You Seek''WhatYouSeek Bot'),
        
////////////////////////////////////////////////////////
        
array('Offline Explorer''Offline Explorer Bot'),
        array(
'Teleport''Teleport Bot'),
    );

    foreach (
$engines as $engine) {
        if (
stristr($_SERVER['HTTP_USER_AGENT'], $engine[0])) {
            return(
$engine[1]);
        }
    }

    return 
false;


ет тока набросок и то не мой.. за исключение списка ботов (я его начал делать но не успел проверить все до конца + многих не хватает)

Sharky 11.02.2009 13:11

по UserAgent

http://devaka.ru/articles/list-of-search-bots например

PHP код:

if (strstr($user_agent getenv("HTTP_USER_AGENT");, "Yandex"))   $robot "Яндекс"


попугай 11.02.2009 16:13

По юзер агенту - метод стар как мир, они заходят и под обычным юзер агентом...

Так что лучше делать gethostbyaddr(ip) и смотреть там вхождения на google, yahoo и прочее

inlanger 11.02.2009 16:15

Цитата:

и смотреть там вхождения на google, yahoo и прочее
а подробнее?

попугай 11.02.2009 16:17

ну что то типа того

<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

if(strstr($hostname,'google')){
echo $content1;
}else{
echo $content2;
}
?>

Trieg 11.02.2009 17:20

DNS детектирование согласен это более эффективно но и геморройней по ряду причин но если речь идет о клоакинге то игра стоит свечь но не стоит забывать о том что 100% метода определения поискового бота не существует в природе.

я думаю публике стоит знать зачем TC хочет отлавливать ботов.. тогда и можно будет подобрать самый оптимальный метод.

ЗЫ: на самом деле меня тоже волнует этот вопрос.. но мне это требуется только для сбора примерной статистики вот я и машинально предложил палить по юзер агенту


Время: 22:48