Как SEO Crawler обрабатывает robots.txt
Перед началом каждого обхода SEO Crawler загружает /robots.txt сайта и применяет директивы из секции User-agent: *. Страницы, запрещённые через Disallow, не скачиваются — они не попадают в результаты аудита и не расходуют лимит страниц тарифа. В этой справке — как именно наш бот читает файл, какой User-Agent использует и как протестировать собственные правила.
Введите URL страницы — краулер загрузит robots.txt вашего сайта и покажет, какое правило применяется к этому адресу.
User-Agent нашего бота
По умолчанию SEO Crawler представляется серверу такой строкой User-Agent:
SEOCrawler/1.0 (+https://seo-crawler.ru/bot)
Это значение пресета seocrawler. В настройках задачи (и в шаблоне расписания) можно выбрать другие пресеты:
| Пресет | User-Agent | Когда применять |
|---|---|---|
seocrawler |
SEOCrawler/1.0 (+https://seo-crawler.ru/bot) |
По умолчанию. Можно добавлять в allowlist на сервере. |
chrome |
Без override (TLS-импeрсонация Chrome) | Если сервер блокирует «не-браузерных» клиентов. |
googlebot |
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) |
Проверка того, как сайт отвечает Googlebot. |
bingbot |
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) |
Проверка ответа для Bingbot. |
User-agent: *. Если вы хотите разрешить сканирование именно SEO Crawler — пропишите нужные Allow-правила в общей секции, а не создавайте отдельную User-agent: SEOCrawler. Мы добавим поддержку именных секций в одном из ближайших обновлений.Пример: разрешить обход нашему боту
Если сайт в целом закрыт от индексации на стадии разработки, но вам нужно запустить технический аудит — добавьте исключение в robots.txt:
User-agent: *
Disallow: /
Allow: /robots.txt
# Разрешаем нашему боту — он проверит только хедеры и код
# (ориентируемся на строку User-Agent в HTTP-запросе)
А затем в настройках задачи выберите пресет, который совпадает с вашим allowlist. Если allowlist настроен в Nginx/Apache по имени User-Agent — используйте пресет seocrawler. Если по «любому живому трафику» — chrome.
Fail-open политика
Если /robots.txt недоступен — отдал 5xx, ушёл в таймаут, упал на TLS-ошибке — наш бот действует по стратегии fail-open: считает, что ограничений нет, и обходит сайт полностью. Это соответствует RFC 9309 (Robots Exclusion Protocol) и совпадает с поведением Googlebot.
Код 404 для robots.txt интерпретируется как «файл отсутствует — значит, открыто всё». Это не баг и не наша самодеятельность — такое требование в стандарте. Если нужен полный запрет — разместите корректный robots.txt с Disallow: /, а не надейтесь, что отсутствующий файл защитит сайт.
| Ответ на /robots.txt | Что делает бот |
|---|---|
| 200 OK | Парсит правила, применяет Disallow/Allow/Crawl-delay |
| 404 Not Found | Считает, что ограничений нет — обходит всё (fail-open) |
| 5xx, таймаут, обрыв соединения | Считает, что ограничений нет (fail-open) |
| 301/302 на /robots.txt | Переходит по редиректу до 5 прыжков |
| Сертификат SSL невалидный | Повторяет запрос без проверки сертификата (fallback) |
Как наш краулер следует Disallow
SEO Crawler пропускает URL, который попал под действие Disallow, ещё до HTTP-запроса. То есть запрос к серверу вообще не уходит. Такие URL:
- не учитываются в счётчике обойдённых страниц;
- не появляются в таблице «Все страницы» отчёта;
- не расходуют лимит страниц тарифа;
- не приводят к записи в логах сайта (бот туда просто не заходит).
Если вы ожидали увидеть страницу в отчёте, но её там нет — первым делом проверьте robots.txt. Типичный кейс: на сайте 500 страниц, а наш бот обошёл 40 — скорее всего, большая часть закрыта через Disallow. Запустите чекер выше, чтобы подтвердить догадку.
Disallow, сюда не попадают — они отфильтрованы ещё до скачивания. Видны только те, что обошлись, но имеют noindex.Longest-match wins
Когда один URL подходит сразу под несколько правил, побеждает то, у которого длиннее путь. При равной длине — побеждает Allow. Это стандартная логика, которую использует и Googlebot:
User-agent: *
Disallow: /catalog/
Allow: /catalog/promo/
Результат: /catalog/shirts — закрыт (длина правила 9), /catalog/promo/2026 — открыт (длина Allow 15, побеждает).
noindex, meta robots и X-Robots-Tag
Это не про robots.txt, а про индексацию — но путать их очень легко. Разница простая:
| Механизм | Что запрещает | Скачивается ли URL |
|---|---|---|
robots.txt Disallow | Обход (не даёт боту зайти) | Нет |
<meta name="robots" content="noindex"> | Индексацию | Да — мы скачиваем HTML и видим тег |
HTTP X-Robots-Tag | Индексацию (в том числе PDF, изображений) | В текущей версии не учитывается |
Страницы с meta robots: noindex бот всё равно обходит — нужно же как-то узнать, что там стоит noindex. В отчёте они помечаются флагом и попадают в раздел «Индексация» на вкладке «Техническое». Это полезно для аудита: вы сразу видите, что, например, товарные карточки по ошибке стоят в noindex, или что /login зачем-то открыт для индексации.
Точечно проверить мета-теги конкретной страницы можно через инструмент анализа мета-тегов.
Тестирование своего robots.txt
Типичный рабочий сценарий — когда вы только что обновили robots.txt и хотите убедиться, что ничего лишнего не закрыли. Рекомендуемый порядок:
- Прогоните несколько URL через чекер в начале этой страницы. Подайте туда три-пять типовых адресов (главная, категория, товар, админка, сервисный URL). Чекер покажет, какое правило победило и почему.
- Запустите новый обход на дашборде. Если число обойдённых страниц в новом отчёте близко к предыдущему — ваш новый robots.txt не ломает индексацию. Если число резко упало — смотрите, что попало под
Disallow. - Сравните два обхода через отчёт «Сравнение» (доступен на тарифе Pro). Увидите, какие URL исчезли между двумя датами — это и есть страницы, которые только что попали под запрет.
- Убедитесь, что Sitemap указан директивой
Sitemap: https://...— это помогает краулерам (включая нашего) найти все разделы сайта.
Частые ошибки
Disallow: / блокирует всё
Одна из самых частых ошибок — забытая строка Disallow: /, которую оставили после деплоя dev-окружения. Бот видит, что весь сайт закрыт, и обходит ровно ноль страниц. В отчёте будет статус «done», но pages crawled = 0. Если видите такое — первым делом смотрите свой robots.txt.
Забыли директиву Sitemap
Без Sitemap: https://example.com/sitemap.xml краулер (любой, не только наш) обходит сайт только по внутренним ссылкам. Если какой-то раздел слабо перелинкован — он не попадёт в аудит. Sitemap — обязательный пункт.
Кириллические URL без экранирования
Правило Disallow: /товары/ работать не будет — в robots.txt пути должны быть в percent-encoding: Disallow: /%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/. Это требование RFC, и его соблюдают все крупные краулеры, включая Googlebot.
Пробелы и табуляции в начале строк
Парсер допускает пробелы, но некоторые CMS экспортируют robots.txt с BOM-меткой или экзотическими переводами строк — это ломает разбор. Откройте файл в обычном текстовом редакторе и убедитесь, что кодировка UTF-8 без BOM, переводы строк — LF.
Allow без Disallow
Писать просто Allow: / бессмысленно — по умолчанию всё и так разрешено. Allow имеет смысл только как перекрытие Disallow по longest-match.
Пример «правильного» robots.txt для сайта в SEO Crawler
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /*?sort=
Disallow: /*?utm_
Allow: /admin/public/
Crawl-delay: 1
Sitemap: https://example.com/sitemap.xml
В этом примере: закрыта админка (кроме /admin/public/), корзина и URL-параметры сортировки и UTM. Бот делает паузу 1 секунду между запросами. Sitemap указан.
Частые вопросы
Какой User-Agent использует бот SEO Crawler?
По умолчанию наш краулер представляется как SEOCrawler/1.0 (+https://seo-crawler.ru/bot). Это значение по умолчанию пресета «seocrawler». В настройках обхода можно также выбрать пресеты Chrome (без специального User-Agent, с TLS-импeрсонацией Chrome), Googlebot или Bingbot — тогда бот будет представляться соответствующей строкой. Секции с нашим именем пока обрабатываются через общую User-agent: *.
Как запретить только нашему боту, не трогая остальных?
В текущей версии SEO Crawler читает только секцию User-agent: *, поэтому персональная секция User-agent: SEOCrawler пока не имеет эффекта. Если нужно пустить нашего бота там, где всем запрещено, пропишите разрешение в секции User-agent: * через Allow. Для полного запрета используйте Disallow: / в этой же секции. Поддержка именных секций планируется.
Почему наш бот всё равно краулит страницу, которую я закрыл в robots.txt?
Проверьте три вещи. Во-первых, что секция написана для User-agent: *. Во-вторых, что правило совпадает по префиксу. В-третьих, что robots.txt отдаётся по адресу yoursite.ru/robots.txt с кодом 200 — если 404/5xx, у нас срабатывает fail-open. Для быстрой проверки используйте чекер в начале страницы.
Fail-open — это стандартное поведение или особенность SEO Crawler?
Это стандарт. По спецификации RFC 9309 (Robots Exclusion Protocol) при недоступности robots.txt краулер должен считать сайт полностью открытым. Так делают Googlebot, Bingbot и большинство SEO-инструментов. Ответ 404 тоже трактуется как «ограничений нет».
Поддерживаете ли вы Crawl-delay?
Да, если Crawl-delay указан в секции User-agent: *, наш бот добавляет паузу указанной длины (в секундах) между запросами. Если не задан — скорость определяется параметром «Скорость обхода» в настройках задачи (от 0,1 до 3 запросов в секунду).
Что с wildcards — звёздочка и знак доллара?
Поддерживаются. Звёздочка * заменяет любую последовательность символов, знак $ означает конец URL. Например, Disallow: /*?sort= заблокирует любые URL с параметром sort, а Disallow: /*.pdf$ — только файлы, оканчивающиеся на .pdf. Наша реализация совпадает с поведением Googlebot.
Как Allow работает внутри Disallow?
Побеждает правило с самым длинным совпадением по префиксу (longest-match wins). Если длина совпадений равна — побеждает Allow, как рекомендует спецификация Google. Пример: Disallow: /admin/ + Allow: /admin/public/ — /admin/secret закрыт, /admin/public/page1 открыт.
Что с robots.txt на поддоменах?
Каждый поддомен — это отдельный robots.txt. Если вы обходите https://blog.example.com/, бот запросит https://blog.example.com/robots.txt, а не example.com/robots.txt. Наш краулер по умолчанию не уходит с домена, указанного в старте обхода.
Как протестировать свой robots.txt перед публикацией?
Выложите новый robots.txt, затем используйте чекер на этой странице: он покажет вердикт «Разрешено/Заблокировано» для любого URL и какое правило победило. Для массовой проверки запустите новый обход и сравните число обойдённых страниц с предыдущим.
Обрабатываются ли noindex и X-Robots-Tag?
Meta robots noindex в HTML обрабатывается: URL скачивается (потому что noindex не запрещает обход, он запрещает индексацию), но в отчёте помечается флагом «noindex». HTTP-заголовок X-Robots-Tag в текущей версии не учитывается. Если нужен полный запрет обхода, используйте именно robots.txt.