Для более полного ответа на ваш вопрос нельзя полагаться только на один подход. Проблема заключается в конфликтной природе того, что вы хотите сделать. По сути, вы хотите, чтобы хорошие боты могли получить доступ к вашему сайту и проиндексировать его, чтобы вы могли появляться в поисковых системах; но вы хотите запретить плохим ботам поглощать всю вашу пропускную способность и красть вашу информацию.
Первая линия защиты:
Создайте файл robots.txt
в корне вашего сайта. См. http://www.robotstxt.org/ для получения дополнительной информации об этом. Это будет держать хороших, хорошо управляемых ботов в тех областях сайта, которые имеют больше смысла. Помните, что robots.txt
зависит от строки User-Agent, если вы предоставляете другое поведение для одного бота против другого бота. Смотри http://www.robotstxt.org/db.html
Вторая линия обороны:
Фильтр по User-Agent и / или IP-адресу. Меня уже критиковали за это, но удивительно, как немногие боты маскируют, кто они и что они - даже плохие. Опять же, это не остановит все плохое поведение, но обеспечивает уровень должной осмотрительности. Подробнее об использовании User-Agent позже.
Третья линия защиты:
Мониторинг журналов доступа вашего веб-сервера. Используйте анализатор логов, чтобы выяснить, откуда исходит основная часть вашего трафика. Эти журналы включают в себя как IP-адрес, так и строки агента пользователя, так что вы можете определить, сколько экземпляров бота поражает вас, и действительно ли это тот, о ком он говорит: см. http://www.robotstxt.org/iplookup.html
Возможно, вам придется запустить собственный анализатор логов, чтобы узнать частоту запросов от разных клиентов. Все, что выше определенного порога (например, может быть 10 / секунду), будет кандидатом на ограничение скорости позже.
Использование пользовательского агента для альтернативного содержимого сайта:
Подход, который мы должны были предпринять, чтобы защитить наших пользователей даже от легитимных ботов, забивающих наш сайт, заключается в разделении трафика на основе User-Agent. По сути, если User-Agent был известным браузером, он получил полнофункциональный сайт. Если это не был известный браузер, его воспринимали как бота, и ему давали набор простых HTML-файлов, содержащих только метаинформацию и ссылки, необходимые для их работы. HTML-файлы бота генерировались статически четыре раза в день, поэтому не было никаких накладных расходов на обработку. Вы также можете отображать RSS-каналы вместо урезанного HTML, который обеспечивает ту же функцию.
Заключительное примечание:
У вас только так много ресурсов, и не каждый законный бот ведет себя хорошо (то есть игнорирует robots.txt
и создает большую нагрузку на ваш сервер). Вы должны будете обновить свой подход с течением времени. Например, если один IP-адрес оказывается пользовательским поисковым ботом, созданным вашим клиентом (или его клиентом), вам, возможно, придется прибегнуть к ограничению скорости этого IP-адреса вместо полной его блокировки.
По сути, вы пытаетесь найти хороший баланс между обслуживанием ваших пользователей и сохранением вашего сайта доступным для поисковых систем. Делайте все возможное, чтобы ваш сайт реагировал на запросы пользователей, и при необходимости прибегайте к более сложной тактике.