Защита от дебильного сграбливания не вредящая ботам.

12 3
_
На сайте с 24.03.2008
Offline
381
3820

Речь о сливании паразитно большого количества документов с ОДНОГО IP.

Собственно давно не мониторил, поэтому не в теме текущих реалий.

Как сейчас решают проблемы со всякими оффлайн браузерами и прочим ?

Задача - минимизировать траффик в их сторону, и соответственно нагрузку на сервер.

Потому как они не только как попало грабят (одно и тоже по 1000 раз), но и делают

это в 10+ потоков, а у некоторых особо буйных с приличным каналом вполне получается

создать некоторые проблемы.

Жертва - довольно большой форум, как показывает практика, могут неделями

эти оффлайн-браузеры "резвиться". Задрали её богу, ни им пользы ни мне.

(и в общем-то прямой убыток в связи с исходящим траффиком)

Собственно в голову ничего внятного не приходит.

Если ограничить поисковых ботов через робот.тхт скажем 1 документом в секунду, то сами боты-то
будут успевать выгребать обновления ?

И как лучше дальше "давить грабберов" ? nginx с leaky bucket ? iptables ? что-то еще ?

Не поделитесь ли кусками конфигов, которые не слишком огорчают нормальных пользователей ?

Повторюсь: задача избавится от технически неграмотных пользователей всяких телепортов про итп.

От умных с кучкой прокси это всё не поможет - это понятно.

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#1

_SP_, почитайте про fail2ban , например вот тут. Часть вашей проблемы вполне может решить, надо будет конечно настроить хорошенько regexp и тогда сильно мучить вас не будут :)

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
_
На сайте с 24.03.2008
Offline
381
#2

Механизм понятный, скрипт может даже и полезный.

Тут в другом проблема: как не зафильтровать поисковых ботов и обычных пользователей.

Интересуют какие-нибудь примеры на этот счет.

VulkanPartner
На сайте с 27.03.2014
Offline
91
#3
_SP_:
Речь о сливании паразитно большого количества документов с ОДНОГО IP.
.................
Повторюсь: задача избавится от технически неграмотных пользователей всяких телепортов про итп.
От умных с кучкой прокси это всё не поможет - это понятно.

А чем не вариант просто забанить этот IP? Для технически неграмотных - самое то :)

https://perestroika.team/ru/ (https://perestroika.team/ru/) Perestroika Affiliates- ведущая гемблинг-партнерка. RevShare - до 60%. CPA - до 150$.
Andreyka
На сайте с 19.02.2005
Offline
822
#4

Ограничить число потоков безусловно можно. Но не так грубо, чтоб поисковики не обиделись.

Для начала попробуйте ставить ограничение чисто для грабберов.

Не стоит плодить сущности без необходимости
seocore
На сайте с 25.09.2006
Offline
143
#5
Andreyka:
Ограничить число потоков безусловно можно. Но не так грубо, чтоб поисковики не обиделись. Для начала попробуйте ставить ограничение чисто для грабберов.

если граббер суровый, то от него такие фокусы не помогут, в конце концов есть прокси, да и граббер может сливать странички плавно, в т.ч. прикидываясь User-Agent'ом под ботов ПС

если Ваша информация попадает в сеть, то её рано или поздно разнесут, путем ограничений и запретов можно только нанести себе же вред (зарубив ботов или какие-то ip-шлюзы провайдеров, под которыми выходят тысячи юзеров) 🍿

Инструменты для веб-мастера: кластеризатор СЯ (https://goo.gl/MQWfqO), все запросы конкурента (https://goo.gl/hd5uHS), дешевые XML-лимиты (https://goo.gl/aDZbPI)
Skom
На сайте с 02.12.2006
Offline
166
#6

Я себе на сайтах, которые любят парсить, настроил логротейт на каждые полчаса.

Дальше - автоматический анализ логов с выпиливанием ipset-ом всех левых айпишников, с которых идёт абнормальное количество запросов. Естественно, с проверкой принадлежности оных к поисковым ботам.

Параллельно, каждые 5 минут идёт проверка на хитрожопых хацкеров, которые заходят под десятком разных юзерагентов с одного адреса. Эти идут в бан даже без проверки.

Естественно, все сеты с таймаутом. Так что даже если какой-то новый блок гугла или ещё кого-нибудь нужного попадёт в него, то через какое-то время он оттуда вылезет.

Ограничивать по запросам в секунду смысла нет, ибо иногда тот же гугл лупит по 5-7 запросов в секунду. Бинг вообще по 10 запросов фигачит с одного адреса.

На nginx стояло ограничение 7 запросов в секунду с burst 10, один чёрт и гугловский и бинговый wmt ругались, что у них 503 на куче урлов...

Cras amet qui numquam amavit quique amavit cras amet
Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#7
_SP_:
Механизм понятный, скрипт может даже и полезный.

Тут в другом проблема: как не зафильтровать поисковых ботов и обычных пользователей.
Интересуют какие-нибудь примеры на этот счет.

Если исходить из логики fail2ban... то вам следует изучить поведение ботов, а после этого принимать решения на базе поведения, как вы понимаете панацеи вам никто не предложит, могут быть ложные срабатывания и тому подобное, вы начали за здравие , а закончим сейчас за упокой :))))

Есть например такая методика: всегда следить за списком IP адресов ботов всяких систем типа google / yandex и.т.п (крупных) и помещать их в Whitelist, обновлять списки и следить за ними надо будет вам, тогда можно будет с высокой степенью вероятности утверждать что их не забанит.

Но я бы предложил на парить моск, обычно те, кто пришли не по делу, ведут себя не так как полагается, и вы уже описали ряд критериев для такого поведения, например в 10 потоков сайт смотрят с одного ИП, такое fail2ban щелкнет на ура и спасет ваш сервер от излишней нагрузки.

Так же есть методика согласно которой можно сразу на уровне GEO модулей отключить ВСЕХ посетителей из Китая , Японии, и прочих стран откуда вы явно не ждете целевых посетителей.

Есть еще масса методик, однако ни одна из них сама по себе не дает хорошего результата, надо использовать совокупность, тогда можно добиться интересных результатов.

zexis
На сайте с 09.08.2005
Offline
388
#8

Можно очень много чего придумать, что бы эффективно банить быстрых ботов и при этом не банить пользователей и ботов поисковиков.

Первоисточник – анализ логов accees.log

1) Вести отдельные логи для статических файлов и файлов PHP (динамических). Анализировать именно лог динамических файлов. Так как именно они создают повышенную нагрузку. А запросов к статике может быть очень много на страницах, что приведет к ложным банам, если анализировать запросы к статике.

2) Менять лимиты для бана в зависимости от суммарной нагрузки. Снижать лимиты при повышении общей нагрузки и повышать разрешенные лимиты, когда суммарная нагрузка низкая.

Думаю, что скриптами это реализовать не получится.

Я писал анализатор логов на С.

На отладку потратил несколько месяцев.

Но результатом доволен.

[Удален]
#9

Борьба бесполезна. Забанишь одного - десять других ботов прибегут, как тараканы, сразу с 255 айпишников из поломанной подсети, по одному потоку и запросу в секунду с IP.

Так что не вариант бороться, лучше писать правильные скрипты, чтобы могли "переварить" любой поток автоматических запросов + программная защита от DDoS.

Лично у меня стоит burst=5 в nginx для динамики и безлимит для статики, и все. На ботов с колокольни.

Алеандр
На сайте с 08.12.2010
Offline
183
#10

Занимался такой же проблемой на своем статейном сайте. Белый лист для IP поисковых ботов - самое оно, хоть и муторно это. Всех остальных, при очень высокой активности - в бан.

Ну или стандартная уловка со ссылкой-ловушкой. Таким образом сразу отделите ботов-парсеров от юзеров, а затем уж по ботам пройтись и сверив IP с белыми - отсечь всех ненужных.

Скажу так, в среднем на статейнике я отшивал ежедневно не менее 5-8 IP, причем средствами apache ) Правда к этому счастью пришлось сделать маленький скрипт на bash, который в случае бана по IP пользователя с юзерагентом поисковых систем - сообщал мне об этом на телефон. И тогда я шустренько лез на сервак и проверял - этот IP правда принадлежит ПС, или нет. Если да - в белый лист, если нет - оставлял в бане.

ПС, не знаю как последнее время - не так часто меняют IP диапазоны своих ботов, а для некоторых сразу масками делал - и все, никаких проблем.

Лично меня спасало.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий