web.telegram.org не резолвится — почему, и маленький скрипт на день, чтобы это чинить

web.telegram.org не резолвится — почему, и маленький скрипт на день, чтобы это чинить

На части сетей web.telegram.org просто не открывается — не таймаут, не 403, а так, будто домена не существует. Проверка через разные DNS показывает: часть резолверов отдаёт нормальный IP, часть — NXDOMAIN. То есть проблема именно в резолвинге на уровне провайдера/локального DNS, а не в самом сервере.

Зачем это, если есть VPN

VPN закрывает вопрос полностью, но его нужно держать постоянно включённым ради одного сайта — это трафик, батарея на ноуте и не всегда удобно, если VPN нужен не всегда. Для тех, кто уже использует zapret — эта штука не заменяет его, а закрывает соседнюю проблему: zapret работает на уровне пакетов/TLS-фингерпринта, а не резолвинга, так что если у конкретного домена именно DNS не резолвится, zapret тут не поможет — а фикс через hosts решает ровно это.

Как это работает

Правильный IP нужно откуда-то брать, и вручную гуглить актуальный — не вариант, он меняется. Поэтому скрипт (PowerShell + bat) идёт по цепочке источников: сначала официальный cidr.txt Telegram, если недоступен — DoH-резолверы (Cloudflare, Google, Quad9 и др.) напрямую поверх HTTPS, если и это не сработало — пара независимых зеркал с ежедневной синхронизацией, и в самом крайнем случае — локально сохранённый список в репозитории. Каждый кандидат проверяется на TCP :443 и валидный TLS-хендшейк именно для нужного хоста — просто открытый порт ничего не гарантирует. Первый рабочий IP прописывается в hosts.

Важное

Никаких .exe — только читаемые .ps1/.bat, всё на виду, ничего не скомпилировано. Написано за день, без претензий на идеальность, код открыт под MIT: https://github.com/frdlss/telegram-web-fix Антивирус иногда ругается на сам факт правки hosts — это ожидаемо для любого скрипта с таким подходом, не показатель чего-то вредоносного.

1