inlanger
11.02.2009, 11:59
Нужно показывать поисковым бота немного другой контент... Как определить, что посетитель сайт - поисковый бот?
либо по диапазону его IP (имхо это гавно метод) а второй вариант по юзер агенту
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;
}
ет тока набросок и то не мой.. за исключение списка ботов (я его начал делать но не успел проверить все до конца + многих не хватает)
по UserAgent
http://devaka.ru/articles/list-of-search-bots например
if (strstr($user_agent = getenv("HTTP_USER_AGENT");, "Yandex")) $robot = "Яндекс";
По юзер агенту - метод стар как мир, они заходят и под обычным юзер агентом...
Так что лучше делать gethostbyaddr(ip) и смотреть там вхождения на google, yahoo и прочее
inlanger
11.02.2009, 16:15
и смотреть там вхождения на google, yahoo и прочее
а подробнее?
ну что то типа того
<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if(strstr($hostname,'google')){
echo $content1;
}else{
echo $content2;
}
?>
DNS детектирование согласен это более эффективно но и геморройней по ряду причин но если речь идет о клоакинге то игра стоит свечь но не стоит забывать о том что 100% метода определения поискового бота не существует в природе.
я думаю публике стоит знать зачем TC хочет отлавливать ботов.. тогда и можно будет подобрать самый оптимальный метод.
ЗЫ: на самом деле меня тоже волнует этот вопрос.. но мне это требуется только для сбора примерной статистики вот я и машинально предложил палить по юзер агенту
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot