Скрипт для защиты от прожорливых ботов, валящих сервер
В последнее время почти каждая банда вебмастеров считает нужным сделать свой поисковик. Хороших программеров на все поисковики не хватает поэтому их поделия тупо валят сервера. Причем представляться они могут разнообразными юзерагентами, ходить с кучи адросов и даже юзать прокси. При ручном просмотре логов таких ботов можно заметить, но задача автоматизации их отлова в общем случае еще не решена. Обозначенная проблема актуальна для сайтовладельцев, что было озвученно в блоге Alexf .
Можно предположить что такие боты будут есть только HTML документы, а не js/css/gif/… В тоже время браузер обычного юзера помимо самого документа продергивает css и картинки. Юзеры с отключенными картинками и яваскриптами пользы не приносят (ибо рекламу не видят) и ничего страшного если при назойливом обращении к серверу их тоже посчитают ботами.
Тоесть для отлова свежих ботов нужен скрипт который читает конец лога (например 100 секунд) ищет подсети с которых взяли много (например больше 5) html документов и мало (непример меньше 10%) css/картинок. Такие подсети режутся фаирволом до амнистии (например на 10 минут). Если после амнистии подсеть опять валит сервер, то она снова уходит в бан.
На своих FreeBSD серверах я использую следующий скрипт:
После пуска по крону лог скрипта наполняется приятными сообщениями о забаненных ботах:
Fri, 18 Jan 2008 14:48:01 -0600 6 0 64.34.145.0/24 SBIder/SBIder-0.8.2-dev (http://www.sitesell.com/sbider.html) Fri, 18 Jan 2008 14:49:00 -0600 20 0 77.75.72.0/24 SeznamBot/2.0 (+http://fulltext.seznam.cz/) Fri, 18 Jan 2008 14:50:00 -0600 6 0 220.181.19.0/24 Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07) Fri, 18 Jan 2008 14:54:00 -0600 6 0 208.36.144.0/24 Mozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html) Fri, 18 Jan 2008 14:55:01 -0600 6 0 61.247.217.0/24 Yeti/0.01 (nhn/1noon, yetibot@naver.com, check robots.txt daily and follow it) Fri, 18 Jan 2008 14:57:00 -0600 6 0 193.252.149.0/24 Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (http://www.voila.com/)