Robots.txt не защищает от ботов: разбор заблуждения
Самый частый совет в интернете и самый бесполезный. Что robots.txt умеет, чего не умеет и как им можно навредить себе.
3 мин чтения
robots.txt — это соглашение, а не механизм. В нём нет ничего, что
заставляло бы его соблюдать.
Как это работает на самом деле
Робот, прежде чем обходить сайт, запрашивает /robots.txt и читает
правила. Дальше он сам решает, следовать им или нет.
Поисковые роботы следуют, и у них есть причина: они заинтересованы в хороших отношениях с сайтами. Игнорирующий robots.txt поисковик быстро получит блокировки на уровне серверов и потеряет доступ к содержимому.
У парсера, написанного ради вашего каталога, такой мотивации нет. Он прочитает файл ровно один раз — чтобы узнать, где лежит интересное.
Почему Disallow помогает атакующему
Классическая ошибка:
User-agent: *
Disallow: /admin-panel-2019/
Disallow: /backup/
Disallow: /old-site/
Disallow: /api/internal/
Владелец хотел спрятать. На деле он опубликовал список самого ценного, причём в файле, который читают все и который лежит по стандартному адресу.
Если каталог не должен быть публичным — он должен быть закрыт паролем или по адресу, а не упомянут в robots.txt.
Что robots.txt действительно делает
Экономит краулинговый бюджет. Закрыв от обхода бесконечные фильтры и сортировки, вы направляете внимание поисковика на важные страницы. Это реальная польза и главная причина, по которой файл нужен.
Убирает мусор из индекса. Служебные страницы, версии для печати, результаты внутреннего поиска.
Указывает карту сайта. Строка Sitemap: — полезная и рабочая.
Задаёт Clean-param для Яндекса. Позволяет сказать, какие параметры адреса не меняют содержимое: UTM-метки, идентификаторы кликов. Без этого одна страница попадает в индекс десятками копий.
Чего он не делает
Не защищает от парсинга. Не закрывает страницу от прямого доступа.
Не мешает попасть в индекс, если на страницу есть внешние ссылки —
для этого нужен noindex в мета-теге или заголовке, а Disallow
как раз мешает роботу увидеть этот noindex.
Последнее — отдельная ловушка: закрыв страницу в robots.txt, вы не даёте роботу прочитать её и узнать, что она закрыта от индексации. Страница может остаться в выдаче с текстом «описание недоступно».
Как выглядит разумный robots.txt
User-agent: *
Allow: /
Disallow: /cart
Disallow: /search
Disallow: /*?sort=
Clean-param: utm_source&utm_medium&utm_campaign&yclid&gclid
Sitemap: https://example.ru/sitemap.xml
Ничего секретного, только про обход.
А защита от тех, кто соглашений не читает, — это уже другой уровень: проверка того, кто именно пришёл, а не просьба вести себя прилично.
Читайте также
- Белые списки: что в них заносить и как не забыть Самая скучная часть настройки и самая полезная. Что заносить, в каком виде и почему пути надёжнее адресов.
- Семь ошибок при настройке защиты от ботов Каждая из них выглядит разумно в момент настройки и обнаруживается спустя недели, когда убытки уже посчитаны.
- Сайт под атакой ботов: что делать прямо сейчас Короткая инструкция для ситуации, когда разбираться некогда: сайт тормозит или лёг, и подозрение на ботов.