«Сайт доступен» и «сайт открывается у меня в браузере» — разные утверждения. Робот приходит под другим именем, из другой сети, без ваших кук и без сохранённой копии. Любое из этих отличий может обернуться отказом, о котором владелец не узнает: у него-то всё открывается.
Мы прогнали выборку из 75 сайтов Екатеринбурга четырьмя разными агентами и из двух стран, 20 сентября 2026 года.
Что именно проверяется
Доступность распадается на пять вопросов, и отвечают на них разные проверки:
- Отвечает ли сервер вообще и с каким кодом.
- Тем же ли кодом он отвечает тому, кто назвался поисковым роботом.
- Пускает ли он запрос без имени агента.
- Зависит ли ответ от страны, из которой пришёл запрос.
- Лежит ли по адресу
/robots.txtфайл, а не страница.
Запреты — noindex, Disallow, заголовок X-Robots-Tag — это другая тема:
там робот дошёл и прочитал, что ему нельзя. Их мы разбирали
отдельно. Здесь речь о том, дошёл ли он
вообще.
Что ответили сайты выборки
| Кто спрашивал | Ответили 200 | Отказ или ошибка |
|---|---|---|
| Браузер, запрос из России | 74 | один 500 |
| YandexBot | 73 | один 403, один 500 |
| Googlebot | 72 | один 403, два 500 |
| Запрос без имени агента | 72 | один 403, два 500 |
| Браузер, запрос из Европы | 73 | один 403, один 500 |
Главный вывод скучный и его стоит сказать прямо: почти все отвечают всем одинаково. Страшилка про «сайт пускает людей и отбивает роботов» в прогоне по живой выдаче встретилась один раз из 75. Но встретилась.
Четыре поломки крупным планом
403 любому, кто назвался роботом. Сайт сантехнических услуг отдаёт
браузеру полноценную страницу в 423 КБ, а на запрос с именем YandexBot или
Googlebot отвечает страницей nginx в 146 байт: «403 Forbidden». Из России и
из Европы одинаково — значит дело не в стране, а в имени агента. Это самый
дорогой из найденных дефектов: для поиска сайт выглядит закрытым, при том что
у владельца он открывается всегда.
500 одному роботу из двух. Другой адрес отвечает браузеру и Яндексу кодом 200, а Googlebot получает ошибку сервера. Повторный запрос дал то же самое, так что это не случайный сбой, а устойчивое поведение — вероятно, правило в заслоне.
500 на пустое имя агента. Служба грузоперевозок отвечает нормально всем названным агентам и падает, если имя не указано вовсе. Настоящие поисковые роботы представляются всегда, так что беды тут нет, — но это верный признак, что запросы фильтруются, и фильтр однажды может задеть и робота.
403 из Европы, 200 из России. Ещё один адрес доступен только с российских адресов. Для Яндекса это не помеха, а вот часть проверочных сервисов и зарубежных роботов увидит закрытую дверь. Мы сами наступали на это: замер, сделанный из Германии, объявлял сайты мёртвыми, пока его не повторили через российский выход.
Отдельно: один адрес выборки отдавал 500 вообще всем, включая браузер. Это не про роботов, это просто лежащий сайт — и попал он сюда только потому, что в живой выдаче стоит до сих пор.
robots.txt: файл или страница
Что по адресу /robots.txt | Сколько адресов выборки |
|---|---|
| Текстовый файл, код 200 | 70 |
| Переадресация на HTML-страницу | 3 |
| 404 | 1 |
| Не ответил | 1 |
Четыре адреса из прогнанной выборки отдают по этому адресу HTML. Робот в
таком случае считает, что правил нет вовсе, — и это не всегда безобидно:
вместе с правилами теряется строка Sitemap, по которой он ищет карту.
Заодно о том, чего не нашлось. Ни одного Disallow: / для всех роботов, ни
одного noindex в метатеге, ни одного в заголовке X-Robots-Tag.
Метатег robots вообще присутствует у 33 адресов прогнанной выборки, и во
всех случаях он разрешающий: index, follow и подобное. Это значение
повторяет поведение по умолчанию и не делает ничего.
Секции в файле: только User-agent: * — у 31 адреса, отдельная секция для
Яндекса — у 37, для Googlebot — у 18.
Как проверить у себя
Четыре команды, по одной на каждый вопрос:
# обычный браузер
curl -sI -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124.0' \
-o /dev/null -w '%{http_code}\n' https://ваш-сайт.ru/
# поисковый робот Яндекса
curl -sI -A 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)' \
-o /dev/null -w '%{http_code}\n' https://ваш-сайт.ru/
# без имени агента
curl -sI -H 'User-Agent:' -o /dev/null -w '%{http_code}\n' https://ваш-сайт.ru/
# robots.txt: код и первая строка
curl -s -o /dev/null -w '%{http_code} %{content_type}\n' https://ваш-сайт.ru/robots.txt
Все четыре кода должны быть одинаковыми, а тип файла правил — text/plain.
Разошлись — ищите заслон: он бывает на стороне хостинга, в модуле защиты
движка или в облачном фильтре перед сайтом. Готовый ответ по одному адресу,
если командная строка не под рукой, даёт
проверка доступности.
Наши цифры
Свой сайт мы прогнали тем же способом. Всем четырём агентам — браузеру, YandexBot, Googlebot и запросу без имени — приходит код 200 и ровно 144 094 байта: один и тот же ответ, побайтно. Из России и из Европы одинаково. Так и должно выглядеть: сервер не знает, кто его спрашивает, и не пытается узнать.
Границы замера
Мы представлялись роботом, но приходили не с его адресов. Настоящего YandexBot узнают обратным просмотром DNS, и сайт с умной защитой может пускать настоящего робота, отбивая поддельного. Обратное тоже верно: заслон, устроенный по имени агента, — а именно такой мы и нашли, — отобьёт обоих одинаково.
Проверялась только главная страница, один город, один день. Внутренние разделы могут быть закрыты иначе. Коды сняты однократно: разовый сбой в момент запроса от устойчивого заслона отличается только повтором, и мы повторили лишь там, где ответ был не 200.
Коротко
Доступность для робота — это не «сайт работает», а «сайт отвечает одинаково всем». В прогнанной выборке так и есть почти у всех: расхождение по имени агента нашлось у одного адреса, по стране — у одного, по пустому имени — у одного. Проверяется это четырьмя командами за минуту, и делать это стоит после каждой настройки защиты от нагрузки: именно она чаще всего и закрывает дверь перед поиском.
