PHP / MySQL - массив фильтров для ботов - PullRequest
1 голос
/ 09 июля 2009

Я делаю счетчик ударов. У меня есть база данных, и я храню IP и $_SERVER['HTTP_USER_AGENT']; посетителей. Теперь мне нужно добавить фильтр, чтобы я мог убрать попадания ботов. Я обнаружил, что многие боты обычно хранят некоторые общие слова в $_SERVER['HTTP_USER_AGENT'];, поэтому я хотел бы создать и массив слов, которые бы мешали боту отображаться в результатах.

Вот что у меня сейчас:

while($row = mysql_fetch_array($yesterday, MYSQL_ASSOC)) {

<- Здесь мне нужен код, который будет проходить через массив и проверять, если он содержит ключевые слова, а если нет ... просто считать ++; ->

    }

Также, если вы знаете какой-либо другой способ обнаружения и удаления ботов из результатов, я был бы очень благодарен. Приветствия

Ответы [ 4 ]

7 голосов
/ 02 января 2011

Использование списка Димитра Кристоффа закончилось этим сценарием:

function isBot($user_agent){
    $bots = array('bingbot', 'msn', 'abacho', 'abcdatos', 'abcsearch', 'acoon', 'adsarobot', 'aesop', 'ah-ha',
            'alkalinebot', 'almaden', 'altavista', 'antibot', 'anzwerscrawl', 'aol', 'search', 'appie', 'arachnoidea',
            'araneo', 'architext', 'ariadne', 'arianna', 'ask', 'jeeves', 'aspseek', 'asterias', 'astraspider', 'atomz',
            'augurfind', 'backrub', 'baiduspider', 'bannana_bot', 'bbot', 'bdcindexer', 'blindekuh', 'boitho', 'boito',
            'borg-bot', 'bsdseek', 'christcrawler', 'computer_and_automation_research_institute_crawler', 'coolbot',
            'cosmos', 'crawler', 'crawler@fast', 'crawlerboy', 'cruiser', 'cusco', 'cyveillance', 'deepindex', 'denmex',
            'dittospyder', 'docomo', 'dogpile', 'dtsearch', 'elfinbot', 'entire', 'web', 'esismartspider', 'exalead',
            'excite', 'ezresult', 'fast', 'fast-webcrawler', 'fdse', 'felix', 'fido', 'findwhat', 'finnish', 'firefly',
            'firstgov', 'fluffy', 'freecrawl', 'frooglebot', 'galaxy', 'gaisbot', 'geckobot', 'gencrawler', 'geobot',
            'gigabot', 'girafa', 'goclick', 'goliat', 'googlebot', 'griffon', 'gromit', 'grub-client', 'gulliver',
            'gulper', 'henrythemiragorobot', 'hometown', 'hotbot', 'htdig', 'hubater', 'ia_archiver', 'ibm_planetwide',
            'iitrovatore-setaccio', 'incywincy', 'incrawler', 'indy', 'infonavirobot', 'infoseek', 'ingrid', 'inspectorwww',
            'intelliseek', 'internetseer', 'ip3000.com-crawler', 'iron33', 'jcrawler', 'jeeves', 'jubii', 'kanoodle',
            'kapito', 'kit_fireball', 'kit-fireball', 'ko_yappo_robot', 'kototoi', 'lachesis', 'larbin', 'legs',
            'linkwalker', 'lnspiderguy', 'look.com', 'lycos', 'mantraagent', 'markwatch', 'maxbot', 'mercator', 'merzscope',
            'meshexplorer', 'metacrawler', 'mirago', 'mnogosearch', 'moget', 'motor', 'muscatferret', 'nameprotect',
            'nationaldirectory', 'naverrobot', 'nazilla', 'ncsa', 'beta', 'netnose', 'netresearchserver', 'ng/1.0',
            'northerlights', 'npbot', 'nttdirectory_robot', 'nutchorg', 'nzexplorer', 'odp', 'openbot', 'openfind',
            'osis-project', 'overture', 'perlcrawler', 'phpdig', 'pjspide', 'polybot', 'pompos', 'poppi', 'portalb',
            'psbot', 'quepasacreep', 'rabot', 'raven', 'rhcs', 'robi', 'robocrawl', 'robozilla', 'roverbot', 'scooter',
            'scrubby', 'search.ch', 'search.com.ua', 'searchfeed', 'searchspider', 'searchuk', 'seventwentyfour',
            'sidewinder', 'sightquestbot', 'skymob', 'sleek', 'slider_search', 'slurp', 'solbot', 'speedfind', 'speedy',
            'spida', 'spider_monkey', 'spiderku', 'stackrambler', 'steeler', 'suchbot', 'suchknecht.at-robot', 'suntek',
            'szukacz', 'surferf3', 'surfnomore', 'surveybot', 'suzuran', 'synobot', 'tarantula', 'teomaagent', 'teradex',
            't-h-u-n-d-e-r-s-t-o-n-e', 'tigersuche', 'topiclink', 'toutatis', 'tracerlock', 'turnitinbot', 'tutorgig',
            'uaportal', 'uasearch.kiev.ua', 'uksearcher', 'ultraseek', 'unitek', 'vagabondo', 'verygoodsearch', 'vivisimo',
            'voilabot', 'voyager', 'vscooter', 'w3index', 'w3c_validator', 'wapspider', 'wdg_validator', 'webcrawler',
            'webmasterresourcesdirectory', 'webmoose', 'websearchbench', 'webspinne', 'whatuseek', 'whizbanglab', 'winona',
            'wire', 'wotbox', 'wscbot', 'www.webwombat.com.au', 'xenu', 'link', 'sleuth', 'xyro', 'yahoobot', 'yahoo!',
            'slurp', 'yandex', 'yellopet-spider', 'zao/0', 'zealbot', 'zippy', 'zyborg', 'mediapartners-google'
                );
    $user_agent = strtolower($user_agent);
    foreach($bots as $bot){
        if(strpos($user_agent, $bot) === true){
            return true;
        }
    }
    return false;
}
1 голос
/ 08 февраля 2013

А почему бы и нет?

$bots=array('google', 'bing', 'yahoo', 'bot', 'crawler', 'baiduspider');
if(!preg_match('/('.join('|', $bots).')/is', $_SERVER['HTTP_USER_AGENT'])){
  //record to db code
}
1 голос
/ 09 июля 2009

Перебрать массив слов с помощью foreach и проверить, существует ли текущее слово в строке UA, с помощью strpos () :

foreach ($words as $word) {
    if (strpos($row['user_agent'], $word) !== FALSE) {
        // word exists in string
    }
}
0 голосов
/ 09 июля 2009

Существуют определенные системы, которые пытаются поддерживать полу-текущую БД известных строк ботов, например CubeCart и oscommerce. они делают это для того, чтобы иметь булеву функцию, которая фильтрует пользователя от бота в режиме реального времени путем сравнения строк строки агента пользователя с файлом spiders.txt. после обнаружения бота они отключают корзину покупок, функциональность входа в систему и т. д.

вот последнее содержимое spiders.txt:

АБАЧО abcdatos abcsearch acoon adsarobot Эзоп ах-ха alkalinebot Алмаден Altavista AntiBot anzwerscrawl поиск aol Appie arachnoidea araneo Architext Ариадна Арианна спроси дживса aspseek Asterias astraspider Atomz augurfind BackRub baiduspider bannana_bot bbot bdcindexer blindekuh boitho Бойто Борг-бот bsdseek christcrawler computer_and_automation_research_institute_crawler coolbot космос гусеничный трактор Гусеничный @ быстро crawlerboy крейсер Cusco Cyveillance deepindex denmex dittospyder DoCoMo Dogpile DtSearch elfinbot вся сеть esismartspider Exalead возбуждать ezresult быстро быстро WebCrawler fdse Феликс Фидо найти то, что финский язык Светляк firstgov пушистый freecrawl frooglebot галактика gaisbot geckobot gencrawler geobot gigabot Girafa GoClick Голиаф Googlebot грифон Громит личинка-клиент Гулливер gulper henrythemiragorobot родной город HotBot htdig hubater ia_archiver ibm_planetwide iitrovatore-setaccio incywincy incrawler инди infonavirobot Infoseek Ingrid inspectorwww IntelliSeek internetseer ip3000.com-гусеничного iron33 jcrawler Дживс jubii Kanoodle kapito kit_fireball Комплект-огненный шар ko_yappo_robot kototoi Lachesis larbin ноги linkwalker lnspiderguy look.com Lycos mantraagent markwatch maxbot Меркатора merzscope meshexplorer MetaCrawler mirago mnogosearch могет двигатель muscatferret nameprotect nationaldirectory naverrobot nazilla бета-версия netnose netresearchserver нг / 1,0 northerlights npbot nttdirectory_robot nutchorg nzexplorer ODP openbot OpenFind Озис-проект увертюра perlcrawler phpdig pjspide polybot pompos Поппи portalb psbot quepasacreep RABOT вороной СОРЗ Роби robocrawl robozilla Roverbot самокат низкорослый search.ch search.com.ua searchfeed searchspider searchuk seventwentyfour удар сбоку sightquestbot skymob гладкий slider_search чавкать solbot speedfind быстрый СПИДА spider_monkey spiderku stackrambler Steeler suchbot suchknecht.at-робот Suntek szukacz surferf3 surfnomore surveybot Suzuran synobot тарантул teomaagent teradex т-ч-у-н-д-д-р-с-т-о-н-е tigersuche topiclink Тоутатиса tracerlock turnitinbot tutorgig uaportal uasearch.kiev.ua uksearcher Ultraseek Unitek Vagabondo verygoodsearch Vivisimo voilabot мореплаватель vscooter w3index w3c_validator wapspider wdg_validator WebCrawler webmasterresourcesdirectory webmoose websearchbench webspinne whatuseek whizbanglab Вайнона провод wotbox wscbot www.webwombat.com.au Xenu Link Sleuth xyro yahoobot Yahoo! чавкать Яндексу yellopet-паук зао / 0 zealbot проворный zyborg

до тех пор, пока вы не делаете маскировку, как это , все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...