Files
tg-ws-proxy-docker/README.md
ВяткинАртём 549bc255f1 mega fix
2026-03-27 16:45:55 +03:00

195 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> [!CAUTION]
>
> ### Реакция антивирусов
>
> Windows Defender часто ошибочно помечает приложение как **Wacatac**.
> Если вы не можете скачать из-за блокировки, то:
>
> 1) Попробуйте скачать версию win7 (она ничем не отличается в плане функционала)
> 2) Отключите антивирус на время скачивания, добавьте файл в исключения и включите обратно
>
> **Всегда проверяйте, что скачиваете из интернета, тем более из непроверенных источников. Всегда лучше смотреть на детекты широко известных антивирусов на VirusTotal**
# TG WS Proxy
**Локальный SOCKS5-прокси** для Telegram Desktop, который **ускоряет работу Telegram**, перенаправляя трафик через WebSocket-соединения. Данные передаются в том же зашифрованном виде, а для работы не нужны сторонние сервера.
## Как это работает
```
Telegram Desktop → SOCKS5 (127.0.0.1:1080) → TG WS Proxy → WSS → Telegram DC
```
1. Приложение поднимает локальный SOCKS5-прокси на `127.0.0.1:1080`
2. Перехватывает подключения к IP-адресам Telegram
3. Извлекает DC ID из MTProto obfuscation init-пакета
4. Устанавливает WebSocket (TLS) соединение к соответствующему DC через домены Telegram
5. Если WS недоступен (302 redirect) — автоматически переключается на прямое TCP-соединение
## 🚀 Быстрый старт
### Установка из исходников (консольный прокси)
Для запуска только SOCKS5/WebSocket proxy без графического интерфейса достаточно базовой установки:
```bash
pip install -e .
tg-ws-proxy
```
### Консольный режим из исходников
```bash
tg-ws-proxy [--port PORT] [--host HOST] [--dc-ip DC:IP ...] [-v]
```
**Аргументы:**
| Аргумент | По умолчанию | Описание |
|---|---|---|
| `--port` | `1080` | Порт SOCKS5-прокси |
| `--host` | `127.0.0.1` | Хост для bind |
| `--bind-mode` | `local` | Режим работы: local (127.0.0.1), network (0.0.0.0), internet (0.0.0.0) |
| `--dc-ip` | `2:149.154.167.220 4:149.154.167.220` | IP адреса для DC в формате "DC:IP" |
| `--log-level` | `INFO` | Уровень логирования: DEBUG, INFO, WARNING, ERROR, CRITICAL |
| `--quiet` | `false` | Отключить логирование |
| `--log-file` | `None` | Путь к файлу логов |
| `--log-max-mb` | `100` | Максимальный размер файла логов в MB |
| `--log-backups` | `3` | Количество backup файлов логов |
| `--buf-kb` | `256` | Размер буфера сокета в KB |
| `--pool-size` | `4` | Размер пула WS соединений на DC |
| `--host` | `127.0.0.1` | Хост SOCKS5-прокси |
| `--dc-ip` | `2:149.154.167.220`, `4:149.154.167.220` | Целевой IP для DC (можно указать несколько раз) |
| `-v`, `--verbose` | выкл. | Подробное логирование (DEBUG) |
**Примеры:**
```bash
# Стандартный запуск
tg-ws-proxy
# Другой порт и дополнительные DC
tg-ws-proxy --port 9050 --dc-ip 1:149.154.175.205 --dc-ip 2:149.154.167.220
# С подробным логированием
tg-ws-proxy -v
```
## Настройка Telegram Desktop
### Вручную
1. Telegram → **Настройки****Продвинутые настройки****Тип подключения****Прокси**
2. Добавить прокси:
- **Тип:** SOCKS5
- **Сервер:** `127.0.0.1`
- **Порт:** `1080` (или другой порт, указанный при запуске)
- **Логин/Пароль:** оставить пустыми
## Конфигурация через переменные окружения
Прокси поддерживает конфигурацию через переменные окружения, что удобно для Docker и CI/CD окружений.
### Доступные переменные окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
| `TG_WS_PROXY_HOST` | `0.0.0.0` | Хост для bind |
| `TG_WS_PROXY_PORT` | `1080` | Порт SOCKS5-прокси |
| `TG_WS_PROXY_LOGGER` | `true` | Включить логирование (true/false) |
| `TG_WS_PROXY_LOG_LEVEL` | `INFO` | Уровень логирования |
| `TG_WS_PROXY_LOG_FILE` | (пусто) | Путь к файлу логов |
| `TG_WS_PROXY_LOG_MAX_MB` | `100` | Макс. размер файла логов в MB |
| `TG_WS_PROXY_LOG_BACKUPS` | `3` | Количество backup файлов |
| `TG_WS_PROXY_BIND_MODE` | `network` | Режим работы: `local`, `network`, `internet` |
| `TG_WS_PROXY_DC_IPS` | `2:149.154.167.220 4:149.154.167.220` | IP адреса DC |
| `TG_WS_PROXY_BUF_KB` | `256` | Размер буфера сокета в KB |
| `TG_WS_PROXY_POOL_SIZE` | `4` | Размер пула WS соединений |
### Режимы работы (BIND_MODE)
- **`local`** - только локальный доступ (`127.0.0.1`)
- **`network`** - доступ в локальной сети (`0.0.0.0`)
- **`internet`** - доступ из интернета (`0.0.0.0`) - используйте с firewall
### Пример использования
```bash
# Установка переменных окружения
export TG_WS_PROXY_PORT=9050
export TG_WS_PROXY_BIND_MODE=local
export TG_WS_PROXY_LOGGER=false
# Запуск с переменными окружения
tg-ws-proxy
# Или с .env файлом
cp .env.example .env
# редактируем .env
tg-ws-proxy
```
## Docker
### Запуск через Docker
```bash
# Сборка образа
docker build -t tg-ws-proxy .
# Запуск с настройками по умолчанию
docker run -d --name tg-proxy -p 1080:1080 tg-ws-proxy
# Запуск с кастомными настройками
docker run -d \
--name tg-proxy \
-p 9050:9050 \
-e TG_WS_PROXY_PORT=9050 \
-e TG_WS_PROXY_BIND_MODE=network \
-e TG_WS_PROXY_LOGGER=true \
-e TG_WS_PROXY_LOG_LEVEL=DEBUG \
tg-ws-proxy
```
### Docker Compose
```yaml
version: '3.8'
services:
tg-ws-proxy:
build: .
ports:
- "1080:1080"
environment:
- TG_WS_PROXY_PORT=1080
- TG_WS_PROXY_BIND_MODE=network
- TG_WS_PROXY_LOGGER=true
- TG_WS_PROXY_LOG_LEVEL=INFO
restart: unless-stopped
```
### Coolify / PaaS
При развертывании в Coolify или других PaaS платформах, просто установите переменные окружения в настройках приложения. Все переменные, начинающиеся с `TG_WS_PROXY_`, будут автоматически применены.
## Конфигурация через аргументы командной строки
Прокси также поддерживает конфигурацию через аргументы командной строки (имеют приоритет над переменными окружения).
## Автоматическая сборка
Проект содержит спецификации PyInstaller ([`packaging/windows.spec`](packaging/windows.spec), [`packaging/macos.spec`](packaging/macos.spec), [`packaging/linux.spec`](packaging/linux.spec)) и GitHub Actions workflow ([`.github/workflows/build.yml`](.github/workflows/build.yml)) для автоматической сборки.
Минимально поддерживаемые версии ОС для текущих бинарных сборок:
- Windows 10+ для `TgWsProxy_windows.exe`
- Windows 7 (x64) для `TgWsProxy_windows_7_64bit.exe`
- Windows 7 (x32) для `TgWsProxy_windows_7_32bit.exe`
- Intel macOS 10.15+
- Apple Silicon macOS 11.0+
- Linux x86_64
## Лицензия
[MIT License](LICENSE)