Парсер robots.txt

Вставте robots.txt і прочитайте його так, як його читає краулер, за RFC 9309 (Robots Exclusion Protocol, стандартизований у 2022): групи user-agent, правила Allow/Disallow, sitemap і невідомі директиви, усе розкладено — плюс аудит поширених помилок (порожні рядки 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: пріоритет найдовшого збігу (включно з нічиєю дозволу-над-забороною і випадком глибокого шляху), злиття груп,*запасний варіант групи, чутливість шляхів і user agent до регістру, підстановки,$якір, неявний дозвіл від/robots.txt, нормалізація відсоткового кодування, вилучення sitemap і негативні шляхи. Нічого нікуди не надсилається.
Що таке 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Де знаходиться ваш sitemap; краулери можуть зібрати кілька
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 без # — це помилка розбору, що може збити з пантелику поблажливі парсери.
Часті запитання (FAQ)

Чи всі краулери підтримують Allow, * і $? Великі — так, і RFC 9309 стандартизує всі три. Деякі менші або старіші краулери розуміють лише Disallow і читають * буквально — одна з причин тримати правила простими, коли можна.

Що означає порожній Disallow:? «Не забороняти нічого» — група явно дозволяє все. Це зазвичай з'являється, коли хтось редагує шаблон і видаляє шлях, але не директиву; аудит на це вказує.

Яким може бути файл? RFC 9309 вимагає, щоб парсери опрацьовували щонайменше 500 KiB; далі краулер може перестати читати і вважати решту забороненою. Тримайте значно менше, а якщо він стане величезним, подумайте, чи керування обходом взагалі має бути в заголовках сторінки.

Чому матчер каже, що /robots.txt дозволений навіть під Disallow: /? Тому що стандарт каже саме це: файл robots сам по собі неявно дозволений. urllib.robotparser Python, серед інших, не реалізує цього особливого випадку — одна з дрібних розбіжностей між реальними парсерами, яку ця сторінка документує у своєму самотесті.

Чи чутливий шлях Disallow до регістру? Так. /Private/ і /private/ — різні шляхи. Назва поля disallow може бути в будь-якому регістрі, але значення має точно збігатися з URL.