BotBan

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

Ничего секретного, только про обход.

А защита от тех, кто соглашений не читает, — это уже другой уровень: проверка того, кто именно пришёл, а не просьба вести себя прилично.

Читайте также