DEV Community

Humja Jaan
Humja Jaan

Posted on

8 Months of Testing MTProto Proxies: What Works, What Breaks

I've been maintaining a public list of MTProto proxies for Telegram since early 2025. That means I've tested thousands of endpoints. Some lasted weeks. Others died within hours. A few were clearly honeypots.

This is what I learned from the data.

How I Test Proxies

My testing setup is a 5-node fleet: one in a censored region (Iran, via a friend's server), one behind residential CGNAT in Russia, one on a cheap VPS in Germany, and two cloud instances in the US and Singapore. Every candidate proxy gets hit with the same set of checks:

  1. Connection establishment – Can TCP handshake complete? Takes under 500ms or it's out.
  2. TLS handshake – For fake-TLS proxies, does the certificate chain pass OpenSSL verification? I log any cert errors.
  3. Data transfer – Send a 1MB random payload through the proxy and verify the round-trip. Any packet corruption disqualifies the proxy.
  4. Stability – Reconnect every 60 seconds for 24 hours. Record how many disconnections occur.
  5. DNS leak test – I send a query through the proxy and check if the DNS server belongs to a known Telegram infrastructure. If it resolves to something else, that's suspicious.

This isn't perfect. I can't test for every C2C (country-to-country) scenario. But it catches the obvious broken proxies.

Common Failure Modes

Over 8 months, I've seen proxies fail in predictable patterns.

IP blacklisting is the most common. A proxy works for 12-24 hours, then Telegram's servers start returning 403s. The IP gets added to their blocklist because it's used by too many users. This happens faster with public proxies than private ones because Telegram can correlate connection patterns.

TLS handshake failures come next. Fake-TLS proxies that generate certificates on the fly often produce self-signed certs that don't match the requested SNI. Some clients don't care. Telegram's official client does. If the cert doesn't validate, the connection drops.

Server overload is silent but deadly. A proxy works great for the first 10 users. At 20 concurrent connections, latency doubles. At 50, it becomes unusable. The proxy operator often doesn't notice until users stop using it.

Port blocking by ISPs is another one. Many governments block common proxy ports (443, 80, 8080). Proxies using non-standard ports (like 993, 990, 8443) survive longer. My testing shows ports 990 and 993 have 40% longer median uptime in countries like Russia.

Latency Differences

Direct Telegram connection in an uncensored region gives you about 30-50ms to the nearest server. Through a good proxy, you add 50-100ms. Through a bad proxy, watch out.

I measured average latencies from my German VPS:

Proxy type Median latency (ms) P95 latency
Direct (uncensored) 42 89
Plain MTProto proxy 95 210
Fake-TLS proxy (good) 120 250
Fake-TLS proxy (bad) 350 900+

The worst cases were fake-TLS proxies hosted on cheap residential connections in Russia. Latency spikes to 2 seconds during evening hours. The proxy works but the user experience is terrible.

For mobile users, latency over 200ms causes noticeable lag in voice calls. For messaging only, even 500ms is fine.

Recommendations

If you need a reliable proxy:

  • Prefer fake-TLS proxies over plain MTProto. They bypass DPI better and survive longer. I explained how they beat censorship techniques in a detailed post that covers country-specific blocking patterns.
  • Test latency before using. Ping the proxy IP from your location. If it's above 300ms, find another one.
  • Have a backup. Keep 3-4 proxies in your Telegram proxy list. When one fails, the app falls back automatically.
  • Use proxies with port 990 or 993. They last longer in censored regions.
  • Don't trust a proxy that's been public for more than a week. Rotate regularly.

Results Summary

  • Median proxy lifetime: 6 days for public proxies, 22 days for semi-private ones (shared among few users)
  • Failure rate within first 24 hours: 28% (mostly due to IP blacklisting)
  • Fake-TLS proxies survive 2.5x longer than plain MTProto proxies
  • Port 993 has the longest average uptime (19 days) among all common ports
  • Residential IP proxies have 15% less jitter than datacenter proxies, but cost more to host

Finding Working Proxies

I publish a curated list of proxies that pass my tests every 4 hours. You can find them in the free-mtproto-proxies repository. The list includes both plain MTProto and fake-TLS proxies, with port numbers and test timestamps. I also maintain a live web page that updates automatically.

The flow is simple: clone the repo, check the list, copy a proxy link (like tg://proxy?server=...&port=...&secret=...), and paste it into Telegram. The app handles the rest.

If you want to understand the protocol details better, I wrote a longer analysis on Telegraph covering how proxy operators can't see your messages but can track metadata. That privacy trade-off is something every user in a censored region should understand before plugging in random proxies.


Testing methodology and latency data as of October 2025. Results will vary by location and ISP.

Top comments (0)