Поиск ip адресов спам ботов в access логах веб сервера
Последнее время как то особенно активировались спам-боты, которые постят комментарии, reCaptcha уже успешно пробивается ими и перестала быть проблемой. Я решил банить ботов по айпишникам на веб-сервере, пока их количество не очень большое и особой проблемы добавить еще один айпишник в .htaccess не составит. Для тех у кого большой посещаемый сайт лучше конечно будет банить ботов на iptables/ipfw.
Собственно команда для поиска:
$ cat ~/logs/apache/access_mindinmotion_*|grep 'POST /comment/' | awk '{print $1}' | sort | uniq -c |sort -rn
143 92.241.169.70
112 95.64.12.14
104 91.195.230.11
36 77.93.2.81
26 91.201.66.61
20 91.201.66.35
16 193.201.81.3
16 193.105.210.174
14 194.187.151.104
14 188.143.232.26
8 95.64.12.12
Некоторые пояснения:
- grep 'POST /comment/' - выбрать только те записи, где бот делает запрос POST к урлу /comment/*
- awk '{print $1}' - вырезать первую колонку из лога, ip-адрес в моем случае
- uniq -c - выбрать только уникальные
- sort -rn - отсортировать в обратном порядке по количеству запросов.
На выходе получается список в котором первая колонка - количество запросов с айпишника, вторая колонка - айпишник.