Spider Trap: ловим пауков

Spider Trap Вы когда-нибудь задавались вопросом: что делают поисковые роботы на Вашем сайте, какие страницы они просматривают, когда они это делают?

Этот скрипт, состоящий из трёх файлов, отследит их всех и соберет статистику по каждому.

Принцип работы Spider Trap очень прост: на «входной контур» подключается ловушка. При запросе каких-либо ресурсов сайта «crawler» поисковой системы запускает механизм логирования. В результате в файл лога пишется UserAgent паука, IP адрес, список запрошенных им ресурсов и время обращения.

  • Скрипт умеет отсеивать пользователей от ботов.
  • Через пользовательский интерфейс можно подробно рассматривать логи.
  • На каждый день создаётся отдельный лог-файл.
  • Работает абсолютно прозрачно и не вызывает нагрузки.
  • Механизм ловушки полностью автономен от логики анализа логов.

Установка и Конфигурация

  1. Загрузить содержимое архива в папку trap.
  2. Установить права доступа на index.php и trap.css 775
  3. На все остальные файлы 644
  4. Подключить trap.php с помощью require_once функции в начало исполняемого файла движка.

Точка подключения будет варьироваться от особенностей устройства вашей CMS. Например, для Drupal оптимальным вариантом будет подключение ловушки в начале файла common.inc в папке includes.

require_once './trap/trap.php';

Для Data Life Engine будет достаточно подключить trap.php в начале index.php.

Обращайте внимание на путь к файлу trap.php. В большинстве случаев будет достаточно указать относительный путь от корня, но для некоторых CMS или при достаточной вложенности исполняемых фалов потребуется указать абсолютный путь относительно сервера.

Не удаляйте и не изменяйте файл spiders.trap! Он нужен для логирования

 

Список роботов поисковых систем и сервисов

#список роботов
$spiders['Google']	 = 'Googlebot';
$spiders['Yandex']	 = 'Yandex';
$spiders['Rambler']	 = 'StackRambler';
$spiders['MSN']	 = 'msnbot/';
$spiders['Yahoo!']	 = 'Yahoo! Slurp';
$spiders['WordPress']	 = 'WordPress/';
$spiders['Twiceler']	 = 'Twiceler';
$spiders['iGde']	 = 'igdeSpyder';
$spiders['Baidu']	 = 'Baiduspider+';
$spiders['Majestic-12 ']	= 'MJ12bot/';
$spiders['W3C-VR']	 = 'Validator';
$spiders['Alexa']	 = 'ia_archiver';
$spiders['W3 Sitesearch']	= 'W3 SiteSearch Crawler';
$spiders['MSNbot Media']	= 'msnbot-media/';
$spiders['Google AdsBot']	= 'AdsBot-Google';
$spiders['Aport']	 = 'Aport';
$spiders['Google Adsense']	= 'Mediapartners-Google';
$spiders['Yandex.Direct']	= 'Direct/2.01.000';
$spiders['Yanga']	 = 'Yanga WorldSearch';
$spiders['Tele-House']	 = 'Dolphin/';
$spiders['NetCraft']	 = 'NetcraftSurveyAgent/';
$spiders['BlogPulse']	 = 'BlogPulse';
$spiders['Boomerang']	 = 'Boomerang/';
$spiders['Tagoo']	 = 'Tagoobot';
$spiders['Ovale']	 = 'ovalebot';
$spiders['FollowSite']	 = 'FollowSite Bot';
$spiders['OMG Crawler']	 = 'OMGCrawler';
$spiders['Huasai']	 = 'Huasai/';
$spiders['DobroBot']	 = 'DobroBot';
$spiders['PostRank']	 = 'PostRank/';
$spiders['FriendFeed']	 = 'FriendFeedBot/';
$spiders['Amazon']	 = 'bitlybot';
$spiders['Worio']	 = 'woriobot';
$spiders['Twingly']	 = 'Twingly Recon';
$spiders['OozBot']	 = 'OOZBOT/';
$spiders['Snap Shots']	 = 'Snapbot/';
$spiders['GoldenSpider']	= 'GoldenSpider/';
$spiders['Libra [China]']	= 'librabot/';
$spiders['Youdao']	 = 'YoudaoBot/';
$spiders['BlogScope']	 = 'BlogScope/';
$spiders['AOL'] = 'Slurp';
$spiders['Ask'] = 'Teoma';
$spiders['Alta Vista'] = 'Scooter';
$spiders['Mail.Ru']	 = 'Mail.Ru';
$spiders['Web Alta'] = 'WebAlta';
$spiders['Web Alta'] = 'WebAlta Crawler/2.0';
$spiders['BaiDuSpider'] = 'BaiDuSpider';
$spiders['Google image']	= 'Googlebot-Image/';
$spiders['Google M.P.'] = 'Mediapartners-Google/';
$spiders['Openbot'] = 'Openbot/';
$spiders['Robozilla'] = 'Robozilla/';
$spiders['SiteXpert'] = 'SiteXpert';
$spiders['Nigma Spider']	= 'Nigma';
 
$spiders['Drupalogy.ru']	= 'Drupalogy';
$spiders['GoGo Searcher']	= 'GoGo';
$spiders['Sapient Solution']	= 'SAPE.BOT';
$spiders['Cyber Analytic']	= 'Cys';
$spiders['Yandex Direct']	= 'YaDirectBot/';
$spiders['Drupal.org']	 = 'Drupal';
$spiders['Bastard']	 = 'http://xn--90acjmnnc1hybf.su';
$spiders['Site-Perf.com']	= 'Site-Perf.com';
$spiders['Spider(?)']	 = 'Spider';
$spiders['PDS Checker']	 = 'Parking Domains Status Checker v0.2';
$spiders['PycURL']	 = 'PycURL/';
$spiders['JS-Kit']	 = 'JS-Kit URL Resolver';
$spiders['Twitter']	 = 'Twitterbot/';
$spiders['Meta Data Labs']	= 'MLBot';
$spiders['ArtViper (?)']	= 'artviper(tm)';
$spiders['Ichiro (?)']	 = 'ichiro';

Скачать Spider Trap

Виталька

А на Юкоз что-нибудь подобное пришпандорить можно?

shift-web

Смысл? )))

LEXASOFT

А можно сделать так чтобы логи просматривать по датам?

shift-web

На каждый день свой файлик с логом(имя файла содержит дату). Посмотрите в директории с логами

LEXASOFT

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

shift-web

Ну не знаю ... Мне кажется лишнее...

Там два файла с логами. Один на дату, а второй общий: в него пишутся все последние визиты. Кто когда в последний раз заходил как раз и видно а в корне.

LEXASOFT

Хм, тогда зачем столько логов создавать если их не просмотришь через вэб.

shift-web

По мне так удобнее было.

Бомж из Южного Тушина

Скажите, а есть ли возможность не вставлять скрипт в инклюды, а сделать, например, где-то незаметную ссылку на страницу, которую пользователи просто не увидят, а вот боты - найдут?

И смотреть кто туда заходит - тогда можно будет отслеживать даже тех ботов, которых нет в списке.

shift-web

Текущая реализация врят-ли это позволяет сделать. Боты не всегда ходят по ссылкам и встает необходимость делать на каждую страницу. Смысл?

Чтобы добавить, тех которые нет можно воспользоваться гуглом, айпи посмотреть, «юа» и т.д. т.е. информация по ним всё равно отображается достаточно корректно и ошибки с отделением людей минимальны.

Max

Спасибо. Может быть пристрою к сайту, пока обхожусь простеньким сниффером.

<?PHP
$gr = gmdate("U", time()); 
$date = date ("d.m.Y [G:i:s]", $gr + 2*3600);
$ip = $_SERVER['REMOTE_ADDR'];
$H=getenv("HTTP_REFERER");
$kuda=getenv("REQUEST_URI");
while (ereg('%([0-9A-F]{2})',$H)){
$val=ereg_replace('.*%([0-9A-F]{2}).*','\1',$H); 
$newval=chr(hexdec($val));
$H=str_replace('%'.$val,$newval,$H); 
}
$Win1251=iconv("UTF-8","WINDOWS-1251",$UTF8);
$fp=fopen("logsniff.txt","a");
fputs($fp,"$date\t$ip\t$H\t$kuda\n");
fclose($fp);
?>

Наверно стоит срастить, роботов в одну тарелку, посетителей в другую.

shift-web

Max# пишет:

Спасибо. Может быть пристрою к сайту, пока обхожусь простеньким сниффером.

Наверно стоит срастить, роботов в одну тарелку, посетителей в другую.

Ну да. Удобнее отслеживать. Вообще нужно будет переделать чутка, спасибо за ваш сниффер, но он деприкэйтэд. Ереги - зло

Отправить комментарий