Apache
Как забанить ботов по юзерагенту с помощью Apache
По мере появления некоторых проектов в поисковиках, их находят разные товарищи которые очень хотят контент с этих проектов выдрать, скорей всего на дорвеи/сплоги итд. Лично для меня никакой пользы от них нету, кроме того некоторые начинают борзеть и дергают по несколько страниц в секунду. Как то я хотел скачать один сайт, но после того как грабилка сайтов выкачивала страниц 10-20, скорость сайта резко понижалась до модемной, и качать становилось просто невозможно. Подозреваю что в том случае скорость резалась на файрволе. Сделать такое на виртуальном хостинге нереально, но хоть как то уменьшить нагрузку на сервер можно и нужно, т.к. большинство хостеров ставят ограничение на потребляемые ресурсы и рано или поздно из-за этих ботов аккаунт могут просто заморозить или отключить, в зависимости от хостера.
Вот пример нескольких ботов которые любят лазить по сайту:
WinHTTP Robot/1.0
команда, приведенная в самом начале сначала читает все файлы в текущей директории (в моем случае все лог файлы для одного сайта за три месяца), потом выбирает оттуда только те строки в которых содержится WinHTTP, потом вырезает первую колонку (в случае логов apache это ip-адрес), после чего выбираются только уникальные и показывается число встретившихся совпадений. Таким образом в результате видно число хитов с каждого айпишника.
$ cat * |grep WinHTTP | cut -f 1 -d " " | uniq -c 252 74.86.162.58 798 208.101.63.178 798 74.86.244.130 $ host 74.86.162.58 58.162.86.74.in-addr.arpa domain name pointer tracerootan.dk. $ host 208.101.63.178 178.63.101.208.in-addr.arpa domain name pointer royalexelsiore.br.
HTMLParser/1.6
$ cat * |grep HTMLP | cut -f 1 -d " " |uniq -c |head 1829 81.88.208.187 $ host 81.88.208.187 187.208.88.81.in-addr.arpa domain name pointer ws208-187.maryno.net.
Второй бот судя по всему одно из двух, либо библиотека Python или Java программа. Подозреваю, что второе, но пока ничего из этого не ставил и не пробовал.
Вот простой способ забанить их по user-agent:
в файл .htaccess добавляем
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} "^WinHTTP\ Robot/1.0$" RewriteCond %{HTTP_USER_AGENT} "^HTMLParser/1\.6$" RewriteRule ^.+$ robot_nah.html [L]
в корне сайта создаем файл robot_nah.html в котором пишем какую нибудь херню. Сначала я хотел просто выдавать ошибку, это можно сделать заменив последнюю строчку на
RewriteRule ^.+$ - [G]потом таки решил что лучше выдавать всякий мусор, пусть потом разгребают кучу дерьма. :)
Последние комментарии
2 weeks 5 days ago
2 weeks 5 days ago
2 weeks 5 days ago
2 weeks 5 days ago
4 weeks 18 hours ago
4 weeks 5 days ago
5 weeks 1 day ago
5 weeks 4 days ago
6 weeks 3 days ago
7 weeks 3 hours ago