VPN·HUB·CRACK
Прокси Telegram под видом обычного сайта (бета) · VPN HUB CRACK
Прокси Telegram под видом обычного сайта (бета)
Прокси Telegram под видом обычного сайта (бета)
Обычный MTProto-прокси находят за минуты. Он сидит на своём порту, отвечает на характерное рукопожатие, и сканеру хватает одного пакета. Порт закрывают, клиенты остаются без связи.
Здесь прокси прячется за настоящим сайтом. На 443 стоит Caddy с сертификатом Let's Encrypt. Откроете домен браузером, увидите страницу «технические работы». Подключите Telegram, попадёте в прокси. Провайдер в обоих случаях видит одно: HTTPS к веб-серверу.
⚠️ Технология в бета-тесте, работает не у всех. Транспорт TProxy Telegram только раскатывает. На момент написания статьи: Telegram Desktop поддерживает, Android в состоянии эксперимента, iOS не поддерживает вовсе. Публичный
t.meссылку такого вида ещё не обрабатывает, поэтому она может не открываться нажатием. Перед тем как выдавать это клиентам, проверьте на своём устройстве.📖 Незнакомые слова? Все термины простыми словами есть в Словаре терминов.
Как устроено
Caddy :443 (TLS) → TProxy ┬→ браузер → страница «Технические работы»
└→ Telegram → MTProxy (только localhost)
Работу делит TProxy, форк от команды Telegram Desktop. Он получает уже расшифрованное соединение и смотрит, кто пришёл: браузеру отдаёт статику, клиенту Telegram уводит соединение в MTProxy.
MTProxy наружу не смотрит. Открыт единственный порт 443.
Что понадобится
- сервер на Ubuntu или Debian, root
- домен, A-запись которого ведёт на этот сервер
- свободный порт 443
Быстрая установка
Одна команда, дальше скрипт всё делает сам:
bash <(curl -sL https://raw.githubusercontent.com/qwe8nxtroud/hubproxy/main/install.sh) proxy.example.com
Перед работой он проверит домен и порт, соберёт компоненты, выпустит сертификат и напечатает ссылку для подключения. Удаление: тот же скрипт с ключом --uninstall.
Дальше разбираем те же шаги руками. Если хотите понимать, что стоит на вашем сервере, читайте.
Установка по шагам
1. Caddy
Он держит 443 и сам получает сертификат.
apt-get update && apt-get install -y ca-certificates gnupg curl
curl -fsSL https://dl.cloudsmith.io/public/caddy/stable/gpg.key \
| gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" \
> /etc/apt/sources.list.d/caddy-stable.list
apt-get update && apt-get install -y caddy
2. MTProxy
Собираем из исходников Telegram:
apt-get install -y git build-essential libssl-dev zlib1g-dev
git clone --depth 1 https://github.com/TelegramMessenger/MTProxy /tmp/mtproxy
make -C /tmp/mtproxy -j$(nproc)
install -D -m 0755 /tmp/mtproxy/objs/bin/mtproto-proxy /opt/hubproxy/mtproto-proxy
3. TProxy
Нужен Go. Ставим и собираем:
curl -fsSL https://go.dev/dl/go1.23.4.linux-amd64.tar.gz -o /tmp/go.tgz
tar -C /usr/local -xzf /tmp/go.tgz
export PATH=$PATH:/usr/local/go/bin
git clone --depth 1 https://github.com/telegramdesktop/tproxy-server /tmp/tproxy
cd /tmp/tproxy && CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" \
-o /usr/local/bin/hubproxy-tproxy ./cmd/tproxy-server
4. Данные Telegram и секрет
mkdir -p /etc/hubproxy
curl -fsS --ipv4 --max-time 60 https://core.telegram.org/getProxySecret -o /etc/hubproxy/proxy-secret
curl -fsS --ipv4 --max-time 60 https://core.telegram.org/getProxyConfig -o /etc/hubproxy/proxy-multi.conf
SECRET=$(head -c 16 /dev/urandom | xxd -p -c 32) && echo "$SECRET"
Секрет сохраните, он понадобится дважды: в настройках TProxy и в ссылке для клиента.
⚠️ С серверов в России
core.telegram.orgиногда отвечает по IPv6 и очень медленно. Мы замеряли 11 секунд против 0,07 с из Европы, и установка падала по таймауту. Флаг--ipv4и запас по времени лечат это.
5. Страница-заглушка
mkdir -p /var/lib/hubproxy/site
cat > /var/lib/hubproxy/site/index.html <<'HTML'
<!doctype html><html lang="ru"><head><meta charset="utf-8">
<title>Технические работы</title></head>
<body><h1>Технические работы</h1>
<p>Сайт временно недоступен.</p></body></html>
HTML
Замените на что-то правдоподобное. Домен могут открыть и посмотреть глазами.
6. Настройка TProxy
cat > /etc/hubproxy/config.json <<JSON
{
"public_hostname": "proxy.example.com",
"listen": "127.0.0.1:8080",
"admin_listen": "127.0.0.1:8081",
"public_dir": "/var/lib/hubproxy/site",
"profiles_file": "/etc/hubproxy/profiles.json",
"enable_pprof": false
}
JSON
cat > /etc/hubproxy/profiles.json <<JSON
{ "profiles": [ { "name": "default", "secret": "ВАШ_СЕКРЕТ", "backend": "127.0.0.1:2398" } ] }
JSON
chmod 600 /etc/hubproxy/profiles.json
7. Caddy: конфигурация
{
email admin@proxy.example.com
admin off
servers {
protocols h1 h2
timeouts {
read_header 10s
read_body 60s
}
}
}
proxy.example.com {
encode zstd gzip
header Strict-Transport-Security "max-age=31536000; includeSubDomains"
reverse_proxy 127.0.0.1:8080 {
transport http {
response_header_timeout 40s
}
}
}
⚠️ Таймауты здесь обязательны. TProxy держит длинные опросы около 25 секунд, а Caddy с настройками по умолчанию рвёт их. Клиент при этом показывает «недоступен», хотя все службы запущены и выглядят здоровыми.
8. Службы
# /etc/systemd/system/hubproxy-mtproto.service
[Service]
ExecStart=/opt/hubproxy/mtproto-proxy -u nobody -H 2398 -S ВАШ_СЕКРЕТ \
--aes-pwd /etc/hubproxy/proxy-secret /etc/hubproxy/proxy-multi.conf -M 1
Restart=always
# /etc/systemd/system/hubproxy-tproxy.service
[Service]
ExecStart=/usr/local/bin/hubproxy-tproxy --config /etc/hubproxy/config.json
Restart=always
systemctl daemon-reload
systemctl enable --now hubproxy-mtproto hubproxy-tproxy caddy
ufw deny 2398/tcp # наружу этот порт смотреть не должен
⚠️ Не добавляйте к MTProxy
--address 127.0.0.1и--nat-info 127.0.0.1:127.0.0.1. Оба флага ограничивают исходящие соединения, и прокси перестаёт дозваниваться до серверов Telegram: журнал заполняетсяconnect(): Invalid argument, клиент висит на «соединение». Порт закрывайте файрволом.
Проверка
# сайт отдаётся и сертификат выпущен
curl -I https://proxy.example.com/
# обе службы живы
systemctl is-active hubproxy-mtproto hubproxy-tproxy
# прокси дозвонился до Telegram: соединений должно быть много
ss -tnp state established | grep -c mtproto
# ошибок быть не должно
journalctl -u hubproxy-mtproto --since "2 minutes ago" | grep -c "Invalid argument"
Последние две проверки важнее остальных. Службы могут числиться активными, а прокси при этом не иметь связи с Telegram.
Подключение
Ссылка выглядит так:
tg://webproxy?server=proxy.example.com&secret=ВАШ_СЕКРЕТ
Секрет здесь тот же, что в profiles.json, без префиксов.
⚠️ Схема именно
webproxy. Знакомаяtg://proxyс секретом, начинающимся наee, здесь не подойдёт: это другой транспорт, при котором клиент открывает MTProto-соединение напрямую и упирается в веб-сервер.
Ссылка может не открываться нажатием, потому что t.me этот маршрут пока не обрабатывает. На macOS проверьте через терминал:
open "tg://webproxy?server=proxy.example.com&secret=ВАШ_СЕКРЕТ"
Не сработало? Значит ваш клиент транспорт ещё не поддерживает. Ждите обновления либо поднимайте классический MTProto: «MTProto-прокси».
Управление
cat /etc/hubproxy/connection.txt # данные подключения
journalctl -u hubproxy-tproxy -n 50 # журнал
Смена секрета: правите profiles.json и строку запуска MTProxy, перезапускаете обе службы. Через скрипт короче: bash install.sh proxy.example.com --rotate.
Грабли
- Домен за Cloudflare. Выключите проксирование на время выпуска сертификата, иначе Let's Encrypt не достучится до сервера.
- Домен светится в Certificate Transparency. Выпуск сертификата попадает в публичные логи. Берите отдельное имя, не связанное с основным сервисом.
- Один секрет на всех клиентов. Утёк у одного, менять придётся всем. Для розницы заводите отдельные профили в
profiles.json. - Занятый 443. Если на сервере уже работает nginx, разносите прокси и сайт по разным машинам.
- Telegram видит IP сервера. Прокси скрывает факт использования от провайдера, но не прячет вас от самого мессенджера.
- Клиенты поддерживают не все. Повторю: на iPhone это сейчас не работает. Не обещайте клиентам того, что не проверили на их устройствах.
Что дальше
- Классический MTProto, который понимают все клиенты: «MTProto-прокси».
- Спрятать за CDN основную ноду: «Спрятать сервер за CDN».
- Резервные протоколы: «NaiveProxy и AmneziaWG».
Скрипт: github.com/qwe8nxtroud/hubproxy. Схему подсмотрели у sacoq/web-proxy-tg-installer, код написан заново.