6.7 KiB
6.7 KiB
TG WS Proxy Go
Go-переосмысление Flowseal/tg-ws-proxy
Локальный SOCKS5-прокси для Telegram Desktop на Go
Ускоряет работу Telegram через WebSocket-соединения напрямую к серверам Telegram.
Почему Go версия лучше
| Параметр | Python | Go |
|---|---|---|
| Размер | ~50 MB | ~8 MB |
| Зависимости | pip (много) | stdlib |
| Время запуска | ~500 ms | ~50 ms |
| Потребление памяти | ~50 MB | ~10 MB |
Быстрый старт
Установка
# Скачать готовый бинарник из Releases
# Или собрать из исходников
go build -o TgWsProxy.exe ./cmd/proxy
Запуск
# Windows
start run.bat
# Windows с авто-настройкой Telegram
TgWsProxy.exe --auto-config
# Linux/macOS
./TgWsProxy
# С опциями
./TgWsProxy --port 9050 --dc-ip 2:149.154.167.220
Настройка Telegram Desktop
Автоматическая настройка
При первом запуске прокси автоматически предложит настроить Telegram (Windows).
Или откройте ссылку в браузере:
tg://socks?server=127.0.0.1&port=1080
Ручная настройка
- Настройки → Продвинутые → Тип подключения → Прокси
- Добавить прокси:
- Тип: SOCKS5
- Сервер:
127.0.0.1 - Порт:
1080 - Логин/Пароль: пусто (или ваши данные если используете
--auth)
Или откройте ссылку: tg://socks?server=127.0.0.1&port=1080
Командная строка
./TgWsProxy [опции]
Опции:
--port int Порт SOCKS5 (default 1080)
--host string Хост SOCKS5 (default "127.0.0.1")
--dc-ip string DC:IP через запятую (default "2:149.154.167.220,4:149.154.167.220")
--auth string SOCKS5 аутентификация (username:password)
--auto-config Авто-настройка Telegram Desktop при запуске
-v Подробное логирование
--log-file string Путь к файлу логов
--log-max-mb float Макс. размер логов в МБ (default 5)
--buf-kb int Размер буфера в КБ (default 256)
--pool-size int Размер WS пула (default 4)
--version Показать версию
Примеры
# Без аутентификации
./TgWsProxy -v
# С аутентификацией (защита от несанкционированного доступа)
./TgWsProxy --auth "myuser:mypassword"
# Настройка DC
./TgWsProxy --dc-ip "2:149.154.167.220,4:149.154.167.220"
Структура проекта
tg-ws-proxy/
├── cmd/
│ └── proxy/ # CLI приложение
├── internal/
│ ├── proxy/ # Ядро прокси
│ ├── socks5/ # SOCKS5 сервер
│ ├── websocket/ # WebSocket клиент
│ ├── mtproto/ # MTProto парсинг
│ └── config/ # Конфигурация
├── go.mod
├── Makefile
└── README.md
Сборка
# Все платформы
make all
# Конкретная платформа
make windows # Windows (.exe)
make linux # Linux (amd64)
make darwin # macOS Intel + Apple Silicon
make android # Android (.aar библиотека)
Поддерживаемые платформы
| Платформа | Архитектуры | Статус |
|---|---|---|
| Windows | x86_64 | ✅ Готово |
| Linux | x86_64 | ✅ Готово |
| macOS | Intel + Apple Silicon | ✅ Готово |
| Android | arm64, arm, x86_64 | 📝 См. android/README.md |
| iOS | arm64 | 🚧 В планах |
macOS Catalina (10.15) — поддерживается! Используйте TgWsProxy_macos_amd64.
Конфигурация
Файл конфигурации:
- Windows:
%APPDATA%/TgWsProxy/config.json - Linux:
~/.config/TgWsProxy/config.json - macOS:
~/Library/Application Support/TgWsProxy/config.json
{
"port": 1080,
"host": "127.0.0.1",
"dc_ip": [
"1:149.154.175.50",
"2:149.154.167.220",
"3:149.154.175.100",
"4:149.154.167.220",
"5:91.108.56.100"
],
"verbose": false,
"log_max_mb": 5,
"buf_kb": 256,
"pool_size": 4
}
Особенности
- ✅ WebSocket pooling — пул соединений для уменьшения задержек
- ✅ TCP fallback — автоматическое переключение при недоступности WS
- ✅ MTProto парсинг — извлечение DC ID из init-пакета
- ✅ SOCKS5 — полная поддержка RFC 1928
- ✅ Логирование — с ротацией файлов
- ✅ Zero-copy — оптимизированные операции с памятью
📱 Планы развития
- Android APK — нативное приложение с фоновой службой
- iOS App — Swift обёртка вокруг Go ядра
- GUI для desktop — системный трей для Windows/macOS/Linux
Производительность
| Метрика | Значение |
|---|---|
| Размер бинарника | ~8 MB |
| Потребление памяти | ~10 MB |
| Время запуска | <100 ms |
| Задержка (pool hit) | <1 ms |
Требования
- Go 1.21+ для сборки
- Windows 7+ / macOS 10.15+ / Linux x86_64
- Telegram Desktop для использования
Известные ограничения
- IPv6 — поддерживается через IPv4-mapped адреса (::ffff:x.x.x.x) и NAT64
- DC3 WebSocket — может быть недоступен в некоторых регионах
Лицензия
MIT License