Серверные логи «на вынос»
Решил потихоньку запускать сайты под популярную нишу. Для мониторинга трафика (боты+юзеры) мне кажется удобным использовать серверные логи (так на фронте нет ни каких футпринтов), не надо устанавливать единый JS-код или наоборот регать счетчик под каждый сайт.
Сайты хостятся на обычных хостингах, так что разбираться как подключать серверные логи и как-то их экспортировать мне пока влом.
Сделал что-то типа серверных логов «на вынос»:
- На клиентах делается просто php-инклуд одного скрипта, который пост-запросом отправляет данные о визите на сервер;
- Сервер принимает данные, чекает ботов на валидность, отправляет данные в базу.
Что собирается:
- Дата-время;
- URL к которому обратились;
- Страна (данные от CF);
- Язык;
- Referer;
- User Agent;
- IP;
Также на сервере происходит валидация ботов Google, Yandexbot, Bing (в два этапа: по диапазонам, если там нет — то через PTR-запись).
Для удобства просмотра сделал читалку этих логов (на скрине).
Зачем?
- Мониторинг активности поисковых ботов;
- Понимание есть или нет трафик на сайте без установки JS-счетчиков;
- Понимание источников трафика (чтобы не гадать потом откуда был трафик);
- Понимание на сколько этот трафик живой, блокировка левых UA/языков/стран
Сами скрипты не выкладываю (вероятно это мало кому надо вообще, да и навайбкодить себе самому недолго, но если кому надо — напишите в комментариях), вдохновлялся изначально этим скриптом — http://usefulscript.ru/log_info.php — он в целом тоже норм.
Нюансы:
В логи пишутся обращения только к тем скриптам, где сделан инклуд. Если хочется видеть обращения к файлам (robots.txt, sitemap.xml, например), то их придется делать исполняемыми. Если нужны логи по несуществующим урлам — то нужно сделать свою страницу-обработчик для ошибок, куда сделать инклуд.
Как сделать robots.txt исполняемым:
robots.php
<?php
header("Content-type: text/plain");
function get_http_response_code($theURL) {
$headers = get_headers($theURL);
return substr($headers[0], 9, 3);
}
?>
User-agent: *
Disallow: /wp-login.php
.htaccess
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^(.*)$ /robots.php [L]
Свои страницы-обработчики ошибок:
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
ErrorDocument 500 /500.php