Local SOCKS5 proxy server that accelerates Telegram Desktop by routing traffic through WebSocket connections to Telegram DCs
Scanned 9/8/2026
Install to Claude Code
npx -y skills add Aradotso/trending-skills --skill tg-ws-proxy-telegram-socks5 --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tg Ws Proxy Telegram Socks5?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aradotso-tg-ws-proxy-telegram-socks5)More formats (shields.io, HTML) on the badges page.
---
name: tg-ws-proxy-telegram-socks5
description: Local SOCKS5 proxy server that accelerates Telegram Desktop by routing traffic through WebSocket connections to Telegram DCs
triggers:
- set up tg-ws-proxy
- telegram proxy not working
- bypass telegram blocking with websocket
- configure socks5 proxy for telegram desktop
- tg-ws-proxy installation and setup
- telegram websocket proxy python
- run tg-ws-proxy from source
- telegram dc websocket tunnel
---
# TG WS Proxy
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
**TG WS Proxy** is a local SOCKS5 proxy server for Telegram Desktop that reroutes traffic through WebSocket (WSS) connections to Telegram's Data Centers, bypassing network-level blocking without external servers.
```
Telegram Desktop → SOCKS5 (127.0.0.1:1080) → TG WS Proxy → WSS → Telegram DC
```
---
## How It Works
1. Starts a local SOCKS5 proxy on `127.0.0.1:1080`
2. Intercepts connections to Telegram IP addresses
3. Extracts DC ID from MTProto obfuscation init packet
4. Opens a WebSocket (TLS) connection to the matching DC via Telegram domains
5. Falls back to direct TCP if WebSocket returns a 302 redirect
---
## Installation
### From Source (All Platforms)
```bash
git clone https://github.com/Flowseal/tg-ws-proxy.git
cd tg-ws-proxy
pip install -e .
```
### Run Console Proxy (No GUI)
```bash
tg-ws-proxy
```
### Run with Tray GUI
```bash
# Windows
tg-ws-proxy-tray-win
# macOS
tg-ws-proxy-tray-macos
# Linux
tg-ws-proxy-tray-linux
```
### Linux — AUR (Arch-based)
```bash
paru -S tg-ws-proxy-bin
# or
git clone https://aur.archlinux.org/tg-ws-proxy-bin.git
cd tg-ws-proxy-bin
makepkg -si
```
### Linux — systemd CLI
```bash
sudo systemctl start tg-ws-proxy-cli@1080
```
### Linux — .deb
Download `TgWsProxy_linux_amd64.deb` from releases and install:
```bash
sudo dpkg -i TgWsProxy_linux_amd64.deb
```
### Linux — binary
```bash
chmod +x TgWsProxy_linux_amd64
./TgWsProxy_linux_amd64
```
---
## CLI Reference
```bash
tg-ws-proxy [--port PORT] [--host HOST] [--dc-ip DC:IP ...] [-v]
```
| Argument | Default | Description |
|---|---|---|
| `--port` | `1080` | SOCKS5 proxy port |
| `--host` | `127.0.0.1` | SOCKS5 proxy bind host |
| `--dc-ip` | `2:149.154.167.220`, `4:149.154.167.220` | Target IP per DC ID (repeat for multiple) |
| `-v`, `--verbose` | off | Enable DEBUG logging |
### Examples
```bash
# Default startup
tg-ws-proxy
# Custom port
tg-ws-proxy --port 9050
# Specify multiple DCs with IPs
tg-ws-proxy --dc-ip 1:149.154.175.205 --dc-ip 2:149.154.167.220 --dc-ip 4:149.154.167.220
# Verbose debug logging
tg-ws-proxy -v
# Full custom example
tg-ws-proxy --host 0.0.0.0 --port 1080 --dc-ip 2:149.154.167.220 -v
```
---
## Configuration File
The tray application stores config in a platform-specific location:
- **Windows:** `%APPDATA%/TgWsProxy/config.json`
- **macOS:** `~/Library/Application Support/TgWsProxy/config.json`
- **Linux:** `~/.config/TgWsProxy/config.json` (or `$XDG_CONFIG_HOME/TgWsProxy/config.json`)
### config.json structure
```json
{
"port": 1080,
"dc_ip": [
"2:149.154.167.220",
"4:149.154.167.220"
],
"verbose": false
}
```
---
## pyproject.toml Script Registration
CLI entry points are declared in `pyproject.toml`:
```toml
[project.scripts]
tg-ws-proxy = "proxy.tg_ws_proxy:main"
tg-ws-proxy-tray-win = "windows:main"
tg-ws-proxy-tray-macos = "macos:main"
tg-ws-proxy-tray-linux = "linux:main"
```
---
## Connecting Telegram Desktop
### Manual Setup
1. Open Telegram Desktop
2. Go to **Settings → Advanced → Connection type → Use custom proxy**
3. Click **Add Proxy** and set:
- **Type:** SOCKS5
- **Server:** `127.0.0.1`
- **Port:** `1080`
- **Username/Password:** leave empty
4. Click **Save** and enable the proxy
### Automatic (Tray GUI)
Right-click the tray icon → **"Открыть в Telegram"** — this opens a `tg://socks` deep link that auto-configures Telegram Desktop.
---
## Code Examples
### Launching the Proxy Programmatically
```python
from proxy.tg_ws_proxy import main
import threading
# Run proxy in background thread
proxy_thread = threading.Thread(target=main, daemon=True)
proxy_thread.start()
```
### Using the Proxy with Python Requests (via PySocks)
```bash
pip install requests[socks]
```
```python
import requests
proxies = {
"http": "socks5h://127.0.0.1:1080",
"https": "socks5h://127.0.0.1:1080",
}
response = requests.get("https://api.telegram.org/botTOKEN/getMe", proxies=proxies)
print(response.json())
```
### Using with Telethon (MTProto client)
```python
from telethon import TelegramClient
from telethon.network.connection.tcpabridged import ConnectionTcpAbridged
import socks
client = TelegramClient(
'session',
api_id=int(os.environ["TG_API_ID"]),
api_hash=os.environ["TG_API_HASH"],
proxy=(socks.SOCKS5, '127.0.0.1', 1080)
)
async def main():
await client.start()
me = await client.get_me()
print(me.username)
import asyncio
asyncio.run(main())
```
### Custom DC IP Mapping (Python)
```python
import subprocess
dc_map = {
1: "149.154.175.205",
2: "149.154.167.220",
3: "149.154.175.100",
4: "149.154.167.220",
5: "91.108.56.130",
}
dc_args = []
for dc_id, ip in dc_map.items():
dc_args += ["--dc-ip", f"{dc_id}:{ip}"]
subprocess.Popen(["tg-ws-proxy", "--port", "1080"] + dc_args)
```
---
## Building Binaries (PyInstaller)
```bash
# Windows
pyinstaller packaging/windows.spec
# macOS
pyinstaller packaging/macos.spec
# Linux
pyinstaller packaging/linux.spec
```
Builds are also produced automatically via GitHub Actions in `.github/workflows/build.yml`.
---
## Minimum OS Support
| Binary | Minimum Version |
|---|---|
| `TgWsProxy_windows.exe` | Windows 10+ |
| `TgWsProxy_windows_7_64bit.exe` | Windows 7 x64 |
| `TgWsProxy_windows_7_32bit.exe` | Windows 7 x32 |
| `TgWsProxy_macos_universal.dmg` (Intel) | macOS 10.15+ |
| `TgWsProxy_macos_universal.dmg` (Apple Silicon) | macOS 11.0+ |
| `TgWsProxy_linux_amd64` | Linux x86_64 + AppIndicator |
---
## Troubleshooting
### Telegram still not connecting
- Confirm the proxy is running: `tg-ws-proxy -v` and watch for connection logs
- Make sure Telegram Desktop is set to SOCKS5, not HTTP/MTProxy
- Try restarting the proxy from the tray menu (**Перезапустить прокси**)
- Check no firewall or other process is blocking port `1080`
### Port already in use
```bash
# Find what's using port 1080
lsof -i :1080 # macOS/Linux
netstat -ano | findstr :1080 # Windows
# Run on a different port
tg-ws-proxy --port 1081
```
Then update Telegram Desktop's proxy port to `1081`.
### Windows Defender false positive (Wacatac)
- Download the `win7` variant — functionally identical, lower detection rate
- Or temporarily disable Defender, download, add to exclusions, re-enable
- Verify the build on [VirusTotal](https://virustotal.com) using the file hash
### macOS "unverified developer" block
1. Open **System Settings → Privacy & Security**
2. Scroll down and click **Open Anyway** next to TG WS Proxy
### Linux tray icon not visible
AppIndicator is required. Install it:
```bash
# Ubuntu/Debian
sudo apt install gir1.2-appindicator3-0.1
# Fedora
sudo dnf install libappindicator-gtk3
```
### WebSocket not available — proxy falls back to TCP
This is expected behavior. If WS returns a 302 redirect, the proxy automatically uses direct TCP. No action needed; Telegram will still connect.
### Verbose debug logging
```bash
tg-ws-proxy -v
```
Or set `"verbose": true` in `config.json` for the tray app.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!