Скрипт статистики посещений поисковыми ботами

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

Скрипт написан на PHP (возможна работа как в режиме PHP-как-модуль-Апача, так и в PHP-как-FastCGI), полностью валиден (в рамках соответствия стандартам XHTML11, XHTML1/Strict и CSS/3), имеет гибкую систему настроек и панель настройки ботов.

Скрипт: botstat.zip
Обновление до текущей версии (с версии 1.3.11): botstat_upgrade.zip

Версия: 1.03 (rev.0015)
Последнее обновление: 06.11.2009, 20:43 мск

Список изменений версии 1.03.0015:
• [!] Устранена критическая проблема безопасности.
• [+] Доработан механизм автоматического информирования администратора о наличии новых версий.
• [*] Исправлен баг, в результате которого не фиксировались посещения одним из ботов Rambler‘а.
• [*] Исправлен баг, возникающий при одновременном добавлении 5 ботов в админке.

Список изменений версии 1.03.0011:
• [!] Устранена критическая проблема безопасности.
• [+] Добавлен механизм автоматического информирования администратора о наличии новых версий.
• [+] Усовершенствовано отображение ботов с длинными строками User-Agent.

Список изменений версии 1.02.0008:
• [+] Усовершенствован механизм постраничного разбиения.
• [*] Мелкий багфикс.

Список изменений версии 1.02.0007:
• [+] Добавлено постраничное разбиение в режиме просмотра детального списка посещений выбранным ботом.
• [+] В панели администратора добавлена опция единовременной ручной очистки детализированного лога.

Список изменений версии 1.01.0004:
• [+] Усовершенствована панель администратора: реализована в виде многовкладочного окна, теперь абсолютно все настройки можно редактировать не прибегая к редактированию файлов.
• [*] Множественный мелкий багофикс.

Пример использования (уровень доступа — пользователь): bots.php

Инструкция по установке:

  1. Распакуйте архив в корень вашего сайта
  2. Добавьте следующий фрагмент в файл .htaccess:
    <Files "bot_stat.*">
    Order Allow,Deny
    Deny from All
    </Files>
     
    <Files "bots_*">
    Order Allow,Deny
    Deny from All
    </Files>
     
    <Files "bots.php">
    	<IfModule mod_fastcgi.c>
    	<IfModule mod_rewrite.c>
    		RewriteEngine On
    		RewriteCond %{HTTP:Authorization} !^$
    		RewriteRule ^(.+)\.php$ $1.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]
    	</IfModule>
    	</IfModule>
    </Files>
  3. Добавьте следующий код:
    <?php require_once 'bot_stat.php'; ?>

    в файл, общий для всех страниц Вашего сайта (предпочтительно — в начало файла ‘header.php’)

  4. Настройте права доступа к файлам:
    Оптимистичный вариант: на сервере используется mpm-itk, либо PHP-как-CGI:

    • Установите права 644 на все файлы скрипта

    Чуть менее оптимистичный вариант: есть возможность сменить владельца файлов:

    • Смените владельца всех файлов скрипта на ‘apache’
    • Установите права 644 на все файлы скрипта

    Пессимистичный вариант: возможности ограничены хостером:

    • Установите права 666 на файлы: bot_stat.log, bot_stat.txt, bots_settings.php
    • Установите права 644 на остальные файлы.
  5. Приступим к настройке конфига (файл ‘bots_settings.php’):
    • Админ (имеет право вносить и удалять боты): $admin_login, $admin_password
    • Если $admin_login равен пустой строке, то все имеют уровень доступа администратора (НЕ рекомендуется!)

    • Юзер (имеет право просматривать статистику): $user_login, $user_password
    • Если $user_login равен пустой строке, то все имеют уровень доступа пользователя.

    • $current_lang:
      • auto — автоопределение языка пользователя (Рекомендуется!)
      • en — Английский/международный
      • ru — Русский
      • … — Любой другой, перевод на который Вы сможете осуществить.
    • $current_charset — charset Вашего сайта (по крайней мере в отношении url’ов)
    • $botdetails_reverse — порядок отображения списка URI, посещенных ботами:
      true/false.
    • $botdetails_page_len — количество записей, одновременно выводимых на экран в режиме детализированного отчета о посещениях выбранного бота.

Будущие версии буду выкладывать здесь же.

При обновлении предыдущих версий скрипта, не перезаписывайте файлы: bot_stat.log и bot_stat.txt, а в файле bots_settings.php введите заново логины и пароли.

Обсуждение на форуме: http://usings.ru/forum/viewtopic.php?t=13

admin опубликовано 2009-7-12 Рубрика: PHP | Метки: , , , , ,

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

  1. #1Дмитрий @ 2009-7-23 19:42 Ответ

    Скрипт классный!
    Только у меня почему-то не встал!
    У меня странички в HTML вставил код:

    Захожу на bots.php а там ни одного паука! Обидно!
    Настройки сделал по Пессимистичному варианту

  2. #2nomad @ 2009-7-26 16:59 Ответ

    Полезный скрипт — спасибо. Ставлю и тестю. Был бы баннер на сайте, поблагодарил 🙁

  3. #3defs @ 2009-7-27 16:36 Ответ

    Спасибо, очень нужная штука. Эх, ещё бы иметь статистику с нескольких сайтов в одном месте =) и распаковывать в подпапку ))

  4. #4admin @ 2009-8-6 22:05 Ответ

    Дмитрий: развернутый ответ читайте на серче: http://forum.searchengines.ru/showpost.php?p=5301335&postcount=23

    nomad: баннер изготовим, спасибо.

    defs: это несколько проблематично. Я обдумаю Ваше предложение, хотя испытываю искренние сомнения в необходимости валить статистику с разных сайтов в одну кучу. В качестве альтернативы, я бы предложил Вам поставить скрипт на каждый из сайтов в отдельности, и создать простую HTML-страничку со ссылками на страницы статистики каждого сайта.

  5. #5Hmury @ 2009-8-9 10:10 Ответ

    Спасибо, очень скриптик понравился.
    ***************
    (Блин, прочитал первую свою фразу и понял, что мне такие же в WP пачками спамят 🙂 Поэтому допишу, что закинул чуток WMR в благодарность. Считаю, что такие вещи должны быть малость платными, ибо действительно экономят время тех, кому они нужны)

  6. #6z668 @ 2009-8-9 18:47 Ответ

    Отличный скрипт, автору респект…

  7. #7Kopona @ 2009-8-18 20:33 Ответ

    Скрипт полезный и очень нужный, есть ли возможность прикрутить его к дле?

  8. #8admin @ 2009-8-18 20:48 Ответ

    Kopona: даже уверен, что это очень легко. В пункте 3 инструкции по установке указан общий способ, который наверняка подойдет и здесь.

  9. #9Kopona @ 2009-8-19 17:40 Ответ

    да всё верно, установил по пунктику 3, но стата пустая, поэтому и написал… и то что в вордпрессе завётся header.php в дле main.tpl, может php с tpl не дружат? )) своих мозгов не хватает (:

  10. #10admin @ 2009-8-19 19:18 Ответ

    Да, tpl с php естественно не дружат. Попробуйте вставить код из пункта 3 в самое начало файла /engine/data/config.php.

  11. #11Kopona @ 2009-8-20 00:18 Ответ

    спасибо, чудо свершилось, код поставил в /engine/data/config.php., пошёл сбор статистики ( bot_stat.log — заполняется ) но админка нас опять встречает пустотой.

  12. #12admin @ 2009-8-20 00:50 Ответ

    Проверьте владельца и права на файл bot_stat.txt (должны быть такими же, как и на bot_stat.log), если вы имели в виду главную страницу статистики, а не админку. Если же не работает именно админка, то, пожалуйста, сообщите версию браузера и ОС.

  13. #13Kopona @ 2009-8-20 01:06 Ответ

    не работает сама админка , win xp sp 3 — проверил оперой , мозилкой и IE .
    сами гляньте — доступ к статистике( логин и пасс по умолчанию)

  14. #14Kopona @ 2009-8-20 01:16 Ответ

    админка работает, мой косяк ( bot_stat.txt вообще отсутствовал)) спасибо

  15. имхо — безполезный скрипт, логи ведь никто не отменял

  16. #16admin @ 2009-8-22 18:17 Ответ

    Марычев Александр: ну нет, так нет, не используйте скрипт, читайте логи. 😉
    Кстати, на многих бесплатных хостингах логи апача отключены.

  17. #17fog6670 @ 2009-8-29 20:04 Ответ

    А из за чего такая ошибка пояляется

    Warning: require_once(bot_stat.php) [function.require-once]: failed to open stream: No such file or directory in /home/virtwww/***/http/znakomstva-vorotinsk/index.html on line 7

    Fatal error: require_once() [function.require]: Failed opening required ‘bot_stat.php’ (include_path=’.:’) in /home/virtwww/***/http/znakomstva-vorotinsk/index.html on line 7

  18. #18admin @ 2009-8-29 21:31 Ответ

    fog6670, просто укажите полный путь к файлу bot_stat.php в строке: require_once ‘bot_stat.php’;
    Получится что-то типа:
    require_once ‘/home/virtwww/***/http/znakomstva-vorotinsk/bot_stat.php’;
    Должно помочь.

  19. #19fog6670 @ 2009-8-29 22:29 Ответ

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

  20. #20fog6670 @ 2009-8-29 22:31 Ответ

    админ, скинь на почту аську.есть деловое предложение

  21. #21Calisto @ 2009-10-1 08:00 Ответ

    Вчера все установила админка работает, сегодня смотрю боты или не заходили или …
    логи чистые, подскажите, что не так, может всетаки что-то неправильно сделала… или просто ещё роботов не было… и в файл .htaccess все добавила, но у меня ведь там были записи, как быть? Спасибо

  22. #22Calisto @ 2009-10-1 11:31 Ответ

    Уважаемый admin, ну почему вы удалили мой пост, я подключаю файлы через include, подскажите куда нужно установить код, порядок у меня такой top.inc и bootom.inc

  23. #23admin @ 2009-10-1 21:18 Ответ

    Calisto, во-первых никто ничего не удалял. Просто комментарии в данном блоге проходят премодерацию.
    Во-вторых,пожалуйста, перечитайте предыдущие комменты, а также этот постпродолжение), там уже описывалась подобная проблема и методы ее решения. Также убежден, что дело тут не в .htaccess.

  24. #24Calisto @ 2009-10-2 20:25 Ответ

    Admin, спасибо! Просто вставила код перед тегом и все заработало.

  25. #25Сергей @ 2009-11-11 02:13 Ответ

    Спасибо большое, а то австатс хостером предлагается старый старый, а как его поменять я не разобрался пока. Спасибо, еще раз.

  26. #26Сергей @ 2009-11-11 03:14 Ответ

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

  27. #27admin @ 2009-11-11 03:26 Ответ

    Если количество информации — это суммарный объем (в байтах) ресурсов, отданных сервером по запросам бота, то это проблематично, т.к. в момент выполнения скрипта сервер отдачу еще не произвел. Но я подумаю.

  28. #28Сергей @ 2009-11-11 13:59 Ответ

    посмотрите для примера как это сделано в awstats, если заинтересуетесь

  29. #29Сергей @ 2009-11-14 01:41 Ответ

    Хмм, странно, скрипт работал работал пару дней, всё нравилось. А потом перестал обновляться. Ничего не менял. Такое у кого-нибудь было?

  30. #30Сергей @ 2009-11-14 01:44 Ответ

    Всё, разобрался, сори за панику. Какие новости по проекту то? Когда платная версия или обновление? Расскажите.

  31. #31admin @ 2009-11-14 02:57 Ответ

    Обсуждение тут: http://usings.ru/forum/viewtopic.php?f=6&t=14
    Дата выхода версии пока неопределенная, т.к. очень не хочется выпускать скороспелый и некачественный продукт.

  32. #32Pavlenkora @ 2009-11-26 10:48 Ответ

    Добрый день! Устанавливаю по инструкции ваш скрипт! После добавления в header.php необходимой строки сайт перестает загружаться, в чем может быть проблема?

  33. #33admin @ 2009-11-26 15:27 Ответ

    Pavlenkora, попробуйте указать полный путь к файлу bot_stat.php:
    require_once ‘/home/***/вашдомен/bot_stat.php’;
    Если не помогло, пожалуйста, сообщите текст ошибки.

  34. #34Pavlenkora @ 2009-11-26 15:56 Ответ

    Огромное спасибо, все работает! Предлагаю вам сделать обзор вашего скрипта на http_nulled_ws. Вещь необходимая, уверен вызовет большой интерес как бесплатная так и платная версии. Готов помочь (за вашу отзывчивость) с релизом и отзывами про ваш скрипт на nullede. ICQ 199999504.

  35. #35Аноним @ 2009-12-21 17:19 Ответ

    Поставил код на статический сайт из html страничек. В итоге, поисковые боты, зашедшие на любую страницу — не отображаются в статистике. НО, как только меняю в настройках браузера юзерагент, на юзерагента яндекса из логов сервера «Yandex/1.03.003 (compatible; Win16; D)»,например, сразу же появляется соответствующая запись в статистике. Из-за чего это может быть? В логах сервера нет никаких ошибок.

  36. #36Аноним @ 2009-12-21 18:14 Ответ

    Усё, разобрался ;( По логам смотрел яндекс, но проглядел, что тип запроса был HEAD и соотвественно тело страницы не загружалось, скрипт не выполнялся.

  37. #37Lesh™ @ 2010-1-21 00:07 Ответ

    Здравствуйте, а есть ли возможность вывод на страницу ботов которые находятся онлайн или хотя бы после обнаружения отображался 5 минут…
    Что надо дописать?

    • admin @ 2010-1-21 00:37 Ответ

      Добрый вечер.
      Вам удобнее всего будет парсить файл bot_stat.txt, его формат я даже описывать не буду, ибо он примитивен до вульгарности.
      Чтобы дать N мин боту, читайте первые строки до тех пор, пока не встретите дату, отстоящую от текущей на -N мин. Это и будут записи User-Agent’ов ботов, имевших активность в течение последних N мин. Чтобы преобразовать их в человеческий вид, используйте массив $bot_names (в bots_settings.php).
      Удачи!

  38. #38Saimen @ 2010-2-1 07:04 Ответ

    Здравствуйте, я всё установил по инструкции, но у меня невидно логов, хотя в логах хостинга.. я вижу что яндекс сканирует. А в бот. Логи пустые(

    • admin @ 2010-2-1 16:25 Ответ

      Если логи пустые, значит не выполняется require_once. Назовите движок сайта и в какой файл помещен данный код. Или сайт статический?

  39. #39Saimen @ 2010-2-2 03:01 Ответ

    Спасибо нашёл) Не в тот файлик добавил (((
    Я дабавил в хандер дизайна.. а там tpl .. теперь добавил в файл хандерс.пшп

  40. #40Saimen @ 2010-2-2 08:48 Ответ

    А можно узнать, где и что нужно поменять, если я не в корен сайта кинул, а кинул папку в корень сайт botstat , чтоб в корне всё не валялось. (где пути поменять и т.д.)?

    • admin @ 2010-2-2 13:10 Ответ

      Достаточно только лишь поменять путь в require_once.
      Например так:
      $dirname = dirname(__FILE__) . '/';
      require_once $dirname . 'botstat/bot_stat.php';

  41. #41Дорвейщик @ 2010-2-5 07:32 Ответ

    Здравствуй, Разработчик!
    Обращаюсь по поводу #3 и #4 комментария в данном посте. Вы возьмётесь за реализацию мультидоменной статистики в одном месте? Что-бы скрипт можно было установить на 1.ru и иметь статистику по посещаемости ботов других 100 сайтов к примеру 2.ru, 3.ru, 4.ru и т.д. 😉

    Так-же возможна реализация без PHP что-бы скрипт можно было использовать на Free хостингах у которых нет поддержки PHP?

    Всех вам благ и фарта!
    Жду ответа.

    • admin @ 2010-2-5 13:52 Ответ

      Здравствуйте, Дорвейщик!
      Да, я все еще занимаюсь разработкой многодоменной версии. Однако разработка усложняется тем, что нет универсального решения проблемы межсерверной коммуникации в условиях, что домены находятся на разных хостингах.
      Реализация скрипта без использования какого-либо серверного языка (в частности PHP) — невозможна, т.к. боты не выполняют клиентские скрипты (например javascript)!
      Спасибо.

  42. #42nocriziz @ 2010-2-18 01:43 Ответ

    Здравствуйте! Сколько стоит платная версия скрипта учета ботов?

    • admin @ 2010-2-18 02:41 Ответ

      Доброго времени суток! Платная версия все еще находится в разработке и тестировании.

  43. #43Andrew @ 2010-2-20 12:39 Ответ

    разработчики, пожалуйста, укажите, что для работы скрипта требуется PHP5 !

  44. #44Артем @ 2010-3-13 17:57 Ответ

    А так что не понятно ???? Или Вы имеете ввиду что PHP предыдущих версий не потянут скрипт ???

    P/S/ За скриптег — СПАСИБОООО

  45. #45JIPuBET @ 2010-3-30 17:35 Ответ

    блин Вы мой комент удалили , а я пришол посмотреть чо ответили -_-

  46. #46DrCrash @ 2010-4-3 23:10 Ответ

    Хороший скрипт наверное… Жаль только, что только через php инклюдится :(. Шаблон моего сайта не позволяет так инклюдить 🙁

  47. #47Владимир @ 2010-5-4 20:29 Ответ

    Странно но у меян скрип не запустился (( выдал ошибку 500 ! ((((
    Что бы не дела как только вписываешь в файл .htaccess:

    Order Allow,Deny
    Deny from All

    Order Allow,Deny
    Deny from All

    RewriteEngine On
    RewriteCond %{HTTP:Authorization} !^$
    RewriteRule ^(.+)\.php$ $1.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]

    Все сразу же не работает ((((

  48. #48Владимир @ 2010-5-4 20:41 Ответ

    Все разхобрался )))) спасибо )))

  49. #49Станислав @ 2010-6-18 19:32 Ответ

    В админке почемуто все таблички смещщены и не работают. Что может быть не так??? Заранее спасибо..

  50. #50Станислав @ 2010-6-18 19:41 Ответ

    Opera AC 3.5.2 именно в этом браузере кривится все (что очень странно Опера обычно не глючит) В остальных смотрел все отлично…

Ответить Сергей

Отменить

(Ctrl + Enter)