Есть сайт на восьмёрке, который постоянно пытаются парсить. Пока ещё контента относительно немного: порядка 150к сущностей. Но планируются миллионы. Пока что парсеры довольно тупые, просто перебирают айдишники с бешеной скоростью. Соответственно, задача: банить айпи при слишком большой частоте запросов. Как это автоматизировать? Желательно на уровне апача или нжинкса, ибо вести статистику запросов в друпале очень накладно: посещалка от сотен до пару тысяч уников и таблица статистики будет просто конская.
Комментарии
Как вариант - в куку совать статус прохождения рекаптчи на день-недельку.
http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html
Но вдумчиво.
Вот это похоже на то, что нужно. Но не могу понять, можно ли там увеличить лимит на определённый роут? Вообще у меня апач, поставил на него mod_evasive, очень похожая штука, но там такая же загвоздка с лимитом на определённый роут.
По идее можно же на location вешать.
Это понятно. Но если нужно снять ограничения с одного единственного роута, то не понятно, как тут поможет location
А, хотя да, можно же защищать не весь сайт, а только самый ценный контент по маске. Наверное)))
Как вариант еще fail2ban попробуй. Хотя может много ресурсов есть на сервере
У меня как-то RSS парсили и по тупому публиковали на сторонний сайт.
Добавил в текст RSS вывод IP-адреса клиента, на сайте рсс импортировали с айпишником.
В итоге начал этому IP вместо своей RSS отдавать фид с порносайта, несколько раз и отучил
Как вариант, пойти по пути авито.
Они через JS палят кучу событий от загрузки страницы и движений мышки.
Назначать куку, можно условно-рандомную, изменяемую по определенному алгоритму.
В nginx проверять её наличие и давать отлуп.
Но не знаю как у проекта с перспективами трафика из органики поисковиков
Этот вариант тоже рассматривается. Но это уже реально СЛООООЖНА)) Плюс я полагаю, что обработка этих событий должна производиться друпалом, а отлуп лучше давать на уровне вебсервера и тут начинается закипание мозга. С другой стороны, может быть достаточно будет накинуть серваку ресурсов и ведение статистики юзеров в БД сильно не скажется на быстродействии.
Тут друпальная роль крайне минимальна.
Но могут быть определенные специфичные для проекта штуки, это капитанство, но без него никак.
Всё же хотелось бы, чтобы поисковики видели сайт. И хотелось бы побольше подробностей - своими словами или ссылки на мануалы. Думаю, тема не только мне интересна.
В данном случае действия парсера сильно похожи на ддос атаку. Гуглить в сторону iptables и парсинга access.log. Есть готовые решения, но без разбора применять не рекомендую, слишком много особенностей может вылезти.
Ну или как вариант (всё придумано до нас) поставить/включить libapache2-mod-evasive, там конфиг на десять строчек, сделает как раз то что нужно, без необходимости регулярно выражовываться:)
Важный нюанс: если воры будут упорствовать, то тогда придётся писать защиту учитывающую список ботов поисковых систем и иных сервисов. В таком случае имеет смысл подать в суд, ибо технически они всё равно стырят контент за конечное время, а поисковики всё равно будут периодически получать отлуп из-за новых ип ботов.