Как защитить контент от парсинга?

Аватар пользователя gun_dose gun_dose 18 апреля 2018 в 19:53

Есть сайт на восьмёрке, который постоянно пытаются парсить. Пока ещё контента относительно немного: порядка 150к сущностей. Но планируются миллионы. Пока что парсеры довольно тупые, просто перебирают айдишники с бешеной скоростью. Соответственно, задача: банить айпи при слишком большой частоте запросов. Как это автоматизировать? Желательно на уровне апача или нжинкса, ибо вести статистику запросов в друпале очень накладно: посещалка от сотен до пару тысяч уников и таблица статистики будет просто конская.

0 Thanks

Комментарии

Аватар пользователя bumble bumble 18 апреля 2018 в 19:58

Как вариант - в куку совать статус прохождения рекаптчи на день-недельку.

Аватар пользователя gun_dose gun_dose 18 апреля 2018 в 22:51

Вот это похоже на то, что нужно. Но не могу понять, можно ли там увеличить лимит на определённый роут? Вообще у меня апач, поставил на него mod_evasive, очень похожая штука, но там такая же загвоздка с лимитом на определённый роут.

Аватар пользователя gun_dose gun_dose 19 апреля 2018 в 7:00

Это понятно. Но если нужно снять ограничения с одного единственного роута, то не понятно, как тут поможет location

Аватар пользователя gun_dose gun_dose 19 апреля 2018 в 7:12

А, хотя да, можно же защищать не весь сайт, а только самый ценный контент по маске. Наверное)))

Аватар пользователя ivnish ivnish 18 апреля 2018 в 20:13

Как вариант еще fail2ban попробуй. Хотя может много ресурсов есть на сервере

Аватар пользователя Semantics Semantics 18 апреля 2018 в 20:35
3

У меня как-то RSS парсили и по тупому публиковали на сторонний сайт.
Добавил в текст RSS вывод IP-адреса клиента, на сайте рсс импортировали с айпишником.
В итоге начал этому IP вместо своей RSS отдавать фид с порносайта, несколько раз и отучил

Аватар пользователя Semantics Semantics 19 апреля 2018 в 7:16

Как вариант, пойти по пути авито.
Они через JS палят кучу событий от загрузки страницы и движений мышки.
Назначать куку, можно условно-рандомную, изменяемую по определенному алгоритму.
В nginx проверять её наличие и давать отлуп.

Но не знаю как у проекта с перспективами трафика из органики поисковиков

Аватар пользователя gun_dose gun_dose 19 апреля 2018 в 9:54

Этот вариант тоже рассматривается. Но это уже реально СЛООООЖНА)) Плюс я полагаю, что обработка этих событий должна производиться друпалом, а отлуп лучше давать на уровне вебсервера и тут начинается закипание мозга. С другой стороны, может быть достаточно будет накинуть серваку ресурсов и ведение статистики юзеров в БД сильно не скажется на быстродействии.

Аватар пользователя Semantics Semantics 19 апреля 2018 в 9:57

Тут друпальная роль крайне минимальна.
Но могут быть определенные специфичные для проекта штуки, это капитанство, но без него никак.

Аватар пользователя gun_dose gun_dose 19 апреля 2018 в 10:18

Всё же хотелось бы, чтобы поисковики видели сайт. И хотелось бы побольше подробностей - своими словами или ссылки на мануалы. Думаю, тема не только мне интересна.

Аватар пользователя Phantom63rus Phantom63rus 19 апреля 2018 в 12:22

В данном случае действия парсера сильно похожи на ддос атаку. Гуглить в сторону iptables и парсинга access.log. Есть готовые решения, но без разбора применять не рекомендую, слишком много особенностей может вылезти.

Аватар пользователя Phantom63rus Phantom63rus 19 апреля 2018 в 12:29

Ну или как вариант (всё придумано до нас) поставить/включить libapache2-mod-evasive, там конфиг на десять строчек, сделает как раз то что нужно, без необходимости регулярно выражовываться:)

Аватар пользователя Phantom63rus Phantom63rus 19 апреля 2018 в 13:57

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