Всё описанное ниже — результат технического эксперимента. Материал не является рекламой, не призывает к каким-либо действиям, носит исключительно ознакомительный характер и подготовлен в рамках исследования.

Официальный заброшенный репозиторий на GitHub

Основной источник информации форк официального репозитория на GitHub

Подготовка

Устанавливаем зависимости

apt install git curl build-essential libssl-dev zlib1g-dev xxd

Клонируем репозиторий и переходим в него

git clone https://github.com/GetPageSpeed/MTProxy && cd MTProxy

Компилируем и переходим в каталог к исполняемому файлу

make && cd objs/bin

Скачиваем служебные данные от Telegram

curl -s https://core.telegram.org/getProxySecret -o ./proxy-secret && curl -s https://core.telegram.org/getProxyConfig -o ./proxy-multi.conf

Запуск

Наиболее устойчивым к блокировкам считается режим Fake-TLS, по этому трафик маскируется под него. В данном примере в качестве домена используется “google.com”, но подставить можно любой, например домен популярного мессенджера, который не заблокирован или вообще свой сайт.

Генерируем ключ

DOMAIN="google.com" && RAW_HEX=$(head -c 16 /dev/urandom | xxd -ps) && HEX_DOMAIN=$(echo -n "$DOMAIN" | xxd -p) && FULL_SECRET="ee${RAW_HEX}${HEX_DOMAIN}" && echo -e "\n1. Raw key\n$RAW_HEX\n\n2. HEX domain ($DOMAIN):\n$HEX_DOMAIN\n\n3. Full key:\n$FULL_SECRET\n"

В результате получаем:

  1. Чистый ключ:
  2. HEX-домен (google.com):
  3. Полный secret для Systemd и Telegram App:

Опциональный шаг для регистрации спонсорского канала (можно пропустить):

  • переходим в MTProxybot
  • отправялем команду /newproxy
  • отправялем ip адрес сервера и порт в формате ip_address:port
  • отправялем чистый ключ для @MTProxybot
  • получаем тэг и пару линков для прокси, нужен только тэг.

Далее правим конфингурацию

micro /etc/systemd/system/MTProxy.service

и вставляем в неё информацию (порт 443 можно заменить):

[Unit]
Description=Telegram MTProxy
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/MTProxy
# Configuration update
ExecStartPre=/usr/bin/curl -s https://core.telegram.org/getProxySecret -o ./objs/bin/proxy-secret
ExecStartPre=/usr/bin/curl -s https://core.telegram.org/getProxyConfig -o ./objs/bin/proxy-multi.conf

# Proxy start
ExecStart=/home/MTProxy/objs/bin/mtproto-proxy -u nobody -H 443 -S raw_key -D googel.com -P tag_from_MTProxybot_optional --aes-pwd ./objs/bin/proxy-secret ./objs/bin/proxy-multi.conf -M 1
Restart=on-failure

[Install]
WantedBy=multi-user.target

Если используется свой сайт, то следует указать порт прослушки, то есть -D example-site.com:443

Добавляем в автозагрузку и рестартуем сервис

systemctl daemon-reload && systemctl enable MTProxy.service && systemctl restart MTProxy.service && systemctl status MTProxy.service

Добавляем перезапуск сервиса раз в сутки

crontab -e

b добавляем строку для перезагрузки, например в 3:00

0 3 * * * /bin/systemctl restart MTProxy.service

Для удобства можно воспользоваться сервисом формирования расписания

Ссылка proxy

Для того чтобы собрать рабочую ссылку, вам понадобятся три параметра:

  • IP-адрес
  • порт (который указан после -H)
  • полный ключ (тот, что начинается на “ee”)

В итоге ссылка формируется как

https://t.me/proxy?server=IP_ADDRESS&port=PORT&secret=FULL_KEY

Сформированная ссылка добавляет прокси автоматически при клике на неё.