Разбор robots.txt

Вставьте robots.txt и прочитайте его так, как читает краулер, по RFC 9309 (протокол исключения роботов, стандартизирован в 2022): группы user-agent, правила Allow/Disallow, карты сайта и неизвестные директивы, всё разложено по полочкам — плюс аудит классических ошибок (пустые строки disallow, неизвестные директивы, слишком большие файлы). Сопоставитель затем отвечает на настоящий вопрос: вставьте user agent и путь и получите вердикт разрешить/запретить с точным правилом, которое решило дело — самое длинное совпадение, подстановочный знак *, якорь конца $ и слияние групп, ровно как указано в стандарте. Всё работает в вашем браузере.
Пока ничего не разобрано. Вставьте robots.txt выше и нажмите Разобрать файл или загрузите пример.
Сопоставитель работает с текстом, который сейчас находится в поле выше (нажимать «Разобрать» заранее не нужно). User agent сопоставляется так, как определяет RFC 9309: значение User-agent в файле должно быть подстрокой без учёта регистра того, что вы вводите здесь — так что ввод ExampleBot/1.0 совпадает с группой, объявленной как ExampleBot. Полный URL тоже принимается как путь.
User agent (работает настоящая строка UA) Путь или полный URL
Пока нет вердикта. Нажмите Проверить разрешение.
Как получить ваш файл:откройтеhttps://your-domain.example/robots.txtв браузере, выделите всё, скопируйте и вставьте сюда — илиcurl -s https://your-domain.example/robots.txtв терминале. Эта страница ничего не загружает сама: она только читает то, что вы вставили. Чтобы проверить заголовки ответа, которые несли файл, пропустите их черезРазборщик HTTP-заголовков.
Самопроверка
Заново запускает разборщик и сопоставитель на эталонных примерах RFC 9309: приоритет самого длинного совпадения (включая ничью «allow побеждает disallow» и случай глубокого пути), слияние групп, резервная группа, чувствительность путей и user agent к регистру, подстановочные знаки, *резервная группа, чувствительность путей и user agent к регистру, подстановочные знаки, $ якорь, неявное разрешение /robots.txt, нормализация процентного кодирования, извлечение карты сайта и отрицательные пути. Ничего никуда не отправляется.
Что такое robots.txt?
Вкратце: robots.txt — текстовый файл в корне сайта, который сообщает добросовестным краулерам, какие пути им можно загружать; это добровольная конвенция, стандартизированная как RFC 9309 в 2022 году, которую соблюдает каждый крупный краулер.
Форма файла

Файл — это последовательность записей. Группа начинается с одной или нескольких строк User-agent, за которыми следуют правила Allow и Disallow, применимые к этим краулерам. Новая строка User-agent после правил начинает новую группу; несколько строк User-agent подряд делят одну группу (краулеру с двумя именами это нужно). Отдельные записи вроде Sitemap могут стоять где угодно. # начинает комментарий в любом месте строки. Имена полей не чувствительны к регистру; пути — чувствительны.

СтрокаЗначит
User-agent: foobotПравила ниже применяются к краулерам, имя которых содержит foobot (без учёта регистра)
User-agent: *Правила ниже применяются ко всем краулерам без более конкретной группы
Disallow: /private/Не загружать пути, начинающиеся с /private/
Allow: /private/public/Исключение, которое побеждает запрет выше для этих путей (самое длинное совпадение)
Disallow: (пусто)Ничего не запрещено — классический приём «разрешить всё»
Sitemap: https://…/sitemap.xmlГде лежит ваша карта сайта; краулеры могут собрать несколько
Crawl-delay: 30Нет в RFC 9309 — устаревшее расширение; крупные краулеры его игнорируют или интерпретируют сами
Как выносится вердикт (RFC 9309 §2.2.2)

1. Найдите группу, значение User-agent которой — подстрока имени краулера; объедините все подходящие группы. Если их нет, используйте группу *; если нет и её, всё разрешено. 2. Проверьте путь по каждому правилу: сопоставление по префиксу, чувствительно к регистру, а */$ работают как подстановочные знаки. 3. Побеждает самое длинное совпадающее правило; при равной длине Allow побеждает Disallow. Нет совпадающего правила — разрешено. А что бы ни говорили правила, сам /robots.txt неявно разрешён — иначе краулер не смог бы прочитать правила.

Типичные ошибки
  • Вера, что robots.txt блокирует доступ. Это просьба к вежливым краулерам, а не стена: недобросовестные скрейперы её полностью игнорируют, и она не влияет на то, что может открыть браузер. Для настоящей защиты используйте аутентификацию; для управления только поисковыми системами robots.txt — верный инструмент.
  • Ожидание, что Disallow: / удалит страницу из результатов поиска. Он останавливает обход, а не индексацию: если на ваши страницы ссылаются другие, поисковик может всё равно показать URL (без описания). Инструмент удаления — метатег или заголовок ответа noindex.
  • Полагание на порядок вместо длины. Побеждает не первое совпавшее правило, а самое конкретное (самое длинное). Переставлять строки, чтобы «исправить» поведение, бессмысленно; сделайте нужное правило длиннее.
  • Блокировка CSS и JS. Запрет /*.css$ и /*.js$ раньше был распространённой «оптимизацией»; рендерерам теперь нужны эти файлы, чтобы видеть страницу так, как её видят посетители, а наполовину отрисованная страница может ранжироваться хуже.
  • Использование одной большой группы как документации. Строки-комментарии внутри группы допустимы, но абзац прозы до первой строки User-agent без # — ошибка разбора, которая может сбить снисходительные парсеры.
Частые вопросы

Поддерживают ли все краулеры Allow, * и $? Крупные — да, и RFC 9309 стандартизирует все три. Некоторые меньшие или старые краулеры понимают только Disallow и читают * буквально — одна из причин держать правила простыми, когда это возможно.

Что означает пустой Disallow:? «Не запрещать ничего» — группа явно разрешает всё. Обычно это появляется, когда кто-то правит шаблон, удаляет путь, но не директиву; аудит на это указывает.

Каким может быть файл по размеру? RFC 9309 требует от парсеров обрабатывать не менее 500 КиБ; сверх этого краулер может перестать читать и считать остальное запрещённым. Держите файл заметно меньше, а если он станет огромным, подумайте, не лучше ли управлять обходом через заголовки страниц.

Почему сопоставитель говорит, что /robots.txt разрешён даже при Disallow: /? Потому что стандарт прямо так и говорит: сам файл robots неявно разрешён. Python-модуль urllib.robotparser и другие не реализуют этот особый случай — одно из небольших расхождений между реальными парсерами, которое эта страница документирует в самопроверке.

Чувствителен ли путь Disallow к регистру? Да. /Private/ и /private/ — разные пути. Имя поля disallow может быть в любом регистре, но значение должно совпадать с URL точно.