Вопрос по arrays, php, function, mysql – PHP / MySQL - массив фильтров для ботов

1

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

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

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

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

    }

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

Другой способ сделать это - отфильтровать результаты с помощью SQL, так что вам не нужно выполнять какую-либо фильтрацию в вашем коде. Вам нужно проверить производительность rojoca

Ваш Ответ

4   ответа
0

которые пытаются поддерживать полу-текущие БД с известными строками ботов, такие как 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

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

1

foreach и проверьте, существует ли текущее слово в строке UA, используяStrPos ():

foreach ($words as $word) {
    if (strpos($row['user_agent'], $word) !== FALSE) {
        // word exists in string
    }
}
7

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', '[email protected]', '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;
}
@ yes123, спасибо, что заметили. Вы можете предложить больше ботов, я отредактирую сообщение.
кто сделал этот ужасный список? один из самых популярных ботов здесь: mediapartners-google, aka adsense и другие тоже
Короткие общие строки, такие как'aol', 'web', 'link', 'msn', 'beta', 'motor' вероятно не безопасно для фильтрации ботов. Слова, которые с другой стороны безопасны для фильтрации,'bot', 'spider', 'crawl' что делает по крайней мере половину записей в списке ненужными.
1

$bots=array('google', 'bing', 'yahoo', 'bot', 'crawler', 'baiduspider');
if(!preg_match('/('.join('|', $bots).')/is', $_SERVER['HTTP_USER_AGENT'])){
  //record to db code
}
google, bing, yahoo не является необходимым в списке, потому что они будут нацеленыbot, Я бы порекомендовал изменитьcrawler вcrawl а такжеbaiduspider вspider также.

Похожие вопросы