# mtproxy_checker Проверка **MTProto MTProxy** на Go: не ICMP ping, а TCP + протокол (для `ee` — Fake-TLS, затем первый кадр MTProxy; для `dd` — сразу MTProxy Randomized Intermediate). ## Сборка ```powershell go build -o mtproxy_checker.exe ./cmd/mtproxy_checker ``` ## Запуск ```powershell .\mtproxy_checker.exe "tg://proxy?server=HOST&port=PORT&secret=HEX" ``` или ```powershell .\mtproxy_checker.exe --server HOST --port PORT --secret HEX ``` Флаги: `-timeout` (по умолчанию 15s), `-dc-id` (по умолчанию 2). Код выхода: `0` — OK, `1` — ошибка, `2` — неверные аргументы, `3` — прокси закрыл соединение после проверки, `4` — таймаут. **Docker:** [docs/docker.ru.md](docs/docker.ru.md) — образ CLI, несколько прокси из файла, а также контейнер с **HTTP API** (`mtproxy_checkerd`, файл со списком `tg://`, интервал проверки, опциональный whitelist IP). ### Если в Telegram прокси «Available», а утилита падает на `read server hello` Для `ee` в TLS SNI должен идти **только ASCII hostname** из хвоста секрета; в коде это `SNIDomain`. Ответ сервера читается по схеме из Telegram Desktop (`mtproto_tls_socket`), а не по старому фиксированному формату telethon.