Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

85 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ MTProto Checker

Read in English | На русском | δΈ­ζ–‡ | فارسی

A powerful tool to verify Telegram MTProto Proxies by performing real protocol handshakes. Unlike simple TCP checkers, this tool attempts to fetch the actual server configuration from Telegram via the proxy, ensuring 100% connectivity and eliminating the "Connecting..." issue.

UI Screenshot

🌟 Features

  • Deep inspection: A real MTProto handshake and a help.getNearestDC call through the proxy β€” not a TCP ping β€” so "working" means Telegram actually connects.
  • Go backend: Powered by gotd/td β€” fast, stable, one ~21MB binary with no dependencies.
  • Paste anything: Dirty lists are cleaned automatically β€” mangled tg:// / https://t.me links are fixed, spam secrets and invalid ports dropped β€” and no phone login is needed (public test keys).
  • Three ways to load a list: Paste it, pick a .txt/.csv/.list file, or drag one onto the input box.
  • Pause & resume: Interrupt a scan and continue where it left off without rechecking.
  • Results ready to use: Working proxies land in a table sorted by ping, with per-row copy, a plain-text view, and TXT/JSON export.
  • Interface: Dark & light themes, four languages (English, Persian, Russian, Chinese).

πŸš€ Installation

Option 1 β€” Download from Releases

Download the pre-built binary for your platform from Releases.

Platform File
Windows (amd64) mtproto-checker-windows-amd64.exe
Linux (amd64) mtproto-checker-linux-amd64
Linux (arm64) mtproto-checker-linux-arm64
macOS (Intel) mtproto-checker-darwin-amd64
macOS (Apple Silicon) mtproto-checker-darwin-arm64

Run the binary. Once the server is listening, your browser opens automatically at the bound address (default http://127.0.0.1:3000). Set NO_BROWSER=1 to disable the auto-open; it is also skipped automatically when HOST is set to a non-loopback address (e.g. a headless server with HOST=0.0.0.0). If the launch fails, the server keeps running β€” open the printed address manually.

The server listens on 127.0.0.1 only. Set the PORT environment variable to change the port, and HOST=0.0.0.0 to expose it to the network β€” there is no authentication, so opt in deliberately.

Option 2 β€” Build from Source

Requires Go 1.26.3+ (matches the go directive in go.mod). Download Go.

git clone https://github.com/rahgozar94725/MTProto-Checker.git
cd MTProto-Checker
go build -o mtproto-checker .
./mtproto-checker

Binary: ~21MB, no other dependencies.

πŸ“– How to Use

  1. Get Proxies: Copy your list of mixed/dirty MTProto proxies.

    Tip: You can find a huge list of free proxies in this repository.

  2. Load the List: Paste into the "Input List" box, click "File", or drag a file onto the box.
  3. Start Check: Click the "Start Check" button.
  4. Wait: Invalid formats are filtered out first, then connections are tested in batches with live progress.
  5. Collect Results: Working proxies appear in the results table, fastest first β€” copy a single row, click "Copy Working List", or export as TXT/JSON.

πŸ”Œ HTTP API

The UI uses POST /check-stream (Server-Sent Events). For scripts, POST /check is the supported endpoint β€” one proxy per request:

curl -s http://127.0.0.1:3000/check \
  -H 'Content-Type: application/json' \
  -d '{"server":"1.2.3.4","port":443,"secret":"ee...","timeout":10}'
# {"ok":true,"ping":123}  or  {"ok":false}

timeout is in seconds, clamped to 3–30 (default 5). Request bodies are capped at 8 MiB, and batch requests accept at most 10 000 proxies (HTTP 413 beyond either limit).

POST /check-batch is deprecated: it still works but answers with a Deprecation: true header and will be removed in a future release. Use /check for scripting or /check-stream for streaming results.

βš™οΈ How it Works

This tool spins up a real Telegram client in the background and connects exactly like the phone app does β€” if it succeeds, the proxy definitely works. Many proxies respond to TCP pings but fail to encrypt/decrypt Telegram packets (fake proxies).

  1. Parses & Sanitizes: Cleans up broken links (e.g., .&port typos).
  2. Validates Secret: Rejects secrets that are too long (spam padding) or invalid.
  3. Connects: Establishes a secure MTProto connection through the proxy.
  4. Invokes API: Sends a help.getNearestDC request to Telegram Data Centers.
  5. Result: If the server replies, the proxy is marked as Working with its latency.

πŸ›  Tech

  • gotd/td β€” MTProto API client with native MTProxy support
  • Vanilla HTML/CSS/JS frontend β€” no frameworks, no build step
  • Single binary, no external dependencies

β˜• Support

If you found this tool useful, you can support the development:

Crypto donation button by NOWPayments

πŸ“ License

This project is open-source and available under the MIT License.

About

πŸ›‘οΈ Real MTProto proxy checker β€” performs actual Telegram handshake via gotd/td to verify proxy connectivity, not just TCP ping. Go backend, web UI, 4 languages.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages