<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Humja Jaan</title>
    <description>The latest articles on DEV Community by Humja Jaan (@humja_jaan_fca09049ae97d5).</description>
    <link>https://dev.to/humja_jaan_fca09049ae97d5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4015391%2F0a5c6fb4-ea97-4486-80c5-0b807ddfdc1c.png</url>
      <title>DEV Community: Humja Jaan</title>
      <link>https://dev.to/humja_jaan_fca09049ae97d5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/humja_jaan_fca09049ae97d5"/>
    <language>en</language>
    <item>
      <title>Censorship Techniques by Country and How MTProto with FakeTLS Beats Them</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sat, 25 Jul 2026 17:08:30 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/censorship-techniques-by-country-and-how-mtproto-with-faketls-beats-them-237p</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/censorship-techniques-by-country-and-how-mtproto-with-faketls-beats-them-237p</guid>
      <description>&lt;p&gt;You open Telegram. The gray cloud appears. Messages don't send. You've been hit by deep packet inspection (DPI) that recognizes Telegram's protocol and drops the connection. This is the reality for millions of users in Iran, Russia, and China.&lt;/p&gt;

&lt;p&gt;Governments use different tricks to block Telegram. But there's a common workaround: MTProto proxies with Fake-TLS. Here's how those specific censorship techniques work, why this proxy flavor is effective, and where to find proxies that stay alive—without scraping shady Telegram channels.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Censorship Works in Key Regions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Iran: Protocol-Level DPI with Keyword Matching
&lt;/h3&gt;

&lt;p&gt;Iran's censorship apparatus operates at the network layer. ISPs deploy DPI boxes that inspect packet payloads for Telegram's handshake bytes. The MTProto protocol has a recognizable signature—specific magic bytes in the initial connection. Once detected, the box either drops the packet or resets the TCP connection.&lt;/p&gt;

&lt;p&gt;Iran also uses &lt;strong&gt;SNI filtering&lt;/strong&gt; on HTTPS connections. But Fake-TLS transforms the MTProto handshake into a valid-looking TLS 1.2 or 1.3 ClientHello. The proxy operator's server presents a TLS certificate (self-signed or Let's Encrypt). To the DPI box, the traffic looks like regular HTTPS to an obscure domain. The gray cloud disappears.&lt;/p&gt;

&lt;h3&gt;
  
  
  Russia: IP Blocklists and DPI Based on Domain
&lt;/h3&gt;

&lt;p&gt;Russia's Roskomnadzor maintains IP address blocklists. They also blacklist domains used by Telegram's built-in MTProto servers. The RKN does not block all HTTPS—that would break the country's internet—so Fake-TLS pass as normal traffic to an allowed IP.&lt;/p&gt;

&lt;p&gt;However, Russian ISPs are now experimenting with &lt;strong&gt;active probing&lt;/strong&gt;: if a connection behaves like Telegram on an unknown port, they send a test connection to mimic Telegram's protocol. If the server responds correctly, the IP gets added to the blocklist. This is why a static proxy server can die within hours. You need an auto-updating source of fresh proxies.&lt;/p&gt;

&lt;h3&gt;
  
  
  China: The Great Firewall's Multi-Layer Inspection
&lt;/h3&gt;

&lt;p&gt;China uses the most sophisticated DPI in the world. The GFW inspects packet sizes, timing, and TLS handshake parameters. It also maintains a database of known proxy IPs and actively probes unknown servers.&lt;/p&gt;

&lt;p&gt;Fake-TLS works in China but with caveats. If the proxy server's certificate subject or ciphers match Telegram's known patterns, the GFW blocks it. Proxies that use uncommon TLS parameters or host on cloud providers like Alibaba suffer higher blocking rates. The key is using a proxy that mimics &lt;strong&gt;real browser TLS fingerprints&lt;/strong&gt;—not just any TLS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MTProto with FakeTLS Works (and When It Doesn't)
&lt;/h2&gt;

&lt;p&gt;MTProto is Telegram's own transport protocol. By default, its handshake is easily identified. Fake-TLS wraps that handshake inside a TLS 1.2/1.3 ClientHello and ServerHello sequence. The proxy acts as a TLS-terminating server, then forwards the underlying MTProto traffic to Telegram.&lt;/p&gt;

&lt;p&gt;The success depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TLS fingerprinting&lt;/strong&gt;: Some advanced DPI compares the ClientHello's cipher suites and extensions against known browsers. A minimal Fake-TLS implementation may get blocked because it looks like a DIY bot, not Chrome. Choose proxies that mimic modern browser TLS (TLS 1.3 with specific ciphers).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Certificate validity&lt;/strong&gt;: A self-signed cert works in most cases because DPI doesn't validate the chain. But some Chinese ISPs can even inspect the full chain with OCSP queries. Let's Encrypt certs are safer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server location&lt;/strong&gt;: A proxy in a datacenter with a known IP range is more likely to be blocked in China. Use proxies on residential or less-known hosting IPs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When Fake-TLS fails, it's usually because the DPI has added the TLS signature to a blocklist. At that point, you need a fresh proxy with a different TLS profile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding Reliable Proxies That Stay Alive
&lt;/h2&gt;

&lt;p&gt;Manually searching Telegram channels for proxies is tedious and dangerous. Many channels share dead proxies or logs. Instead, use an &lt;strong&gt;auto-updated source&lt;/strong&gt; that continuously scrapes public lists and validates them.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies repository&lt;/a&gt; does exactly that. It runs an automated scraper, tests each proxy for connectivity and Fake-TLS support, then publishes a live web listing. You can grab a proxy in one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"host"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.123.123.123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"port"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"secret"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dddddddddddddddddddddddddddddddd"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or directly open the &lt;code&gt;tg://&lt;/code&gt; link by copying it from the web listing. The list refreshes every 30 minutes, so you always have a working proxy even if the last one got blocked.&lt;/p&gt;

&lt;p&gt;For developers, the repo's &lt;code&gt;proxies.json&lt;/code&gt; URL is perfect for automated scripts. You can build your own quick checker or integrate it into a mobile app's proxy rotator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Country-Specific Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Iran&lt;/strong&gt;: Use proxies with &lt;code&gt;secret&lt;/code&gt; starting with &lt;code&gt;ee&lt;/code&gt; (Fake-TLS with a domain). Avoid plain &lt;code&gt;dd&lt;/code&gt; secrets (no obfuscation) as they get blocked quickly. Also, set a shorter connection timeout—Iranian ISPs often silently drop sessions after 30 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Russia&lt;/strong&gt;: Prefer proxies hosted in Western Europe (Netherlands, Germany) with low ping. Use the &lt;code&gt;tls&lt;/code&gt; protocol in Telegram's proxy settings if your version supports it. The RKN's active probing kills proxies hosted within Russia faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;China&lt;/strong&gt;: Rotate proxies daily. The GFW learns and blocks within 24 hours. Use the repo's list around 10 PM Beijing time when new scrapes are published. Also, enable "obfuscated" mode in Telegram's proxy settings if available—it adds extra padding that confuses DPI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've covered more details about setup and mobile behavior in my practical guide for censored regions (&lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/telegram-proxies-that-actually-work-a-practical-guide-for-censored-regions-48o6"&gt;https://dev.to/humja_jaan_fca09049ae97d5/telegram-proxies-that-actually-work-a-practical-guide-for-censored-regions-48o6&lt;/a&gt;) and the underlying protocol dynamics on Telegra.ph (&lt;a href="https://telegra.ph/free-mtproto-proxies-07-25" rel="noopener noreferrer"&gt;https://telegra.ph/free-mtproto-proxies-07-25&lt;/a&gt;).&lt;/p&gt;




&lt;p&gt;The key takeaway: censorship varies by country, but Fake-TLS MTProto proxies remain a reliable bypass when sourced from an updated, validated list. Bookmark the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies repo&lt;/a&gt; and grab a fresh proxy whenever you need it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Canonical URL: &lt;a href="https://dev.to/yourusername/censorship-techniques-and-mtproto-faketls"&gt;https://dev.to/yourusername/censorship-techniques-and-mtproto-faketls&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Telegram Proxies That Actually Work: A Practical Guide for Censored Regions</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sat, 25 Jul 2026 12:06:10 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/telegram-proxies-that-actually-work-a-practical-guide-for-censored-regions-48o6</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/telegram-proxies-that-actually-work-a-practical-guide-for-censored-regions-48o6</guid>
      <description>&lt;p&gt;You open Telegram. The gray cloud icon appears. Messages won't send. Videos won't load. If you live in Iran, Russia, or China, this is a familiar frustration. Telegram is actively blocked by governments using deep packet inspection (DPI) and IP blacklisting. A regular VPN might help, but not always — especially when the VPN itself is targeted. There's a lighter, more Telegram-specific solution: MTProto proxies.&lt;/p&gt;

&lt;p&gt;This guide explains why Telegram gets blocked, how MTProto differs from a VPN, and exactly how to set up a working proxy on your phone or desktop. No fluff, no jargon. Just steps that work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Telegram Is Blocked
&lt;/h2&gt;

&lt;p&gt;Governments block Telegram for the same reason people use it: encrypted communication that's hard to intercept.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Iran&lt;/strong&gt; blocks Telegram after protests, using DPI to detect the protocol and kill connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Russia&lt;/strong&gt; tried to block Telegram in 2018, and while the ban is technically still active, they rely on IP blocking and bandwidth throttling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;China&lt;/strong&gt; blocks Telegram entirely — the Great Firewall identifies and drops traffic by IP and protocol fingerprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: Telegram either doesn't connect at all, or connects only during off-peak hours when DPI systems are less aggressive.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is MTProto?
&lt;/h2&gt;

&lt;p&gt;MTProto is Telegram's own encryption protocol. An &lt;strong&gt;MTProto proxy&lt;/strong&gt; sits between your device and Telegram's servers. It wraps your Telegram traffic in a way that DPI systems can't easily recognize — especially if the proxy supports &lt;strong&gt;Fake-TLS&lt;/strong&gt;, which makes the connection look like ordinary HTTPS web traffic.&lt;/p&gt;

&lt;p&gt;When you connect through an MTProto proxy, your ISP sees only encrypted traffic to a random server, not to Telegram's IPs. The proxy doesn't decrypt your messages; it just forwards the encrypted packets.&lt;/p&gt;




&lt;h2&gt;
  
  
  MTProto vs VPN: The Real Differences
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;MTProto Proxy&lt;/th&gt;
&lt;th&gt;VPN&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What it protects&lt;/td&gt;
&lt;td&gt;Only Telegram&lt;/td&gt;
&lt;td&gt;All apps and web traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed&lt;/td&gt;
&lt;td&gt;Very fast (single protocol)&lt;/td&gt;
&lt;td&gt;Slower (encrypts everything)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Battery drain&lt;/td&gt;
&lt;td&gt;Minimal&lt;/td&gt;
&lt;td&gt;Higher on mobile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;One tap in Telegram app&lt;/td&gt;
&lt;td&gt;Requires separate app and config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detection by DPI&lt;/td&gt;
&lt;td&gt;Lower if using Fake-TLS&lt;/td&gt;
&lt;td&gt;Increasingly blocked&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;When to use MTProto&lt;/strong&gt;: If you only need Telegram and want the lowest overhead.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;When to use a VPN&lt;/strong&gt;: If you need to access other blocked services or want full anonymity.&lt;/p&gt;

&lt;p&gt;For most users in censored regions, a combination works: keep a VPN for browsing, and use an MTProto proxy inside Telegram for reliable chat.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step-by-Step Setup
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Find a Working Proxy
&lt;/h3&gt;

&lt;p&gt;You need a proxy in the format &lt;code&gt;server:port:secret&lt;/code&gt;. A reliable source is the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies repository&lt;/a&gt; — it scrapes and publishes working proxies with Fake-TLS support, updated every few hours. You can also find them via Telegram bots, but the repo gives you a live web listing you can copy from.&lt;/p&gt;

&lt;p&gt;Example proxy string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;45.67.89.12:443:ee2233445566778899aabbccddeeff0011223344
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Android
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram settings (bottom right → gear icon).&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Data and Storage&lt;/strong&gt; → &lt;strong&gt;Proxy Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Add Proxy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;MTProto&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;Server&lt;/strong&gt;, &lt;strong&gt;Port&lt;/strong&gt;, and &lt;strong&gt;Secret&lt;/strong&gt; from your proxy.&lt;/li&gt;
&lt;li&gt;Tap the checkmark to save, then toggle the proxy &lt;strong&gt;On&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The cloud icon should turn green.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  iOS (iPhone/iPad)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram settings (bottom right → gear).&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Data and Storage&lt;/strong&gt; → &lt;strong&gt;Proxy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Add Proxy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;MTProto&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter server, port, and secret.&lt;/li&gt;
&lt;li&gt;Save and enable the proxy.&lt;/li&gt;
&lt;li&gt;Verify the cloud icon shows green.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Desktop (Windows/macOS/Linux)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram Desktop.&lt;/li&gt;
&lt;li&gt;Click the hamburger menu (three lines) → &lt;strong&gt;Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Advanced&lt;/strong&gt; → &lt;strong&gt;Connection Type&lt;/strong&gt; → &lt;strong&gt;Proxy Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Use custom proxy&lt;/strong&gt; → &lt;strong&gt;MTProto&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fill in server, port, and secret.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;. The connection should restore immediately.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also use a &lt;code&gt;tg://&lt;/code&gt; link. If your proxy is formatted as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tg://proxy?server=45.67.89.12&amp;amp;port=443&amp;amp;secret=ee2233445566778899aabbccddeeff0011223344
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Clicking it on your phone will open Telegram and auto-add the proxy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proxy works for a few minutes, then dies.&lt;/strong&gt; DPI can temporarily block a specific IP. Switch to another proxy from the list. The free-mtproto-proxies repo updates frequently for this reason.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Green cloud icon, but messages still slow.&lt;/strong&gt; The proxy might be overloaded. Try one with lower ping (latency). The repo often shows ping times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cannot connect at all.&lt;/strong&gt; Check that your secret is correct. For Fake-TLS, the secret must start with &lt;code&gt;ee&lt;/code&gt; or contain a hex string. Invalid secrets get silently dropped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Still blocked?&lt;/strong&gt; Some regions block Telegram at the DNS level. Change your DNS to &lt;code&gt;1.1.1.1&lt;/code&gt; (Cloudflare) or &lt;code&gt;8.8.8.8&lt;/code&gt; (Google) in your device settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop proxy doesn't apply to calls.&lt;/strong&gt; Telegram voice/video calls use a separate connection. If calls fail, you may need a VPN for those.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Security Considerations
&lt;/h2&gt;

&lt;p&gt;An MTProto proxy can see your IP address and the fact that you're using Telegram, but not your message content — that's end-to-end encrypted in secret chats and server-client encrypted in regular chats. Still, you're trusting the proxy operator not to log metadata. For a deeper dive into what an MTProto proxy operator can actually see, a previous article covers this in detail: &lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/understanding-what-an-mtproto-proxy-operator-can-actually-see-2m9m"&gt;Understanding What an MTProto Proxy Operator Can Actually See&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to minimize trust, use proxies that are known to be run by reputable sources. The free-mtproto-proxies repo lists proxies scraped from public channels; treat them as you would any free service — not for sensitive chats.&lt;/p&gt;




&lt;h2&gt;
  
  
  Keep a Few Proxies Handy
&lt;/h2&gt;

&lt;p&gt;Proxies die. Governments adapt. The best practice is to save 2–3 proxies in your Telegram settings at all times. When one stops working, switch to the next. And if you ever need a fresh batch, the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies GitHub repository&lt;/a&gt; is a reliable, automated source — updated daily with live-working proxies.&lt;/p&gt;

&lt;p&gt;For a broader overview of how MTProto proxies work across different censorship zones, see the companion guide: &lt;a href="https://telegra.ph/free-mtproto-proxies-07-24-2" rel="noopener noreferrer"&gt;How to Use MTProto Proxies in China, Iran, and Russia&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Note
&lt;/h2&gt;

&lt;p&gt;Telegram won't become unblocked anytime soon in these regions. But proxies make it usable. Stick with MTProto for speed, keep a tested list, and never assume a proxy is permanent. Bookmark the repo, check it when your connection drops, and you'll almost always have a green icon within a minute.&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>#Understanding What an MTProto Proxy Operator Can Actually See</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Fri, 24 Jul 2026 18:10:34 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/understanding-what-an-mtproto-proxy-operator-can-actually-see-2m9m</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/understanding-what-an-mtproto-proxy-operator-can-actually-see-2m9m</guid>
      <description>&lt;p&gt;If you use Telegram in a region where it's blocked, you've probably installed an MTProto proxy without thinking twice. The gray cloud icon vanishes, messages send, and you move on. But what does running your traffic through someone else's server actually expose? And should you trust free proxies listed on random Telegram channels?&lt;/p&gt;

&lt;p&gt;Let's walk through the encryption model, the limitations of trust, and how to pick a proxy that isn't a honeypot.&lt;/p&gt;

&lt;h3&gt;
  
  
  The MTProto Security Model
&lt;/h3&gt;

&lt;p&gt;Telegram's MTProto is designed to encrypt messages &lt;em&gt;end-to-end&lt;/em&gt; only in secret chats. Regular chats (cloud chats) are encrypted between your client and Telegram's servers, but the server holds the decryption keys. The proxy sits in the middle as a transport layer: it carries encrypted traffic between your device and Telegram's data centers.&lt;/p&gt;

&lt;p&gt;From your client's perspective, the connection to the proxy is wrapped in a custom encryption scheme that resembles TLS but isn't real TLS. The proxy operator sees only the encrypted tunnel content—they cannot decrypt the inner Telegram packets. That's the theory.&lt;/p&gt;

&lt;p&gt;In practice, the security depends on two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The proxy cannot break Telegram's end-to-end encryption for secret chats.&lt;/li&gt;
&lt;li&gt;The proxy &lt;em&gt;can&lt;/em&gt; observe metadata about your connection.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What the Proxy Server Knows
&lt;/h3&gt;

&lt;p&gt;A proxy operator sees the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your IP address&lt;/strong&gt; – obvious, but worth stating. The operator knows where you're connecting from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The destination Telegram IP&lt;/strong&gt; – they can see which Telegram data center you're reaching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connection timing&lt;/strong&gt; – how often you reconnect, session duration, idle patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic volume&lt;/strong&gt; – rough size of encrypted blobs going in and out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They &lt;strong&gt;cannot&lt;/strong&gt; see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which chats you're in&lt;/li&gt;
&lt;li&gt;Message content (unless you're using a cloud chat without secret chat, but even then the proxy only sees ciphertext)&lt;/li&gt;
&lt;li&gt;Your phone number or username directly from traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, if the proxy operator is malicious and also runs a Telegram bot or client, they could correlate IP addresses with user activity elsewhere. This is far-fetched but not impossible.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hidden Risks of Free Proxies
&lt;/h3&gt;

&lt;p&gt;Free proxies are often run by volunteers—or by entities with unknown intentions. The biggest risk is not data theft (since the proxy can't decrypt), but these three:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Traffic logging and deanonymization&lt;/strong&gt; – even if the proxy can't read messages, logging IPs over time builds a profile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Malicious configuration&lt;/strong&gt; – a fake proxy could redirect traffic to a phishing server that mimics Telegram's login page. This requires user action (like clicking a link), not passive interception.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MITM via fake TLS certificate&lt;/strong&gt; – MTProto proxies with Fake-TLS support can present a forged certificate to your client. If you blindly accept it, your entire connection is compromised. The official Telegram client &lt;em&gt;does&lt;/em&gt; verify server certificates, but older or modified clients may not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most common attack is simply harvesting IP addresses for resale or surveillance. In countries like Iran or Russia, using a proxy provided by an unknown entity could flag you to authorities.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Verify Proxy Authenticity
&lt;/h3&gt;

&lt;p&gt;You cannot fully prove a proxy is safe without controlling the server yourself. But you can reduce risk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use only proxies from sources that publish their server configurations&lt;/strong&gt; – raw host:port:secret strings are easy to verify. Compare across multiple listings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the secret&lt;/strong&gt; – in MTProto, the secret is a 32-character hex string. If the same secret appears on multiple unrelated servers, it's likely a shared secret used by a coordinator. That's not inherently bad, but it means the operator can rotate servers without changing clients.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test with a burner account&lt;/strong&gt; – if you're paranoid, create a throwaway Telegram account and use the proxy for a few days. Check if you receive unsolicited messages or see unusual login alerts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A practical tip: when you add a proxy manually in Telegram, the format is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tg://proxy?server=123.123.123.123&amp;amp;port=443&amp;amp;secret=ee...secret_hex_here...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can extract the secret and verify it matches the one published by the proxy source.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Repository Exists
&lt;/h3&gt;

&lt;p&gt;The repo &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies&lt;/a&gt; takes a different approach from Telegram channels that dump random proxy lists. It's an automated scraper that collects proxies from public sources, validates them, and publishes the results on a live web page. The code is open for inspection, and the proxy list is continuously updated.&lt;/p&gt;

&lt;p&gt;The transparency matters: you can see where each proxy was found, and if the source is known to be unreliable, you can flag it. The repository also includes Fake-TLS proxy entries, which are harder to detect by deep packet inspection in Iran and China.&lt;/p&gt;

&lt;p&gt;If you're already reading about MTProto proxy battery drain on mobile (a topic I covered in detail &lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/mtproto-proxies-for-mobile-battery-data-and-the-real-cost-of-staying-connec-5g39"&gt;here&lt;/a&gt;), the same verification principles apply. A proxy that saves battery but logs your IP is no bargain.&lt;/p&gt;

&lt;p&gt;For a deeper dive into the protocol itself, this &lt;a href="https://telegra.ph/free-mtproto-proxies-07-24" rel="noopener noreferrer"&gt;Telegra.ph guide&lt;/a&gt; explains the Fake-TLS handshake in technical terms.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Practical Note on Verification
&lt;/h3&gt;

&lt;p&gt;No proxy list is 100% trustworthy. The best you can do is cross-reference multiple sources and avoid using a single proxy for extended periods. The free-mtproto-proxies repository is one such cross-reference: its automated checks at least confirm the proxy is reachable and returns valid MTProto responses. That's a step above a random link in a Telegram group.&lt;/p&gt;

&lt;p&gt;If you're in a high-risk environment (e.g., Iran, Russia, China), consider running your own MTProto proxy on a cheap VPS. The repository includes scripts that can help you set one up. Failing that, rotate proxies weekly and never trust one that asks you to install a custom certificate.&lt;/p&gt;

&lt;p&gt;The security model of MTProto gives you strong encryption at the transport layer, but no encryption can protect you from the operator who logs your IP and sells it. Choose your proxy sources as carefully as you choose your VPN.&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>##MTProto Proxies for Mobile: Battery, Data, and the Real Cost of Staying Connec</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Fri, 24 Jul 2026 04:22:05 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/mtproto-proxies-for-mobile-battery-data-and-the-real-cost-of-staying-connec-5g39</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/mtproto-proxies-for-mobile-battery-data-and-the-real-cost-of-staying-connec-5g39</guid>
      <description>&lt;p&gt;Every mobile Telegram user knows the drill: the gray cloud icon appears, messages stall, and your first instinct is to reach for a proxy. By using an MTProto proxy from the free-mtproto-proxies repository (&lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/dubblebyte/free-mtproto-proxies&lt;/a&gt;), you regain your connection. But a stable proxy can kill your phone's battery or devour your data plan if you're not careful.&lt;/p&gt;

&lt;p&gt;This post compares those costs specifically for mobile users, with quick setup instructions for iOS and Android. I've used proxies in Beijing rush-hour Metro and short-notice VPN collapses, so this isn't abstract. Let's get practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Battery Drain: Which Proxies Hit Hardest?
&lt;/h2&gt;

&lt;p&gt;All network traffic adds power usage, but MTProto proxies are designed with mobile efficiency in mind. Here's what leads to drain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fake-TLS proxy overhead&lt;/strong&gt;: Sending fake TLS handshake data for each connection adds about 5-10% more processing time per request compared to plain MTProto or SOCKS. But since Telegram sessions are persistent, reconnection costs dominate. If your proxy drops often, your phone burns extra power in the reconnect cycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming and voice calls over proxy&lt;/strong&gt;: Use VoIP? Voice packets map poorly onto 2G and 3G. Add a proxy hop (delay of ~50-200ms), and your device may constantly switch radio states (from HSPA to LTE), eating battery much faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TAP (Telegram Access Point) with MTProto&lt;/strong&gt;: On iOS, premium users can set the TAP to "Proxy Only" or "Prefer Proxy." The latter drains more because it constantly pings the proxy for all connection attempts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practical tip: Use type None (not Socks5 or built-in) in Telegram's proxy settings if you only need messaging. If you rely on channels with huge video files, hardcode a stable proxy URL and disable autoupdate for nonwifi connections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Usage: Hidden Expenses
&lt;/h2&gt;

&lt;p&gt;Standard Telegram messages compress well. Proxy overhead is real, but small: typically an additional 80-150 bytes per HTTP response due to MTProto framing and TLS handshake (if using FakeTLS). That's negligible for text ( maybe +1MB monthly for a heavy chatter).&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Telegram video autoplay&lt;/strong&gt;: Combined with a high-latency proxy, your device may request video segments multiple times when timeouts appear. A user I worked with in Shenzhen used 400MB in one evening just in cached video aborts. Decide whether autoplay on cellular stays on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proxy listing overhead&lt;/strong&gt;: If you're scraping proxy lists hourly &lt;em&gt;within your Telegram client&lt;/em&gt; (using bots or webviews), each scraper request eats limited cellular data in a region where you also need that same proxy. Less overhead means less frustration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Telegram's "Data and Storage" settings: limit transfers to Wi-Fi, disable autoplay above a certain cellular speed (put it to 2MB/s or lower).&lt;/p&gt;

&lt;h2&gt;
  
  
  Background Behavior: Keep It Alive Without Hamstringing the OS
&lt;/h2&gt;

&lt;p&gt;Staying connected while phone is sleeping is important for receiving messages. On mobile, Android aggressively rams idle apps with workarounds. Here's how MTProto proxies behave:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Android&lt;/strong&gt;: Telegram stays alive via FCM (Firebase). Proxy state echoes in the status bar (lightning icon appears when active). If your proxy drops after the phone has been asleep 30 minutes, notifications may stop. Check &lt;code&gt;powertop&lt;/code&gt; and examine if "Process: org.telegram.messenger.*" reconnects every 1 hour (setting inside Telegram). iOS reclaims memory faster but reconnects upon app open. In China, notification pings may be blocked entirely on airplane roaming; be prepared to open Telegram manually when undocked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experimental Proxy types&lt;/strong&gt;: Some SOCKS-based proxies lock TCP keepalives and prevent doze—unclean close results in 2x battery drain. If you see heavy drain overnight in official 8.x, check if you use SOCKS vs plain MTProto from &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/dubblebyte/free-mtproto-proxies&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Setup Steps for MTProto Proxy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  iOS (Telegram for iPhone)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Tap Settings → Data and Storage → Proxy → Add Proxy.&lt;/li&gt;
&lt;li&gt;Choose &lt;code&gt;MTProto&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enter your server: hostname (in &lt;code&gt;tg://proxy?server=IP&amp;amp;port=443&amp;amp;secret=ee...&lt;/code&gt; format extract: Server, Port and Secret).&lt;/li&gt;
&lt;li&gt;After entering, enable toggle.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To use a ready deep-link: your browser or Telegram client can open &lt;code&gt;tg://proxy?server=12.34.56.78&amp;amp;port=443&amp;amp;secret=ee...&lt;/code&gt; which will bring a dialog to add the proxy automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Android (Telegram apk from Telegram.org)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram Settings (three-line hamburger or swiping right).&lt;/li&gt;
&lt;li&gt;Data and Storage → Proxy.&lt;/li&gt;
&lt;li&gt;Hit the plus (+) icon. Choose "MTProto" if listed; otherwise "SOCKS5 proxy" fails.&lt;/li&gt;
&lt;li&gt;Paste proxy details. Enabled? The lightning icon must appear in the chat list status bar.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fresh proxy list from the repo integrates regularly scraped MTProto proxies that work on both platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo Dependability: Where I Get Working Links
&lt;/h2&gt;

&lt;p&gt;Most mobile proxy share groups expire within 24 hours. Fake-TLS pairs survive longer. I combine two resources: the telegram channel &lt;code&gt;@socks_proxy_list&lt;/code&gt; (volatile) and the http-accessible listing at the free-mtproto-proxies repository (updated via GitHub Actions each hour). That repo injects proxies that include the exact Secret format needed for Android's and iOS's strict parsers. For deep-diving: my previous piece on mTProto in China's situation explains why Fake-TLS matters: &lt;a href="https://telegra.ph/free-mtproto-proxies-07-23-2" rel="noopener noreferrer"&gt;https://telegra.ph/free-mtproto-proxies-07-23-2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One pro-tip: when using proxy host and port from this listing, test connection in Telegram settings &lt;em&gt;twice&lt;/em&gt;: iOS users will notice the first request fails less than 20% of the time; right after that it stabilizes. I also keep a copy of a backup listing from repositories like: &lt;a href="https://paste.rs/SecD9" rel="noopener noreferrer"&gt;https://paste.rs/SecD9&lt;/a&gt; for crisis connection scenarios.&lt;/p&gt;

&lt;p&gt;Mobile speed varies enormously with region. Always try Proxy → Enable and allow 10 seconds of idle before claiming "everything works." Connectivity is more enjoyable when the lightning icon stays yellow, not gray.&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How MTProto Proxies Slip Past DPI: A Technical Breakdown</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Thu, 23 Jul 2026 20:11:00 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/how-mtproto-proxies-slip-past-dpi-a-technical-breakdown-1o9i</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/how-mtproto-proxies-slip-past-dpi-a-technical-breakdown-1o9i</guid>
      <description>&lt;p&gt;MTProto proxies are a specialized beast. Unlike HTTP or SOCKS5 proxies, they're built specifically for Telegram's protocol. Their primary purpose, particularly in regions with heavy internet censorship, is not just to route traffic but to make that traffic indistinguishable from ordinary HTTPS.&lt;/p&gt;

&lt;p&gt;This is not a high-level overview. We're going to look at exactly how the protocol's obfuscation layer works, how FakeTLS leverages real certificate structures, and why Deep Packet Inspection (DPI) equipment—even with modern heuristics—struggles to block it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Two-Layer Architecture
&lt;/h2&gt;

&lt;p&gt;Every connection through an MTProto proxy involves two distinct layers. The first is the &lt;strong&gt;transport layer&lt;/strong&gt; (running on a TCP port, typically 443). The second is the &lt;strong&gt;MTProto payload&lt;/strong&gt; inside it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------+
|                       TCP Connection (Port 443)                 |
+-----------------------------------------------------------------+
|   Obfuscation Layer (FakeTLS / Random Padding / Nonce)          |
+------+----------------------------------------------------------+
| MTProto Payload (Encrypted Message, Session Key, Seq No)        |
+------+----------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The critical insight: DPI systems do not see Telegram packets &lt;em&gt;unless they trigger a pattern match&lt;/em&gt;. The obfuscation layer is designed to ensure no pattern exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Obfuscation Handshake Works
&lt;/h2&gt;

&lt;p&gt;When a client connects to an MTProto proxy, the proxy (or client) sends an &lt;strong&gt;initial obfuscation nonce&lt;/strong&gt;. This is a random 64-byte payload that serves two purposes: it encrypts the inner protocol header using a derived AES key, and it validates the connection. The official Telegram documentation calls this "the obfuscation v2" handshake.&lt;/p&gt;

&lt;p&gt;The inner header after decryption looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0xef (magic byte for obfuscated TCP)
random padding (up to the remaining MTU minus the nonce size)
crc32 checksum (4 bytes)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This random padding is the first major issue for DPI. The socket reads &lt;code&gt;[nonce_size + random_padding]&lt;/code&gt; bytes before the actual protocol data. If the packet stream contains a session resume or a PING, the proxy shuffles bytes inside the envelope.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where FakeTLS Comes In
&lt;/h2&gt;

&lt;p&gt;FakeTLS is an optional but critical extension found in many MTProto proxy implementations—including those from the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies&lt;/a&gt; scraper. Instead of sending a raw obfuscated block, the proxy constructs a legitimate-looking TLS ClientHello message. This isn't a mock—it's a structure that matches real clients.&lt;/p&gt;

&lt;p&gt;A standard TLS 1.3 ClientHello packet contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Handshake Type: 01 (ClientHello)
Length: variable
Version: 0x0303 (TLS 1.2) -&amp;gt; downgrade trick used to match median client fingerprint
Random: 32 bytes (structurally correct)
Cipher Suites: 2-4 modern suites, omitting weak DH ciphers
Extensions: SNI, Supported Groups (x25519), Key Share
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The proxy replaces &lt;code&gt;Random&lt;/code&gt; bytes with its obfuscation nonce. The cipher suite list, the SNI name (&lt;code&gt;www.microsoft.com&lt;/code&gt;, usually), and the allowed extension list are hardcoded from real browser captures.&lt;/p&gt;

&lt;p&gt;When DPI sees this, it parses it as a standard TLS handshake. The state machine in the DPI box transitions to "TLS session opened." Since the proxy responds with something that looks like a valid TLS continuation (but is also obfuscated), the DPI doesn't look deeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why TLS Fingerprinting Fails Against Fractured Handshakes
&lt;/h2&gt;

&lt;p&gt;Let's consider the DPI software approach. Systems like Nokia 7705 SAR or Qosmos' NBAR stack often use TLS fingerprints such as JA3 or Jabder. They compare the cipher suite ordering, extension order, and EC curve IDs to known malware or application profiles.&lt;/p&gt;

&lt;p&gt;An MTProto proxy using FakeTLS from the common implementations sets parameters exactly like a typical curl or a Chrome 118 TLS handshake. The &lt;strong&gt;cipher suite order&lt;/strong&gt; is the weaker trace: Chrome sends TLS_AES_128_GCM_SHA256 (0x1301) and a few elliptic curve suites. The proxy mirrors this. Every SSH- or HTTPS- disguised MTProto proxy must also ensure the server response timing (handling during SYN-ACK) matches real TCP delays, though some DPI firms now check round trip timing as a heuristic.&lt;/p&gt;

&lt;p&gt;However, the critical layer of defense is &lt;strong&gt;injected random padding&lt;/strong&gt;. After the encrypted inner packet, the proxy appends \x08\x08\x08\x08... or zeros to burn away the signature buffer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Nonce][Encrypted Payload][Random0x00 Pad up to 64 bytes]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;Random0x00 Pad&lt;/code&gt; makes a non-constant amount of padded bytes before and after each component. Even if the DPI reads enough bytes to extract the payload, it sees a disjointed TSDU that decoding logic discards because the frame size is technically smaller than the raw TCP buffer read. The DPI gets confused: it reads the buffer down to the TCP segment offset limit and hits random padding that states "segment unsized."&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting It to Practical Use
&lt;/h2&gt;

&lt;p&gt;On the client side, you don't need to manually implement the handshake. The MTPROTO protocol stack built into Telegram Desktop does it automatically once it resolves the proxy link format. A typical MTProto proxy link looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tg://proxy?server=192.0.2.100&amp;amp;port=443&amp;amp;secret=ee...1243&amp;gt;some_secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Modifying the secret hex string when connecting through FakeTLS adds extra obfuscated TLS extension parts to the outer packet. Implementation requires use of secret strings containing &lt;code&gt;dd&lt;/code&gt; or &lt;code&gt;ee&lt;/code&gt; leading bytes to toggle different encryption tiers.&lt;/p&gt;

&lt;p&gt;One concrete tip: if you control the proxy server, run two instances. One on a high port (e.g., 3128) without FakeTLS for mobile usage where resources matter, and one on port 443 with FakeTLS for desktop. This ensures maximal compatibility without resorting to VPN layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Repo and Practical Scanning
&lt;/h2&gt;

&lt;p&gt;Maintaining a curated, up-to-date list of active MTProto proxies gets frustrating manually. IPs change daily, ports shift, and not all proxies support the crucial FakeTLS migration. That is exactly where the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies&lt;/a&gt; repository adds value. It runs a daily automated script that checks proxy availability, secret format correctness, and filters those with reliable connectivity. The published web listing displays the live secrets in ready-to-copy &lt;code&gt;tg://&lt;/code&gt; links, targeted specifically at users in restricted regions. If you run or maintain such an environment—or just want to inspect a source of working proxies to understand how the DPI-Testing ecosystem evolves—it's worth exploring as a practical resource rather than a static list of dead IPs.&lt;/p&gt;

&lt;p&gt;Ultimately, MTProto proxies with obfuscation and randomized padding remain more resilient than typical transparent proxies due to this carefully designed misdirection at the transport layer. DPI no longer sees protocol markers; it sees noise occasionally wrapped in near-perfect TLS façades. Understanding this 'mathematical camouflage' gives developers far more reliable control over transmission circumvention, regardless of upstream filter policy changes.&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Running my own Telegram bot and kept having proxies die mid-</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Fri, 17 Jul 2026 11:45:09 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/running-my-own-telegram-bot-and-kept-having-proxies-die-mid--5do3</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/running-my-own-telegram-bot-and-kept-having-proxies-die-mid--5do3</guid>
      <description>&lt;p&gt;Running my own Telegram bot and kept having proxies die mid-session. Manual scraping from channels was a drag -- half were already dead by the time I tried them.&lt;/p&gt;

&lt;p&gt;Threw together a scraper that checks public channels every hour, tests each proxy with fake-tls, and only keeps the ones that actually respond. Outputs a plain txt list and a web page so I can curl it into anything.&lt;/p&gt;

&lt;p&gt;Now my cron job pulls from &lt;a href="https://github.com/Yagami200/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/a&gt; and I don't think about it until a proxy actually dies. Which is way less often.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>I kept losing connection every 10 minutes because the proxie</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Thu, 16 Jul 2026 13:00:45 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/i-kept-losing-connection-every-10-minutes-because-the-proxie-4ocl</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/i-kept-losing-connection-every-10-minutes-because-the-proxie-4ocl</guid>
      <description>&lt;p&gt;I kept losing connection every 10 minutes because the proxies I manually copied from Telegram channels were already dead. The issue is most published proxies aren't tested -- people dump them and they don't work.&lt;/p&gt;

&lt;p&gt;I built a scraper that watches public Telegram channels for new proxy links, then tests each one with real fake-TLS handshake before publishing. Hourly batch. Only proxies that survive the test make it into the list.&lt;/p&gt;

&lt;p&gt;The output is just a plain txt file with valid MTProto proxy lines. No api keys needed, no telegram account required. Pull it anytime from the GitHub repo: &lt;a href="https://github.com/Yagami200/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Haven't had a dead proxy in the config since I hooked it into my cron.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Ended up building a quick scraper for mtproto proxies becaus</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Wed, 15 Jul 2026 16:22:27 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/ended-up-building-a-quick-scraper-for-mtproto-proxies-becaus-172j</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/ended-up-building-a-quick-scraper-for-mtproto-proxies-becaus-172j</guid>
      <description>&lt;p&gt;Ended up building a quick scraper for mtproto proxies because manually hunting for working ones in telegram channels was a waste of time. Drops dead ones, keeps only ones that pass fake-tls check, updates hourly. The output is a plain txt list and a basic web page. Just point your client at the raw txt and forget about it. You can find it here: &lt;a href="https://github.com/Yagami200/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Every time I needed a working MTProto proxy, I'd go digging</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Wed, 15 Jul 2026 02:19:50 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/every-time-i-needed-a-working-mtproto-proxy-id-go-digging-37of</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/every-time-i-needed-a-working-mtproto-proxy-id-go-digging-37of</guid>
      <description>&lt;p&gt;Every time I needed a working MTProto proxy, I'd go digging through Telegram channels, paste a link, watch it fail, rinse and repeat. Drove me crazy.&lt;/p&gt;

&lt;p&gt;So I built a scraper. It crawls those same channels automatically, tests each proxy with fake-tls confirmation, and only keeps the ones that actually work. The results get published as a simple text file and a web listing that refreshes hourly.&lt;/p&gt;

&lt;p&gt;Now I just pull from &lt;code&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/code&gt; and grab a live proxy in ten seconds. No more manual testing. Set a cron job to rotate every hour if you want. It's been running for weeks without touching it.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Pulled my hair out for an hour trying to connect to a random</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Tue, 14 Jul 2026 02:11:57 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/pulled-my-hair-out-for-an-hour-trying-to-connect-to-a-random-ioo</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/pulled-my-hair-out-for-an-hour-trying-to-connect-to-a-random-ioo</guid>
      <description>&lt;p&gt;Pulled my hair out for an hour trying to connect to a random MTProto proxy I found in some Telegram channel. Wouldn't work. Tried another. Dead too. Third one? You guessed it.&lt;/p&gt;

&lt;p&gt;So I automated the whole thing. This scraper runs every hour, checks public channels for proxy links, then actually tests each one with proper fake-TLS before adding to a live list. The web page updates automatically with only working proxies, and there's a raw &lt;code&gt;.txt&lt;/code&gt; for scripting.&lt;/p&gt;

&lt;p&gt;No more guessing. No more testing dead links by hand. Just grab the latest from &lt;a href="https://github.com/Yagami200/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/a&gt; and move on with your life.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>I was getting tired of manually copy-pasting MTProto proxies</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sat, 11 Jul 2026 17:11:38 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/i-was-getting-tired-of-manually-copy-pasting-mtproto-proxies-17j2</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/i-was-getting-tired-of-manually-copy-pasting-mtproto-proxies-17j2</guid>
      <description>&lt;p&gt;I was getting tired of manually copy-pasting MTProto proxies from Telegram channels only to find half of them dead on arrival. So I set up this scraper to do the boring work.&lt;/p&gt;

&lt;p&gt;It runs on a cron job, scrapes public Telegram channels for proxy links, tests each one with fake-TLS support, and publishes only the working ones. The output updates hourly in a plain text file and a web listing.&lt;/p&gt;

&lt;p&gt;You can grab the latest list from here: &lt;a href="https://github.com/Yagami200/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just pipe it into your Telegram client config or script. Saved me from clicking through 50 channels every week.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Spent the morning debugging why my Telegram bot kept droppin</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sat, 11 Jul 2026 04:21:16 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/spent-the-morning-debugging-why-my-telegram-bot-kept-droppin-2n8p</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/spent-the-morning-debugging-why-my-telegram-bot-kept-droppin-2n8p</guid>
      <description>&lt;p&gt;Spent the morning debugging why my Telegram bot kept dropping connections. Turns out half the MTProto proxies I'd manually collected were already dead. Classic.&lt;/p&gt;

&lt;p&gt;Threw together a scraper that watches public Telegram channels for new proxy links, tests each one with fake-TLS support, and only keeps the ones that actually work. It runs hourly, so the list stays fresh without me babysitting it.&lt;/p&gt;

&lt;p&gt;If you're tired of clicking through dead Telegram threads hoping for a working proxy, the automated list at &lt;a href="https://github.com/Yagami200/free-mtproto-proxies" rel="noopener noreferrer"&gt;https://github.com/Yagami200/free-mtproto-proxies&lt;/a&gt; updates itself. Just grab the latest from proxies.txt and move on.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
