Вопрос или проблема
Я хотел бы предотвратить сбор данных о продуктах Amazon на своем сайте. Поэтому я нашел этот документ: https://developer.amazon.com/amazonbot
И этот пример:
User-agent: Amazonbot # User agent Amazon
Disallow: /do-not-crawl/ # запретить этот каталог
Так что, если я добавлю:
User-agent: Amazonbot # User agent Amazon
Disallow: / # запретить доступ ко всему сайту
или, возможно
User-agent: Amazonbot # User agent Amazon
Disallow: /Technology/ # запретить доступ к странице категории Технология
В частности, предотвратит ли это доступ ко всем продуктам на странице Технологий на сайте?
Что меня также беспокоит, так это упоминание о задержке обхода на их странице «Помощь»?
У меня сейчас есть:
User-agent: *
Disallow: /admin/
Disallow: /api/
Crawl-delay: 1
User-agent: Amazonbot
Disallow: /
Что явно имеет задержку обхода и этот комментарий на их странице «Помощь»:
На данный момент AmazonBot не поддерживает директиву crawl-delay в robots.txt и метатегах robots на HTML страницах, таких как “nofollow” и “noindex”.
Установка политики robots.txt
не «предотвращает» никакому роботу индексировать ваш сайт. Это скорее как вежливая просьба не делать этого. Робот может уважать вашу просьбу или игнорировать её.
Поскольку Amazon прямо заявил, что они действительно уважают robots.txt
, но не поддерживают crawl-delay
, я бы ожидал, что они поступят именно так. Хотя вы можете блокировать их робота различными способами, используя данные, предоставленные на их сайте:
- Идентификация по User-Agent
Вы можете проверять User-Agent, содержащий строку “Amazonbot” (или просто “amazon”), и выдавать им ошибку 403. Существует несколько способов сделать это, вы можете добавить следующее в ваш VHost файл, если используете Apache:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} amazonbot [NC]
RewriteRule . - [R=403,L]
Вы также можете использовать свой межсетевой экран для выполнения этой функции. Если вы используете CloudFlare, они предоставляют встроенную функцию для блокировки определенных UA. Вы также можете использовать iptables для этого, однако это также скажется на производительности, так как каждый запрос придется проверять. Тем не менее, если вы хотите это настроить, посмотрите на iptables -m string -h
.
- Идентификация по IP-адресу и обратному DNS
Это будет немного сложнее, но в общем вы можете взять IP-адрес бота, получающего доступ к вашему сайту, выполнить обратный DNS-запрос по этому адресу, а затем проверить, содержит ли домен “amazon”. Я определенно не советовал бы это использовать как способ обрабатывать каждый запрос к вашему сайту, так как это сильно ударит по производительности; однако вы можете ретроспективно просматривать свои журналы с помощью такого скрипта, чтобы выявить неслухняного Amazonbot, который не уважает robots.txt
.
Ответ или решение
Чтобы предотвратить сканирование вашего сайта Amazon, следует учитывать несколько моментов.
- Файл robots.txt:
Вы правильно отметили, что добавление следующей строки в файл robots.txt
предотвратит доступ Amazonbot ко всему вашему сайту:
User-agent: Amazonbot
Disallow: /
Однако важно понимать, что robots.txt
служит больше как просьба, и не все боты обязаны ее соблюдать. Amazon объявили, что они уважают robots.txt
, но это не гарантирует стопроцентной защиты.
- Использование кода состояния HTTP 403:
Чтобы более жестко ограничить доступ, вы можете воспользоваться определением User-Agent в вашем веб-сервере, как, например, в Apache. В вашем файле конфигурации VHost добавьте следующие строки:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} amazonbot [NC]
RewriteRule . - [R=403,L]
Это вернёт код состояния 403 (Запрещено) для любых запросов, приходящих от Amazonbot.
- Блокировка через файрвол:
Если вы используете облачные сервисы, такие как CloudFlare, вы можете воспользоваться встроенной функцией блокировки User-Agent для блокировки Amazonbot. Установив соответствующее правило, вы можете полностью блокировать доступ этого бота к вашему сайту.
- Идентификация по IP-адресу:
Хотя это может быть довольно сложным и трудоемким процессом, можно отслеживать IP-адреса, от которых приходит Amazonbot, и использовать обратный DNS-запрос для их проверки. Но стоит отметить, что этот метод не рекомендуется использовать для каждой заявки, так как это серьёзно повлияет на производительность вашего сайта.
- Исключения и мониторинг:
Не забудьте вести журнал посещений вашего сайта, чтобы ретроспективно отслеживать активность Amazonbot. Это поможет вам выявить, насколько эффективно работают ваши меры блокировки, и при необходимости скорректировать свои действия.
Наконец, важно понимать, что, несмотря на все предпринятые меры, окончательной защиты от сканирования данных веб-страниц не существует. Многие боты могут проигнорировать указания в файле robots.txt
и специальные блокировки. Постоянный мониторинг и адаптация вашей стратегии — лучший способ защитить свои данные от нежелательного сбора.