Тактика борьбы с плохо себя ведущими роботами

9

У меня есть сайт, который по нормативным причинам не может быть проиндексирован или произведен автоматический поиск. Это означает, что мы должны держать всех роботов подальше и не дать им спайдеринг сайта.

Очевидно, у нас был файл robots.txt, который запрещает все с самого начала. Однако наблюдение за файлом robots.txt - это то, что делают только роботы с хорошим поведением. Недавно у нас были проблемы с роботами с плохим поведением. Я настроил Apache для запрета нескольких пользовательских агентов, но это довольно легко обойти.

Итак, вопрос в том, есть ли какой-нибудь способ настроить Apache (возможно, установив какой-нибудь модуль?) Для обнаружения поведения, подобного роботу, и ответа? Есть еще идеи?

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

Kris
источник
Учитывая, что вы спрашиваете о модулях Apache (см. Mod_evasive), и ваше решение может в конечном итоге включать некоторые пользовательские правила синтаксического анализа журналов и iptables, эта тема может быть более подходящим кандидатом для ServerFault.com, если у вас есть вопросы о блокировке определенных действий бота.
danlefree

Ответы:

7

Вы можете создать ссылку на скрытую страницу, которая при посещении захватывает идентификатор пользователя и IP-адрес бота, а затем добавляет один или оба из них в файл .htaccess, который навсегда блокирует их. Он автоматизирован, поэтому вам не нужно ничего делать для его обслуживания.

Джон Конде
источник
Это очень интересная идея, хотя в случае, если они используют очень универсальный пользовательский агент, вы не захотите автоматически блокировать какой-либо пользовательский агент.
Крис
Я бы тогда придерживался IP-адресов. Кроме того, если вы используете адреса I и видите шаблон из блока IP-адресов, вы можете легко заблокировать их все с помощью одного простого правила вместо того, чтобы поддерживать длинный список отдельных IP-адресов.
Джон Конде
3
Вы можете использовать описанный метод, чтобы случайно остановить плохих ботов при сканировании вашего сайта. Но 1) можно обойти (плохие боты - и их хозяева - могут научиться распознавать приманки и знать, как их избежать); и 2) Этот метод также может блокировать узаконивание пользователей-людей, которым были перераспределены IP-адреса, которые были занесены в черный список как принадлежащие неправильно действующим ботам. Если у вас есть юридическое или нормативное обязательство не индексировать ваш сайт или автоматически не использовать его, вы должны использовать надлежащую аутентификацию и предоставлять доступ только авторизованным пользователям. Все остальное не безопасно.
Свободное Радикальное
Хорошая идея. Но, если бы я это реализовал, держу пари, я бы продолжал случайно попадать в приманку самостоятельно и продолжал бы блокироваться со своего собственного сайта.
JW01
@ JW01 Все, что вам нужно сделать, чтобы избежать этого, это не посещать страницу, которая занимается этим. Поскольку на нем нет контента, это должно быть просто сделать.
Джон Конде
2

Вы можете воспользоваться работой, которую проделали другие люди по выявлению плохих IP-адресов, с помощью модуля Apache, который взаимодействует с черным списком IP Project Honeypot . Если вы делаете это в больших масштабах, возможно, было бы вежливо предложить запустить honeypot.

Питер Тейлор
источник
Я был поражен, когда я добавил черный список IP Project Project на мой сайт. Годы мучений закончились так просто, блокируя злодеев. Я думаю, что вы можете обнаружить поисковых роботов с ним тоже. Итак, плюс 1 за это.
JW01
Но суть дела в том, что если у вас есть общедоступные страницы, ожидайте, что они будут проиндексированы. Итак, нужна какая-то аутентификация. Смотрите ответ Майкла Хэмптона .
JW01
2

Как упомянул Жизель Ханнемир в комментарии , лучший способ сделать это - потребовать, чтобы вход всех пользователей был выполнен, и не предоставлял ограниченный контент тем, кто не вошел в систему.

Если вам по какой-то причине не требуется вход в систему, есть еще несколько вариантов, которые вы можете использовать (отказ от ответственности: оба они частично или полностью являются моей ошибкой):

  1. Набор базовых правил OWASP ModSecurity содержит ряд правил, разработанных для обнаружения автоматизации, даже если бот предпринял шаги, чтобы замаскироваться под браузер (например, подделать строку User-Agent). Если вы полностью контролируете свой сервер, такой как VPS, выделенный сервер или что-то большее, то вы можете использовать эти правила с ModSecurity .

    Этот набор правил также содержит другие правила, предназначенные для прекращения широкого спектра неуместных действий; если вы не смотрели на это, вам определенно следует.

  2. Если вы не полностью контролируете свой сервер (то есть используете общий веб-хостинг), и ваш хост не позволяет использовать ваши собственные правила ModSecurity, вы можете попробовать что-то на уровне приложения, например, мой собственный Bad Поведение . Я начал этот проект в 2005 году, чтобы бороться со спамом в блоге и соскребениями контента, например, теми, которые вас касаются. Его можно добавить на любой веб-сайт на основе PHP.

    Я также должен отметить, что многие из правил плохого поведения были включены в основной набор правил ModSecurity, поэтому, если вы включите эти правила, выполнение обоих будет довольно избыточным. Эти правила аннотированы в Базовом наборе правил как происходящие из плохого поведения.

Майкл Хэмптон
источник