Denozordec e0c289e08d
Publish mtproxy_checker Docker image / test (push) Successful in 7s
Build tdlib_ping (linux/amd64) / build-tdlib-ping (push) Failing after 30s
Publish mtproxy_checker Docker image / build-and-push (push) Successful in 49s
Update tdlib_ping workflow to trigger on any branch and tag, aligning with Docker workflow triggers. Revise README to reflect changes in CI build process, clarifying artifact retrieval for both branch pushes and manual runs.
2026-04-11 16:24:52 +07:00
2026-04-11 00:38:22 +07:00
2026-04-11 00:38:22 +07:00
2026-04-11 00:38:22 +07:00

mtproxy_checker

Проверка MTProto MTProxy на Go: не ICMP ping, а TCP + протокол (для ee — Fake-TLS, затем первый кадр MTProxy; для dd — сразу MTProxy Randomized Intermediate).

Сборка

go build -o mtproxy_checker.exe ./cmd/mtproxy_checker

Запуск

.\mtproxy_checker.exe "tg://proxy?server=HOST&port=PORT&secret=HEX"

или

.\mtproxy_checker.exe --server HOST --port PORT --secret HEX

Флаги: -timeout (по умолчанию 15s), -dc-id (по умолчанию 2), -dc-ids (например 1,2,3,4,5 — проверка каждого DC по очереди; -timeout на один DC; общий лимит времени умножается на число DC; код 0, если хотя бы один DC прошёл; список удавшихся DC печатается в stderr), -probe fast|deep|deep-strict (по умолчанию fast — как Telethon TcpMTProxy после init; deep — после init отправляется req_pq, успех если от DC пришло любое валидное unencrypted MTProto-сообщение (часто resPQ, но не только); deep-strict — как раньше deep, ответ должен быть именно resPQ).

Код выхода: 0 — OK (fast: рукопожатие + init, прокси не рвёт TCP сразу; deep: плюс ответ DC после req_pq); при нескольких DC — 0, если любой из них OK. 1 — ошибка (в deep в т.ч. нет ответа DC в ожидаемом виде; в deep-strict — нет resPQ), 2 — неверные аргументы, 3 — прокси закрыл соединение после проверки (в fast в т.ч. отложенный FIN/RST после init — ловится дополнительным коротким чтением после окна Telethon), 4 — таймаут.

Docker: docs/docker.ru.md — один образ: с аргументами после образа — CLI; без аргументов — HTTP API (файл со списком tg://, интервал, опциональный whitelist IP).

HTTP API и TDLib: в JSON каждой строки прокси поля standard (наш TCP/MTProxy чек) и tdlib (опционально: внешний helper TDLib addProxy+pingProxy). Рекомендуется нативный бинарник tdlib_ping (cmd/tdlib_ping, официальный JSON API TDLib через libtdjson). Альтернатива на Node — contrib/tdlib-ping. Задаётся MTPROXY_TDLIB_HELPER и MTPROXY_TDLIB_TIMEOUT; helper вызывается только в режиме fast. Базовый Docker-образ остаётся без TDLib/Node — helper подключают своим слоем образа или volume.

Если в Telegram прокси «Available», а утилита падает на read server hello

Для ee в TLS SNI должен идти только ASCII hostname из хвоста секрета; в коде это SNIDomain. Ответ сервера читается по схеме из Telegram Desktop (mtproto_tls_socket), а не по старому фиксированному формату telethon.

S
Description
No description provided
Readme
234 KiB
Languages
Go 93.5%
JavaScript 5.4%
Dockerfile 0.8%
Shell 0.3%