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

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

Скрипт написан на 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 | Метки: , , , , ,

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

  1. #1admin @ 2010-6-18 20:17 Ответ

    В Opera AC не проверял. Проверял в IE 7+, FF 1/3, Opera 9/10, Chrome — все прекрасно отображается. Вывод: это баг сборки Opera AC, скорее всего.

  2. #2Станислав @ 2010-6-18 20:43 Ответ

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

  3. #3Топ-10 @ 2010-7-1 15:02 Ответ

    Офигительный скрипт. В связи с последними завихрениями яндекса очень полезно смотреть когда этот долбаный бот, что индексирует

  4. #4Станислав @ 2010-7-22 22:50 Ответ

    Дмитрий модуль просто изумительный, жаль на мели сейчас :-(, но это временно… У меня тут идея созрела небольшая, но релизовать не смогу (учусь только… 😀 ) Суть…
    Сделать вывод строки посещения ботов онлайн, чтобы ее можно было интегрировать на сайт. Например гдето маленькое окно и в нем информация следующая. «Сейчас на сайте 3 бота» То есть те что в режиме онлайн.

    • admin @ 2010-7-22 23:14 Ответ

      А причем здесь «на мели». Скрипт имеет free-версию. Платная готова, но пока под нее только страница оформляется.
      Что касается вашего пожелания — это запросто. А что посоветуете считать в качестве «сейчас»? Интервал времени минут в 10?

  5. #5Ginom @ 2010-9-9 23:10 Ответ

    Пытался поднять под iis 7.5// скрипт даже страницу нормально не генерит.

  6. #6Хос @ 2010-9-10 17:06 Ответ

    Скрипт МЕГА зачет! Автору респект! Тут появился такой вопрос: Как настроить текущую дату и время? Дата отображается нормально, а вот время нет.

    • admin @ 2010-9-10 18:11 Ответ

      Самое простое — вставьте в файл bot_stat.php в 5 строку, т.е. перед строкой $IS_BOT = true; следующую строку:
      @date_default_timezone_set('Europe/Moscow');Вместо «Europe/Moscow» поставьте место, где находится ваш сервер, если он не в Москве.
      Тогда новые записи будут в правильном времени.

  7. #7Хос @ 2010-9-11 06:53 Ответ

    С часами вроде разобрался, вот только разницу в 20 минут никак победить не могу((

  8. #8Хос @ 2010-9-11 15:24 Ответ

    Победил… Оказалось косяк был на самом сервере.

  9. #9Владимир @ 2010-9-19 03:58 Ответ

    Не могу понять что у меня с руками !!! (((
    Скипт запускается показывает что ботов 0 уже месяцей 5-6 (бред)
    при нажатие на «Панель администратора >>» выходит белый экран по ссылке «http://www.******.ru/bots.php?admin=1» и все !
    Это нормально ???
    Большое спасибо за ответ !

  10. #10Прохожий @ 2010-10-14 21:47 Ответ

    Здравствуйте! Что делать, если файл .htaccess не поддерживается сервером?

    • admin @ 2010-10-14 21:58 Ответ

      Добрый вечер. Тогда ставьте без него, но это потенциальная брешь в безопасности.

  11. #11Михаил @ 2010-11-19 16:12 Ответ

    «Скипт запускается показывает что ботов 0 уже месяцей 5-6» — для проверки скрипта воспользуйтесь бесплатной программой Henu home.snafu.de/tilman/xenulink.html она просканирует ваш сайт и отметится на страничке скрипта как бот.
    И столько месяцев ждать не надо. А заодно проверит внутренние ссылки сайта.

  12. #12Vit @ 2010-11-27 16:38 Ответ

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

    • admin @ 2010-11-28 02:48 Ответ

      Это зависит от посещаемости ботами, разумеется.
      В среднем — приблизительно 120 байт на 1 запись. 1 запись — это запись о посещении ботом одной страницы (сюда не попадают запросы статики и т.д.).
      На данном сайте — это примерно 50000-70000 запросов (или 6-10 Мбайт) в год.

  13. #13Сергей @ 2010-11-28 12:52 Ответ

    Интересный скрипт. Спасибо, скачал, установил.

  14. #14Эдуард @ 2010-12-30 16:22 Ответ

    а куда именно в файл, общий для всех страниц Вашего сайта можно поподробней с примером.

  15. #15Alexey @ 2011-1-7 18:00 Ответ

    Долго искал нечто подобное и вот наконец-то нашел…
    Огромное спасибо!!!

  16. #16Евгений @ 2011-1-25 13:56 Ответ

    Здравствуйте. Запуская скрипт, не правильно отображается кодировка, и выдаёт множество ошибок, как пример:
    Notice: Undefined index: admin in /var/www/html/bots.php on line 63

    Notice: Undefined index: admin in /var/www/html/bots.php on line 213

    • admin @ 2011-1-25 16:09 Ответ

      Это не ошибки, это — notice’ы. Любой скрипт выдает их пачками, если это указано в настройках php.
      Чтобы избавиться от них, добавьте строку в начало кода bots.php: error_reporting(E_ERROR);

  17. #17Евгений @ 2011-1-25 14:35 Ответ

    Как узнать, всё ли правильно сделано. В данный момент, не видно чтоб, как-то робот нас обходил.

    • admin @ 2011-1-25 16:11 Ответ

      Прверьте, существуют ли файлы bot_stat.log и bot_stat.txt, и права на запись в них для пользователя, под кем работает apache.
      Если все верно, натравите гугл на ваш сайт. В интрументах для вебмастера в гугле есть функция «Просмотреть как Googlebot».

  18. #18Евгений @ 2011-1-25 17:47 Ответ

    Всё сделал, как Вы описали, права даже 777 выдавал, не хочет роботов показывать(
    Через гугл несколько раз запросы делал

    • admin @ 2011-1-25 17:56 Ответ

      Убедитесь, что скрипт вообще вызывается, т.е. что в php-код, общий для всех страниц сайта, вставлена строка php require_once 'bot_stat.php';
      Если так и не найдете ошибки, скиньте доступ на admin{a}usings.ru, посмотрю сам.

  19. #19Евгений @ 2011-1-25 17:59 Ответ

    Могли бы Вы прочесть ЛС на Вашем форуме.

  20. #20Станислав @ 2011-2-16 21:28 Ответ

    «Что касается вашего пожелания – это запросто. А что посоветуете считать в качестве «сейчас»? Интервал времени минут в 10?»

    Думаю 10 минут маловато скорее всего 15-20 минут выставить будет то что нужно.
    Если конечно есть время и желание реализовать такую опцию. Очень удобно когда показывает сколько гостей скажем на сайте и сколько ботов. Если имя бота прописано, то это было бы верх мечтаний.

  21. #21TEJlO @ 2011-4-13 21:06 Ответ

    Как установить эту статистику на VDS ? На обычном хостинге все норм работало на VDS не хочет

    • admin @ 2011-4-13 21:16 Ответ

      Не имеет значения, ВДС или нет. Смотрите логи на предмет ошибок.

  22. #22Ярослав @ 2011-7-10 13:08 Ответ

    Добрый день,
    попробовал установить скрипт по вашей инструкции, однако столкнулся с проблемой: при входе в скрипт по адресу http://адрес сайта/bots.php выскакивает форма запроса логина и пароля. после ввода логина и пароля ничего не происходит, т.к. опять выскакивает эта же форма. Пробовал как пароль, который ввел самостоятельно в файл bots_settings.php, так и пароль, который был там изначально.

    Подскажите, пожалуйста, что я делаю некорректно.
    использую хостинг с поддержкой CGI, MySQL, SSI, Perl, PHP, Python, crontab, htaccess, phpMyAdmin;

    Заранее благодарю за ответ и помощь

    • admin @ 2011-7-11 14:32 Ответ

      :Добрый день. Логин вводите точный (с маленькой буквы)?

  23. #23seolamo @ 2011-8-28 23:03 Ответ

    Здравствуйте! Платная версия с поддержкой сбора статистики по нескольким доменам продается? Или по-прежнему только лайт?

    • admin @ 2011-8-29 01:07 Ответ

      К сожалению, пока нет.

  24. #24Вадим @ 2011-9-15 08:40 Ответ

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

    • admin @ 2011-9-15 16:16 Ответ

      Это не проблема, напишите простой скрипт, который будет читать первые несколько строк из файла bot_stat.txt.
      Вот пример: bot_online.phps

  25. #25Геннадий @ 2011-11-9 04:27 Ответ

    Добрый день! Очень хочеться воспользоваться вашим скрипном, но проблема та же что и у

    «Владимир @ 2010-9-19 03:58» при нажатии на «Панель администратора >>» выходит белый экран по ссылке «http://www.******.ru/bots.php?admin=1″ и все !

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

    • admin @ 2011-11-22 22:02 Ответ

      Что при этом в логах апача?
      Да, кстати, а что такое xenu?

  26. #26Андрей @ 2011-12-20 12:54 Ответ

    Добрый день! Есть ряд предложений по развитию вашего скрипта. Считаю, что однозначно нужна платная расширенная версия. Готов обсудить в скайпе. Свяжитесь со мной. Также готов оказать свою финансовую поддержку.

  27. #27Виталий @ 2012-8-17 13:17 Ответ

    Приветствую, за скрипт огромное спасибо.
    Возникла следующая проблема: Время посещения бота отличается от текущего времени по Москве на 4 часа. Тоесть в Москве 13.00, а отображается 9.00
    Подскажите как исправить.
    С уважением, Виталий.

    • admin @ 2012-8-17 16:07 Ответ

      В комментариях тут уже был такой вопрос. Вот, что я тогда ответил:

      admin @ 2010-9-10 18:11

      Самое простое — вставьте в файл bot_stat.php в 5 строку, т.е. перед строкой $IS_BOT = true; следующую строку:
      @date_default_timezone_set(‘Europe/Moscow’);Вместо «Europe/Moscow» поставьте место, где находится ваш сервер, если он не в Москве.
      Тогда новые записи будут в правильном времени.

  28. #28Oleg @ 2013-1-9 23:15 Ответ

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

  29. #29Александр @ 2014-5-7 11:42 Ответ

    Здравствуйте! Уже несколько лет пользую данный скрипт. Столкнулся с такой проблемой, что периодически обнуляется bot_stat.txt. В чем может быть проблема?

    • admin @ 2014-5-7 11:56 Ответ

      Добрый день. Понятия не имею. Никогда такого не наблюдалось.

  30. #30Сергей @ 2014-5-9 12:00 Ответ

    Здравствуйте!

    В админке отображается следующая ошибка, как вылечить ?

    Текущие дата и время:
    Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Moscow’ for ‘MSK/4.0/no DST’ instead in /home/cp251618/public_html/***.ru/bots.php on line 514
    2014-05-13, 11:59:15

    • admin @ 2014-5-14 16:14 Ответ

      Добрый день. Добавьте в начало тела скрипта (после тэга <?php) строки:
      error_reporting(E_ERROR);
      ini_set('display_errors', 1);

  31. Ранее этот скрипт работал отлично, но сейчас почему то не выводит ботов. Хотя точно знаю что они заходили (через Яндекс проверку). Что может быть?

  32. Заработало, подключив инклудом: {include file=»bot_stat.php»}

  33. #33Dimanao @ 2016-12-6 13:17 Ответ

    Супер скрипт!! А можно как-то сделать, чтобы показывал скрипт и всех пользователей зашедших??

    • admin @ 2016-12-6 16:49 Ответ

      Можно, конечно. Но чем это будет отличаться от логов того же апача?

Ответить

(Ctrl + Enter)