О Обходчик
← Блог

Проверка доступности сайта онлайн: где сервисы врут

Онлайн-проверка отвечает на узкий вопрос: открылась ли одна страница с одного сервера в один момент. Разбираем, что из этого следует и как не поверить ни ложной тревоге, ни ложному «всё хорошо».

Руслан Хуснутдинов, основатель Обходчика около 7 мин чтения

Проверка доступности сайта онлайн — это один HTTP-запрос с чужого сервера к вашему адресу. Сервис смотрит, ответил ли сайт и каким кодом, и показывает время ответа. Так можно быстро понять, лежит ли сайт для всех или только для вас. Но это снимок: одна точка, один момент, один адрес.

Результату стоит не верить, когда сервисы показывают разное, клиент жалуется на сбой, которого не видно, или зелёная отметка не совпадает с тем, что вы видите в браузере. Если сайт просто не открывается у вас, начните с разбора о том, как понять, у вас проблема или у сайта.

Что показывает онлайн-проверка

Обычный сервис делает запрос к адресу и сообщает три вещи:

Что показывает онлайн-проверка

  1. Получил ли он ответ вообще (соединение, DNS, TLS, ответ сервера).
  2. Какой HTTP-код пришёл. Классы кодов описаны в RFC 9110: 2xx — успех, 3xx — перенаправление, 4xx — ошибка запроса, 5xx — ошибка сервера.
  3. За какое время пришёл ответ.

Для бизнеса отсюда следует простое: «доступен» означает лишь то, что сервер ответил по этому адресу. Работает ли форма заявки, открываются ли каталог и корзина, по такому ответу не видно. Подробнее об этом разрыве в статье про аптайм 200 OK.

Почему сервисы расходятся

Два сервиса проверяют один сайт в одну минуту и дают разный результат. Это не обязательно ошибка: у них разные условия запроса.

Что различается Как влияет на результат
Место проверки Из одной страны сайт открывается, из другой нет: сеть, маршрут, блокировка
DNS-резолвер Один сервис уже получил новый IP, другой ещё держит старый из кэша
Метод запроса HEAD и GET иногда обрабатываются по-разному
User-Agent Защита сайта может отдавать сервису проверок капчу или 403
Таймаут Один ждёт 5 секунд, другой 30, и медленный сайт будет недоступен только для первого
Следование редиректам Один считает успехом 301, другой идёт по цепочке до конца

Поэтому одно красное сообщение — повод проверить, а не паниковать. Одно зелёное тоже ничего не гарантирует.

Где проверки ошибаются

Ошибки бывают в обе стороны. Ложная тревога неприятна, но ложное спокойствие дороже: о сбое вы узнаёте от клиента.

Где проверки ошибаются

Что показал сервис Что могло быть на самом деле Как отличить
«Недоступен», а у вас открывается Сервис проверок попал под защиту от ботов или лимит запросов; сбой на его стороне Повторить из другого сервиса и через curl
«Недоступен» только из одной страны Проблема маршрута или блокировка по сети Сравнить результаты из нескольких регионов
«Доступен 200», а пользователи видят пустую страницу Сервер ответил, но приложение отдаёт пустой шаблон или ошибку в тексте Проверять содержимое ответа, а не только код
«Доступен», а сайт медленный Код есть, время ответа большое Смотреть время ответа отдельно
«Доступен» по http, но не по https Проблема с сертификатом или редиректом Проверять именно тот адрес, которым пользуются люди
Разовый сбой в одну минуту Короткая перезагрузка, пик нагрузки или сетевой сбой Смотреть несколько проверок подряд, а не одно значение

Отдельный случай — ответы 5xx. Если сервер отдаёт 502 или 500, сервис честно покажет сбой, но причину не назовёт. Для таких ситуаций есть разборы: 502 Bad Gateway и ошибка 500.

Поисковики тоже реагируют на серверные ошибки. В документации Google Search Central сказано, что при 5xx и 429 робот снижает частоту сканирования, а URL, которые долго отдают серверную ошибку, со временем удаляются из индекса. Короткий сбой обычно проходит без последствий, затяжной — нет.

Проверка через curl

curl ставится на любой компьютер и работает из вашей сети. Он показывает то, что видите вы, а не сервис: код ответа, время и заголовки. Все ключи описаны в документации curl.

Минимальная проверка кода и времени:

curl -sS -o /dev/null -w "%{http_code} %{time_total}\n" https://example.com/

Команда выводит код ответа и общее время запроса в секундах. Если вместо кода пришла ошибка соединения, уже понятно, где остановилось: на DNS, на соединении или на сертификате.

Порядок действий:

  1. Выполните запрос без редиректов и посмотрите код. 301 или 302 для адреса без www или без https — нормально, если цепочка короткая.
  2. Добавьте ключ -L, чтобы дойти до конечной страницы, и проверьте итоговый код.
  3. Запросите заголовки командой curl -I (это HEAD-запрос) и сравните с полным GET: curl -sS -o /dev/null -D - https://example.com/. Если ответы различаются, сервис, который шлёт HEAD, показывает неверную картину.
  4. Задайте предел времени ключом --max-time, чтобы команда не висела бесконечно.
  5. Если сайт только что переехал на другой сервер, проверьте его по конкретному IP ключом --resolve. Так видно, отвечает ли новый сервер, пока DNS не обновился.

Эту проверку удобно повторить с рабочего компьютера, с мобильного интернета и с сервера хостинга. Три результата дают картину, которую одним сервисом не получить.

Проверка с разных провайдеров

Сайт может работать на сервере и быть недоступным у части аудитории. Причины лежат в сети между пользователем и сервером: у провайдера проблема с маршрутом, его DNS-резолвер отдаёт устаревший ответ, на пути стоит блокировка. Чинить на сервере при этом нечего.

Проверка с разных провайдеров

Что делать:

  • Проверьте адрес из нескольких регионов, а не из одного. Как это организовать и читать расхождения, разобрано в статье о доступности сайта из разных мест.
  • Откройте сайт с мобильного интернета и с домашнего. Если есть разница, дело в сети конкретного провайдера.
  • Проверьте DNS. После смены записей резолверы обновляются не одновременно, потому что ответы кэшируются на время TTL; принципы описаны в RFC 1034.
  • Если сайт недоступен лишь у части пользователей, попросите у них адрес страницы, время и название провайдера. Без этих данных причину искать долго.

Если жалобы идут, а у вас всё работает, проверять нужно не сервер, а путь до него.

Что делать, если результаты разошлись

  1. Повторите проверку через 1–2 минуты. Разовый сбой на одной проверке — не авария.
  2. Проверьте тот же адрес вторым сервисом и через curl.
  3. Сравните регион и сеть: если сбой виден из одной точки, проблема скорее в маршруте.
  4. Проверьте содержимое. Откройте страницу и сравните с тем, что видит клиент.
  5. Если ошибка подтверждается из нескольких мест, пишите хостингу и приложите код ответа, время и вывод curl.
  6. После исправления проверьте время ответа. Что считать нормой, написано в разборе про время ответа сервера.

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

Как проверить доступность сайта прямо сейчас

Откройте проверку доступности сайта, введите адрес и посмотрите код ответа и время. Регистрация не нужна. Если результат неожиданный, повторите проверку через curl по инструкции выше и сравните: расхождение подскажет, где искать причину.

Как проверить доступность сайта прямо сейчас

Если сайт отвечает, но браузер ругается на безопасность, посмотрите проверку SSL-сертификата: частая причина недоступности — просроченный или неверно установленный сертификат.

Проверить у себя

Бесплатно и без регистрации, по одному домену.

← Другие разборы в блоге