Local MTProto proxy server for partial bypassing of Telegram loading
Go to file
borisovmsw 3feeabf766
Update README.md
2026-03-20 03:33:15 +03:00
.github built files rename 2026-03-19 07:43:42 +03:00
packaging Linux binary, github actions (#282) 2026-03-19 06:55:55 +03:00
proxy final 2026-03-20 03:10:18 +03:00
.dockerignore docker-auth 2026-03-19 23:53:37 +03:00
.gitignore MacOS support (#225) 2026-03-18 17:33:38 +03:00
Dockerfile final 2026-03-20 03:10:18 +03:00
LICENSE Initial commit 2026-03-04 17:10:26 +03:00
README.md Update README.md 2026-03-20 03:33:15 +03:00
icon.ico Initial release 2026-03-04 17:20:07 +03:00
linux.py unused import 2026-03-19 07:03:11 +03:00
macos.py Update macos.py (#272) 2026-03-18 20:27:16 +03:00
pyproject.toml Linux binary, github actions (#282) 2026-03-19 06:55:55 +03:00
windows.py autostart fixes 2026-03-19 12:26:31 +03:00

README.md

[!CAUTION]

Реакция антивирусов

Windows Defender часто ошибочно помечает приложение как Wacatac.
Если вы не можете скачать из-за блокировки, то:

  1. Попробуйте скачать версию win7 (она ничем не отличается в плане функционала)
  2. Отключите антивирус на время скачивания, добавьте файл в исключения и включите обратно

Всегда проверяйте, что скачиваете из интернета, тем более из непроверенных источников. Всегда лучше смотреть на детекты широко известных антивирусов на VirusTotal

TG WS Proxy

Локальный SOCKS5-прокси для Telegram Desktop, который перенаправляет трафик через WebSocket-соединения к указанным серверам, помогая частично ускорить работу Telegram.

Ожидаемый результат аналогичен прокидыванию hosts для Web Telegram: ускорение загрузки и скачивания файлов, загрузки сообщений и части медиа.

image

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

Telegram Desktop → SOCKS5 (127.0.0.1:1080) → TG WS Proxy → WSS (kws*.web.telegram.org) → Telegram DC
  1. Приложение поднимает локальный SOCKS5-прокси на 127.0.0.1:1080
  2. Перехватывает подключения к IP-адресам Telegram
  3. Извлекает DC ID из MTProto obfuscation init-пакета
  4. Устанавливает WebSocket (TLS) соединение к соответствующему DC через домены kws{N}.web.telegram.org
  5. Если WS недоступен (302 redirect) — автоматически переключается на прямое TCP-соединение

🚀 Быстрый старт

Windows

Перейдите на страницу релизов и скачайте TgWsProxy.exe. Он собирается автоматически через Github Actions из открытого исходного кода.

При первом запуске откроется окно с инструкцией по подключению Telegram Desktop. Приложение сворачивается в системный трей.

Меню трея:

  • Открыть в Telegram — автоматически настроить прокси через tg://socks ссылку
  • Перезапустить прокси — перезапуск без выхода из приложения
  • Настройки... — GUI-редактор конфигурации
  • Открыть логи — открыть файл логов
  • Выход — остановить прокси и закрыть приложение

Установка из исходников

pip install -r requirements.txt

Windows (Tray-приложение)

python windows.py

Консольный режим

python proxy/tg_ws_proxy.py [--port PORT] [--dc-ip DC:IP ...] [-v]

Аргументы:

Аргумент По умолчанию Описание
--host 127.0.0.1 IP-адрес SOCKS5-прокси
--port 1080 Порт SOCKS5-прокси
-u, -user
-P,--password
выкл. Логин и Пароль для авторизации в SOCKS5-прокси
--dc-ip 2:149.154.167.220, 4:149.154.167.220 Целевой IP для DC (можно указать несколько раз)
-v, --verbose выкл. Подробное логирование (DEBUG)

Примеры:

# Стандартный запуск
python proxy/tg_ws_proxy.py

# Другой порт и дополнительные DC
python proxy/tg_ws_proxy.py --port 9050 --dc-ip 1:149.154.175.205 --dc-ip 2:149.154.167.220

# С подробным логированием
python proxy/tg_ws_proxy.py -v

Настройка Telegram Desktop

Автоматически

ПКМ по иконке в трее → «Открыть в Telegram»

Вручную

  1. Telegram → НастройкиПродвинутые настройкиТип подключенияПрокси
  2. Добавить прокси:
    • Тип: SOCKS5
    • Сервер: 127.0.0.1
    • Порт: 1080
    • Логин/Пароль: оставить пустыми

Конфигурация

Tray-приложение хранит данные в %APPDATA%/TgWsProxy:

{
  "port": 1080,
  "dc_ip": [
    "2:149.154.167.220",
    "4:149.154.167.220"
  ],
  "verbose": false
}

Автоматическая сборка

Проект содержит спецификацию PyInstaller (windows.spec) и GitHub Actions workflow (.github/workflows/build.yml) для автоматической сборки.

pip install pyinstaller
pyinstaller packaging/windows.spec

Лицензия

MIT License

FORK

1) Linux/NAS

Сборка запуск

sudo apt update && sudo apt install git
git clone https://github.com/borisovmsw/tg-ws-proxy.git
cd tg-ws-proxy
docker build -t tg-proxy .
docker run -d --name tg-proxy -p 1080:1080 tg-proxy:latest -u userx -P 123456

Подключаемся и проверяем

Локально

tg://socks/?server=127.0.0.1&port=1080&user=userx&pass=123456

Удаленно

tg://socks/?server=192.168.1.139&port=1080&user=userx&pass=123456

2) Openwrt ARM64

Настраиваем компьютер на компиляцию под ARM64 процессор роутера

docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap

Собираем образ для роутера

docker buildx build --platform linux/arm64 -t tg-proxy-flint:latest --load .

Сохраняем образ в файл

docker save tg-proxy-flint:latest -o tg-proxy-flint.tar

Закидываем образ на роутер

scp -O tg-proxy-flint.tar root@192.168.1.1:/tmp/

Подключаемся к роутеру

ssh root@192.168.1.1

Загружаем образ и удалям его

docker load -i /tmp/tg-proxy-flint.tar && rm /tmp/tg-proxy-flint.tar

Настройки роутера

Заходим в настройки Firewall - Traffic Rules Создаем Rule с именем Docker

  • Source zone - docker
  • Destination zone - WAN
  • на закладке Advanced Settings оставляем только ip4

Далее самое главное!!! Включаем WAN для Docker, информации крайне мало про эту срочку, времени на ее поиск ушло не мало

Комментируем строчку list blocked_interfaces 'wan' в файле /etc/config/dockerd

sed -i "s/^\([[:space:]]*\)list blocked_interfaces 'wan'/#\1&/" /etc/config/dockerd

Перезагружаем роутер или же выполняем команду

/etc/init.d/dockerd restart

Запускаем контейнер только на внутреннем IP

docker run -d --name tg-proxy -p 192.168.1.1:1080:1080 tg-proxy-flint:latest -u userx -P 123456

Смотрим логи, практически все INFO на каждое соединение заменил на DEBUG, чтобы не тратить ресурс постоянной памяти

docker logs tg-proxy

Тестируем

tg://socks/?server=192.168.1.1&port=1080&user=userx&pass=123456