1. DNS — подмена ответа
Запрос имени домена уходит через прокси на публичный DNS. Если резолвер провайдера возвращает IP-заглушку (приватные диапазоны, адрес страницы-«заглушки» РКН) или адреса, не совпадающие с реальными, — это DNS-блокировка. Самый «мягкий» тип: обходится сменой DNS-сервера на публичный (Google, Cloudflare).
2. TCP — отказ соединения и RST
Пробуем установить TCP-соединение на порт 443. Если соединение отклоняется (connection refused), хост/сеть «недостижимы» или сразу прилетает RST — это блокировка на уровне IP-адреса или сброс соединения оборудованием ТСПУ. Тихий «drop» пакетов (таймаут на соединении) тоже фиксируется здесь.
3. TLS — DPI по SNI
В начале HTTPS-соединения имя домена передаётся открытым текстом в поле SNI. DPI-оборудование читает его и обрывает рукопожатие именно для запрещённых доменов. Чтобы отделить это от IP-блокировки, мы делаем две пробы на один и тот же IP: с реальным SNI и с контрольным (безобидным) именем. Если реальный SNI рвётся, а контрольный проходит — это классический DPI по SNI, а не проблема сервера.
4. HTTP — заглушки и обрыв на лету
Если верхние уровни чистые, загружаем страницу целиком. Здесь ловятся: страница-заглушка провайдера, HTTP-коды 451 (юридическая блокировка) и 403 (геоблок), капчи, а также характерный для DPI обрыв в середине передачи (например, ровно на границе TCP-окна 16–32 КБ).