Началось всё как обычно — с подозрений. Уж больно много людей приходит на мои сайты, которые скачивают дистрибутивы приложений по прямым ссылкам без рефереров. Как-то странно это, правда? Не могут же быть так популярны блокировщики ссылок. Я замечал некоторые адреса и пользователи обычно приходили опять скачивать без ссылки. Часто другую программу — никак не относящуюся к первой. Дальше пошли в ход проверки, что да как в логах. Оказалось, что абсолютное большинство таких заходов — странные пользователи, которые имеют пустые HTTP_ACCEPT_ENCODING и HTTP_ACCEPT_LANGUAGE. HTTP_USER_AGENT иногда указывает на Java, JavaScript, Wget, Perl, PHP и так далее, но большинство обычные строки браузеров. Все более-менее приличные поисковики у меня давно учитываются и это, конечно, не они.
Дальше стало ещё интереснее — что же это такое. То есть понятно, что это роботы, но зачем? Зачем приходить раз в день — два — неделю и перекачивать все дистрибутивы совершенно разных направленностей? Даже минимального ответа пока не было. Но после долго просмотра логов стал замечать, что часто бывают почти одинаковые IP — то есть с одной подсети и потому сортировка по количеству хитов с одного IP ничего интересного не показывает кроме клинических случаев. Пришлось искать лог анализатор с возможностью группировки по подсетям. И ничего сходу не найдя я, как обычно, написал свой велосипед.
И что я нашёл интересного? Ну не очень много интересного и к сожалению 90% роботов — никак не идентифицируются. Много ходит всяких секюрити контор, которые проверяют веб страницы (и само собой файлы) на безопасность для своих антивирусных продуктов (касперский, симантек, инфосек, инфоватч, битдефендер...) — но эти далеко не главные, они заметны лишь периодичностью. Самое большое число роботов в сетях французского облачного провайдера OVH, в азиатских подсетях Amazon, само-собой в HETZNERе, просто где-то в Китае, в облаке Digital ocean и всё больше в Alibaba cloud. Зачем — я так и не понял. Но понятно почему многие в облаках — ведь входящий трафик там бесплатный. А Amazon, например, так и заявляет — приходите к нам и запускайте веб роботов. Так же много искателей дыр в популярных CMS. Запросы к wp-login.php у меня уже за тысячу в день бывают. Запрашивающих его, кстати, можно сразу в роботы записывать.
Возникает вопрос, что с ними делать? Ну можно ничего не делать. Трафик нынче дёшев, сервера тоже. А можно заблокировать прям подсетями — живых посетителей оттуда всё равно увидеть практически нереально. Да и исходящий трафик в облаках платный, хоть и копеечный. И что самое главное для меня — они портят статистику, которую тяжелее анализировать из-за них.
В общем, выкладываю анализатор логов который собирает статистику по подсетям — вдруг у кого-то получится найти что-то более интересное. Я ответов так и не нашёл.
Вот исходники анализатора (С++, STL). Не надо пугаться, что оно под Windows — ядро анализатора отвязано от интерфейса и там даже два типа проекта — консольный вариант и с GUI. Для портирования на другие платформы пока STL из C++ 11 — не хватает, по хорошему нужна filesystems из C++ 17, чтобы уже сделать 100% портабельно. С другой стороны, нужно только одну функцию заменить — траверс директории.
Анализатор понимает файлы с данными подсетей из официальных NIC (Network Information Center) регионов (на гитхабе ссылки есть) или более точные(но кривоватые) db-ip.com (там часто CIDR не парсится нормально). Для работы надо три папки, где лежат логи, где лежат файлы подсетей (чтобы построить базу подсетей) и куда положить скомпилированную базу с подсетями(ну чтобы каждый раз не парсить) и отчёт. Ибо после анализа генерируется html отчёт с подсетями отсортированными по количеству хитов и объёму скачанного. По клику на адресе в отчёте открывается сторонний сервис, показывающий владельца подсети. Там собственно вся информация и черпается. По решётке открывается уже список конкретных адресов из подсети (и тоже отсортированные).
Репорт выглядит примерно так:
Если у вас много посетителей, ставьте сразу большие лимиты на включение в отчёт. Там есть минимальное количество хитов из подсети и минималый объём по трафику.
ps. Если нет желания собирать самому — вот собранный под Windows.
Автор: crea7or