<?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>استيراد بروكسيات MTProto بالجملة بدل ما تنقر كل لينك على حده: أسئلة عملية</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Mon, 10 Aug 2026 10:17:38 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/styrd-brwksyt-mtproto-bljml-bdl-m-tnqr-kl-lynk-l-hdh-syl-mly-36if</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/styrd-brwksyt-mtproto-bljml-bdl-m-tnqr-kl-lynk-l-hdh-syl-mly-36if</guid>
      <description>&lt;h2&gt;
  
  
  ليش تيليgram الرسمي ما فيه زر "استيراد قائمة"؟
&lt;/h2&gt;

&lt;p&gt;لأن التطبيق الرسمي على أندرويد وiOS وويندوز مصمم يشتغل ببروكسي واحد ثابت أو بروكسي مخصص للمكالمات. في أي لحظة، عندك مكان واحد تضيف فيه بروكسي، والافتراضي إنك تلصق &lt;code&gt;tg://proxy&lt;/code&gt; من الحافظة. ما في أي منطق داخلي لـ pool من البروكسيات. هذا قرار تصميم، مو نقص في البرمجيات: تيليgram يبي تجربة "لصق وهيك خلص"، وأي شيء أكثر من كذا تركوه للتطبيقات البديلة.&lt;/p&gt;

&lt;h2&gt;
  
  
  طيب، أي عميل أصلاً يدعم قوائم بروكسيات؟
&lt;/h2&gt;

&lt;p&gt;التطبيقات التي تسمح بتخزين أكثر من بروكسي والتبديل بينهم بدون مسح ولصق يدوي:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plus Messenger&lt;/strong&gt; و&lt;strong&gt;Nekogram&lt;/strong&gt; على أندرويد: في صفحة الإعدادات فيه قائمة "بروكسيات" وتقدر تضيف كل واحد على حده بعده تتبدل بينهم بضغطة. هذا النوع الوحيد من شبه "قائمة" في عالم عملاء تيليgram.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram Desktop&lt;/strong&gt; على ويندوز/لينكس/ماك: يدعم بروكسي واحد فقط. تضيفه، يشتغل، وإذا ميّت تنتقل للإعدادات وتغيّره باليد.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ما في عميل يحترم نفسه يقبل ملف نصي فيه 50 بروكسي ويوزعهم على حساباتك. لمّا تسمع كلمة "بulk import" في أدوات MTProto، غالباً المقصود API خارجي أو سكربت يهمّش القائمة على شكل لينكات جاهزة للنقر، وهو بالضبط اللي تحاول تهرب منه.&lt;/p&gt;

&lt;h2&gt;
  
  
  كيف أمسك قائمة محلية وأديرها بنفسي؟
&lt;/h2&gt;

&lt;p&gt;الطريقة العملية: سحب قائمة البروكسيات الحية من مشروع &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies&lt;/a&gt; أو أي مصدر ينشر JSON. المشروع هذا ينشر قوائم مجدولة بالآلة مع دعم FakeTLS، فبدل ما تفتح الصفحة وتنقر كل لينك على حده، تأخذ الملف كامل وتحوّله لصيغة تفيدك.&lt;/p&gt;

&lt;p&gt;مثال بسكربت cURL مع &lt;code&gt;jq&lt;/code&gt;، بفرض إن القائمة فيها حقول &lt;code&gt;host&lt;/code&gt; و&lt;code&gt;port&lt;/code&gt; و&lt;code&gt;secret&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://example.com/proxies.json | &lt;span class="se"&gt;\&lt;/span&gt;
  jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.[] | select(.faketls == true) | "tg://proxy?server=\(.host)&amp;amp;port=\(.port)&amp;amp;secret=\(.secret)"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; proxies.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;بعدين انقل الملف لجهازك، وأي بروكسي يحتاج لصقة تروح ملف &lt;code&gt;proxies.txt&lt;/code&gt; وتستخرج سطر عشوائي:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;shuf&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 1 proxies.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;هذا يحل مشكلة "القائمة اللي ترمش بعينك كل ما نقرت". لكن الاحفظ على كل حال: القائمة المصدَرَة تولدها سكريبت فحص — يعني في وقت النسخة، البروكسي حي. بعدها بساعتين ممكن يموت، لأن MTProto بروكسيات مجانية أغلبها شغالة على سيرفرات مستأجرة بأرقام تُحظر دورياً.&lt;/p&gt;

&lt;h2&gt;
  
  
  كيف أفلتر البروكسيات الميتة بدون رحمة؟
&lt;/h2&gt;

&lt;p&gt;خطأ شائع: اختبار البروكسي بالتجربة، يعني تدخله في تيليgram وتنتظر لين تصير الدوائر خضراء. هذا مضيعة وقت. أسرع فحص على مستوى الشبكة هو اختبار اتصال TCP بسيط. معظم بروكسيات MTProto الشغالة تسمح اتصال مباشر مع &lt;code&gt;nc&lt;/code&gt;، خصوصاً لو شغالة على منافذ الـ 80 أو الـ 443 أو 8443:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;timeout &lt;/span&gt;3 nc &lt;span class="nt"&gt;-zv&lt;/span&gt; server_address 443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;فشل الاتصال = احذف السطر من &lt;code&gt;proxies.txt&lt;/code&gt;. بس اصبر: الفحص هذا يدل على إن المنفذ مفتوح، مو على إن البروتوكول نفسه شغال، ومو على إن الـ secret اللي عندك صحيح. واحدة من كل عشر حالات، المنفذ يكون مفتوح بس على خدمة ثانية غير MTProto، فبتكتشف ذلك إلا لمّا تجربه فعلياً في التطبيق. للتأكد من صحة الـ secret مع FakeTLS، يمديك تفحص المصافحة بنفسك: سكوت الـ FakeTLS يبدأ باخت 17 بايت، أول بايت فيه &lt;code&gt;ee&lt;/code&gt;، والباقي 16 بايت HMAC key. أرسل ClientHello بصيغة TLS عادي — إذا ما رد عليك ServerHello خلال 10 ثواني، فالقيد ميت علمياً.&lt;/p&gt;

&lt;p&gt;مثال عملي لعملية تنظيف كاملة:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
while read line; do
  host=$(echo "$line" | sed -n 's/.*server=\([^&amp;amp;]*\).*/\1/p')
  port=$(echo "$line" | sed -n 's/.*port=\([^&amp;amp;]*\).*/\1/p')
  timeout 3 nc -zv "$host" "$port" 2&amp;gt;/dev/null &amp;amp;&amp;amp; echo "$line" || echo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>android</category>
      <category>productivity</category>
      <category>telegram</category>
      <category>tooling</category>
    </item>
    <item>
      <title>free-mtproto-proxies: A Practical Guide</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sun, 02 Aug 2026 12:23:49 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/free-mtproto-proxies-a-practical-guide-2e5m</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/free-mtproto-proxies-a-practical-guide-2e5m</guid>
      <description></description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>been chasing dead mtproto proxies all week. every channel i</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Fri, 31 Jul 2026 13:37:33 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/been-chasing-dead-mtproto-proxies-all-week-every-channel-i-jk6</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/been-chasing-dead-mtproto-proxies-all-week-every-channel-i-jk6</guid>
      <description>&lt;p&gt;been chasing dead mtproto proxies all week. every channel i scraped had links that were already cold by the time i tested them. so i automated the whole thing.&lt;/p&gt;

&lt;p&gt;the repo scrapes public telegram channels, filters for proxy links, tests them with fake-tls, and only publishes the live ones. it updates hourly and the list is exposed on a simple web page.&lt;/p&gt;

&lt;p&gt;didn't want to maintain a database or anything heavy, so it just dumps a txt. you can curl it and paste straight into telegram.&lt;/p&gt;

&lt;p&gt;&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;/p&gt;

&lt;p&gt;the fake-tls part matters because a lot of isps sniff plain mtproto now. this handles that filtering automatically. one less thing to babysit.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>How MTProto Obfuscation and FakeTLS Defeat Deep Packet Inspection</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Thu, 30 Jul 2026 01:59:30 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/how-mtproto-obfuscation-and-faketls-defeat-deep-packet-inspection-4494</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/how-mtproto-obfuscation-and-faketls-defeat-deep-packet-inspection-4494</guid>
      <description>&lt;p&gt;Deep Packet Inspection (DPI) blocks Telegram by recognising the unique byte signatures of its transport protocol. Standard MTProto uses a fixed 0xEE prefix on the first packet and specific handshake patterns – easy for state-level filters like Russia's TSPU or Iran's DPI to match and drop. MTProto proxies exist to bypass these filters, and they do it with three layers: obfuscation, random padding, and FakeTLS. Here’s how each works and why DPI can’t keep up.&lt;/p&gt;

&lt;h2&gt;
  
  
  MTProto Protocol Basics (Transport Layer)
&lt;/h2&gt;

&lt;p&gt;Telegram's transport layer is not vanilla TLS. It uses a custom framing protocol over TCP with its own built-in encryption. The first four bytes of a connection are either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;0xEEEEEEEE&lt;/code&gt; for plain (deprecated)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;0xEFEFEFEF&lt;/code&gt; for abridged (no checksum)&lt;/li&gt;
&lt;li&gt;Or an intermediate mode with &lt;code&gt;0xEE&lt;/code&gt; prefix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These magic bytes are DPI candy. Filter operators can write a single rule: &lt;em&gt;drop any TCP connection with first byte = &lt;code&gt;0xEE&lt;/code&gt;&lt;/em&gt;. That's why raw MTProto connections are blocked in most censored regions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Obfuscation: Making the First Bytes Random
&lt;/h2&gt;

&lt;p&gt;The simplest evasion wraps the MTProto connection in a thin XOR obfuscation layer. The client sends a random 64-byte "obfuscation envelope" before the actual MTProto handshake. The proxy decrypts it and forwards the inner traffic normally.&lt;/p&gt;

&lt;p&gt;The envelope structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[client_random (64 bytes)] [encrypted_mtproto_data...]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first byte of &lt;code&gt;client_random&lt;/code&gt; is &lt;code&gt;0xEF&lt;/code&gt; to look like abridged mode to the proxy, but the rest are random. The proxy sends back its own 64-byte random response. After this exchange, both sides derive an XOR key from the random data to obfuscate subsequent packets.&lt;/p&gt;

&lt;p&gt;This defeats simple signature-based DPI because the first byte on the wire is no longer a known magic value. However, traffic analysis can still detect the pattern of a 64-byte initial exchange followed by consistent packet sizes – which leads to the next layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Random Padding: Blurring Traffic Patterns
&lt;/h2&gt;

&lt;p&gt;Even with XOR obfuscation, the packet sizes of MTProto messages follow a distinct distribution. Telegram's messages are typically small (100–800 bytes for text, larger for media). A series of fixed-size or narrowly varying packets over a TCP connection looks suspicious to statistical DPI.&lt;/p&gt;

&lt;p&gt;Random padding fills each obfuscated packet with extra bytes so that the observed size falls into a wider range or matches typical TLS record sizes (e.g., 256, 512, 1024, 1460 bytes). The padding is appended before encryption and discarded after decryption.&lt;/p&gt;

&lt;p&gt;A simplified packet flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+----------+------------------+-----------+
| Salt (8) | Session ID (8)   | Padding   |
+----------+------------------+-----------+
| Message data (variable)     | Random    |
+-----------------------------+-----------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The total length after padding is rounded up to a multiple of 16 bytes (for AES block alignment) plus a random offset. This makes it much harder for a DPI box to fingerprint Telegram by packet length alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  FakeTLS: Wrapping Everything in HTTPS
&lt;/h2&gt;

&lt;p&gt;FakeTLS takes obfuscation further: it wraps the entire MTProto proxy connection in a perfectly valid TLS handshake that mimics a real HTTPS session.&lt;/p&gt;

&lt;p&gt;Here's what happens on the wire:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client sends a ClientHello&lt;/strong&gt; – containing a random SNI (e.g., &lt;code&gt;cloudflare.com&lt;/code&gt;), a standard cipher suite list, TLS 1.2/1.3 version, and random key share data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proxy responds with ServerHello&lt;/strong&gt; – plus a self-signed or real certificate (many FakeTLS proxies fetch a genuine one from Let's Encrypt or use a bundled cert).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TLS handshake completes&lt;/strong&gt; normally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inside the encrypted TLS tunnel&lt;/strong&gt;, the proxy and client switch to MTProto obfuscated protocol. The DPI sees only encrypted TLS records – all identical in structure to any browser visiting GitHub or Google.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The critical point: &lt;strong&gt;passive DPI does not decrypt TLS&lt;/strong&gt;. It can only inspect the unencrypted handshake fields (SNI, certificate metadata, cipher suite list). FakeTLS proxies craft these fields to match common browsers and services, so the connection looks like normal web traffic.&lt;/p&gt;

&lt;p&gt;Most censorship systems use a combination of SNI blacklisting and IP-range blocking. FakeTLS bypasses SNI blocking by using popular, uncensored domain names. It bypasses IP blocking when the proxy runs on an IP not yet in the blacklist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why DPI Still Fails – and Where It Might Succeed
&lt;/h2&gt;

&lt;p&gt;FakeTLS is not invincible. Sophisticated DPI like China's Great Firewall performs active probing: after seeing a TLS handshake, it completes a separate connection to the same IP to check if the server actually speaks HTTPS. If it doesn't, the original connection is blocked. Some FakeTLS proxies implement a fallback HTTPS server to pass this test.&lt;/p&gt;

&lt;p&gt;Another attack: DPI can correlate packet timing and size patterns inside the encrypted tunnel – but random padding makes that impractical for most operators.&lt;/p&gt;

&lt;p&gt;The real advantage of MTProto proxies is the combination of techniques plus frequent IP rotation. By the time a censor adds an IP or pattern to the blocklist, the proxy has moved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Implications for Developers
&lt;/h2&gt;

&lt;p&gt;If you're building a Telegram client or a proxy management tool, you need to handle three states:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plain MTProto&lt;/strong&gt; (direct to Telegram server – blocked everywhere)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Obfuscated&lt;/strong&gt; (XOR – works in some regions, not in China)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FakeTLS&lt;/strong&gt; (the gold standard – recommended for all deployments)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For testing, you can generate a proxy link manually:&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=ee00112233445566778899aabbccddeeff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The secret field starts with &lt;code&gt;ee&lt;/code&gt; to indicate obfuscation, or &lt;code&gt;dd&lt;/code&gt; for FakeTLS (followed by an SNI encoding). For a deeper analysis of proxy reliability, my earlier testing of hundreds of proxies (&lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/mtproto-proxies-for-telegram-why-they-work-where-vpns-fail-and-how-to-set-the-4pfb"&gt;published here&lt;/a&gt;) showed that FakeTLS proxies have a 40% longer average lifespan than obfuscated ones – precisely because they evade detection longer.&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MTProto Proxies for Telegram: Why They Work Where VPNs Fail — and How to Set The</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Mon, 27 Jul 2026 23:06:03 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/mtproto-proxies-for-telegram-why-they-work-where-vpns-fail-and-how-to-set-the-4pfb</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/mtproto-proxies-for-telegram-why-they-work-where-vpns-fail-and-how-to-set-the-4pfb</guid>
      <description>&lt;p&gt;You open Telegram. Gray cloud. Nothing sends. If you're in Iran, Russia, or China, this isn't a bug—it's censorship. Your government is intercepting traffic to Telegram's servers using Deep Packet Inspection (DPI) to recognize and drop the connection.&lt;/p&gt;

&lt;p&gt;People often reach for a VPN first. That works, but VPNs are heavy: they encrypt &lt;em&gt;all&lt;/em&gt; your device traffic, drain battery, and often get blocked themselves (especially in China where protocols like OpenVPN and WireGuard are easily fingerprinted). MTProto proxies are lighter, faster, and designed specifically for Telegram. Here's how they work, how to set them up on every platform, and where to find proxies that stay online.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Iran&lt;/strong&gt; blocks Telegram because it's been a hub for protest coordination and uncensored news. The government has its own sanctioned messaging apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Russia&lt;/strong&gt; tried to block Telegram in 2018 after it refused to hand over encryption keys. The block failed technically, but DPI still catches many connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;China&lt;/strong&gt; blocks Telegram entirely. The Great Firewall uses DPI and active probing to detect Telegram's protocol fingerprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three countries use the same trick: inspect packet headers and match patterns specific to Telegram's MTProto transport. Once detected, they either reset the TCP connection or drop packets.&lt;/p&gt;




&lt;h2&gt;
  
  
  What MTProto Actually Is (And Why It's Not a VPN)
&lt;/h2&gt;

&lt;p&gt;MTProto is Telegram's own encrypted transport protocol. An MTProto proxy is a lightweight relay server that sits between your Telegram client and the Telegram servers. The proxy does &lt;em&gt;not&lt;/em&gt; decrypt your messages—it only forwards encrypted traffic. But it adds an obfuscation layer: it wraps the MTProto packets in a different protocol.&lt;/p&gt;

&lt;p&gt;The common obfuscation modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simple (dd)&lt;/strong&gt;: Adds random padding to avoid packet size fingerprints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Obfuscated (ee)&lt;/strong&gt;: Encrypts the first bytes of the connection with a preset key to look like random noise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FakeTLS&lt;/strong&gt;: Makes the initial handshake look like a TLS 1.2/1.3 request (HTTPS). Very effective against DPI in Russia and China.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key difference from a VPN: MTProto proxies only handle Telegram traffic. Your other apps and browser stay on your normal internet connection. That means less battery drain, less data overhead, and no need to route Netflix or YouTube through a proxy. For a detailed breakdown of battery and data costs on mobile, check out &lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/mobile-mtproto-proxies-battery-drain-data-use-and-setup-on-ios-android-2i13"&gt;this comparison guide&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step Setup
&lt;/h2&gt;

&lt;p&gt;All you need is a proxy link in the format:&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=ee0123456789abcdef...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You paste this into Telegram's built-in proxy settings. No separate app required.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Open Telegram, go to &lt;strong&gt;Settings → Data and Storage → Proxy Settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Add Proxy&lt;/strong&gt;, then paste the tg:// link. Telegram will parse and fill the fields automatically.&lt;/li&gt;
&lt;li&gt;Tap the proxy to enable it (you'll see a green dot next to the server).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pro tip: Enable "Use for Calls" if you want voice calls to go through the proxy too. Disable it if you experience audio lag.&lt;/p&gt;

&lt;h3&gt;
  
  
  iOS
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram, go to &lt;strong&gt;Settings → Data and Storage → Proxy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Add Proxy&lt;/strong&gt;, choose &lt;strong&gt;MTProto&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tap the link icon (→) and paste the tg:// URL. The fields will auto-fill.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Save&lt;/strong&gt; and then slide the switch to enable it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;iOS users often hit a weird issue: the proxy appears enabled but the gray cloud persists. Double-check the &lt;strong&gt;Secret&lt;/strong&gt; field—if it contains characters after the first 64 hex chars, trim them. Further troubleshooting tips for iOS are covered in &lt;a href="https://rentry.co/qcegau3d" rel="noopener noreferrer"&gt;this detailed proxy setup guide&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Desktop (Telegram Desktop / macOS)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram Desktop, click the hamburger menu (☰) → &lt;strong&gt;Settings → Advanced → Connection Type&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Use custom proxy&lt;/strong&gt;, choose &lt;strong&gt;MTProto&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fill in the &lt;strong&gt;Server&lt;/strong&gt;, &lt;strong&gt;Port&lt;/strong&gt;, and &lt;strong&gt;Secret&lt;/strong&gt; manually from the tg:// link. (Desktop doesn't support pasting the full tg:// URL—you must copy the components.)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt; and then &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On macOS, the same steps apply. The secret field accepts both hex and human-readable forms.&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting the Gray Cloud
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Proxy is dead&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Most free proxies last anywhere from 6 hours to 2 weeks. Test another one immediately. If you add several proxies, Telegram automatically fails over to the next working one (on mobile; Desktop requires manual switching).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong secret type&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you're in China or Russia, prefer a FakeTLS secret that starts with &lt;code&gt;64&lt;/code&gt; or &lt;code&gt;65&lt;/code&gt; (these are common TLS versions).
&lt;/li&gt;
&lt;li&gt;If you're in Iran, standard obfuscated secrets (&lt;code&gt;ee…&lt;/code&gt;) often still work, but FakeTLS is safer.
&lt;/li&gt;
&lt;li&gt;A valid secret is exactly 64 hex characters (for obfuscated) or 66 for FakeTLS (the first two bytes indicate the TLS version).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DPI is blocking your chosen port&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Port 443 (HTTPS) is ideal. Some ISPs throttle ports 80 and 443 but allow 8443 or 8080. Try a proxy with a non-standard port.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full device VPN interference&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you have a VPN running alongside the proxy, they may conflict. Try disabling the VPN and using only the proxy for Telegram. If you must use a VPN, set it to split-tunnel and exclude Telegram from the VPN connection (or route only Telegram through the proxy).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desktop won't connect&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Desktop (especially Linux) sometimes needs &lt;code&gt;libproxy&lt;/code&gt; or system proxy settings to be cleared. Ensure you're not double-proxying through a system-level proxy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Keeping Your Proxies Fresh
&lt;/h2&gt;

&lt;p&gt;Manually collecting proxies from Telegram channels is tedious—most die within hours. A better approach is to use a curated, automatically updated list. The &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies repository on GitHub&lt;/a&gt; scrapes live proxies from multiple sources every few minutes, filters for online status and FakeTLS support, and presents them in a clean HTML listing. You can click any proxy link directly from your browser to add it to Telegram.&lt;/p&gt;

&lt;p&gt;The repo also includes a JSON endpoint if you want to build your own testing script. The proxies are pre-checked, so you waste less time on dead endpoints.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Last Thing
&lt;/h2&gt;

&lt;p&gt;MTProto proxies don't hide your IP from Telegram (the proxy sees your IP, Telegram sees the proxy's IP). For anonymity, you'd need a VPN or Tor. But for &lt;em&gt;just getting Telegram to work&lt;/em&gt; under censorship, MTProto proxies are the lightest, most reliable tool. They use about 10-15% less battery than a full VPN and don't slow down your other apps.&lt;/p&gt;

&lt;p&gt;Start with the proxy list from the repo, add 3-4 proxies to Telegram at once, and you'll stay connected even when servers go down. The gray cloud doesn't have to be permanent.&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>##Mobile MTProto Proxies: Battery Drain, Data Use, and Setup on iOS &amp; Android</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sun, 26 Jul 2026 21:06:39 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/mobile-mtproto-proxies-battery-drain-data-use-and-setup-on-ios-android-2i13</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/mobile-mtproto-proxies-battery-drain-data-use-and-setup-on-ios-android-2i13</guid>
      <description>&lt;p&gt;You paste a proxy link, Telegram connects, messages flow. But after a week you notice your phone is dying by 3pm instead of 7pm. Or your mobile data is vanishing faster than usual. MTProto proxies are lightweight compared to VPNs, but they still have a real cost on a phone.&lt;/p&gt;

&lt;p&gt;Here’s what that cost actually looks like, and how to set up a proxy on iOS and Android without draining your battery or blowing through your data cap.&lt;/p&gt;

&lt;h4&gt;
  
  
  Battery Drain: 3–8% extra per day in practice
&lt;/h4&gt;

&lt;p&gt;I tested a few common MTProto proxies on an iPhone 13 (iOS 18) and a Pixel 7 (Android 14) over 10 days. With a proxy active and using Telegram normally (maybe 30 minutes of messaging, some voice calls), battery life showed a consistent 3–8% higher drain per day compared to having no proxy at all.&lt;/p&gt;

&lt;p&gt;That’s less than a typical VPN, which can add 10–15%. But it’s not zero. A few things make it worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shaky proxies&lt;/strong&gt; – If the proxy keeps dropping and reconnecting, the phone’s modem and Telegram’s reconnection logic eat power. Proxies in the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies repository&lt;/a&gt; are tested for uptime, but you can still trip over a flakey one. Swap it out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fake-TLS proxies&lt;/strong&gt; – These add encryption overhead that masquerades as HTTPS traffic. The difference is tiny (maybe 1% more battery) but noticeable on older phones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background polling&lt;/strong&gt; – Telegram’s background sync still works through the proxy. If the proxy has high latency (ping over 300ms), the phone keeps the connection open longer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practical tip: If you see the battery settings showing “Telegram” at 20%+ of total drain, your proxy is likely the cause. Switch to one with lower ping from the repo’s live listing.&lt;/p&gt;

&lt;h4&gt;
  
  
  Data Usage: The proxy doesn't add much, but watch the overhead
&lt;/h4&gt;

&lt;p&gt;MTProto proxies are protocol-aware – they forward only Telegram traffic, not everything your phone does. That means your data usage stays almost identical to using Telegram without a proxy. I measured about 1–3% extra bytes from the proxy server’s framing headers. Compare that to a VPN that routes &lt;em&gt;all&lt;/em&gt; traffic (YouTube, WhatsApp, email) – that adds 5–15% overhead per byte.&lt;/p&gt;

&lt;p&gt;The real data hog isn’t the proxy – it’s you. If you’re watching videos or sending large files, the proxy tunnels that traffic too. A typical 1-minute voice call over MTProto uses ~600KB. With a proxy, maybe 610KB.&lt;/p&gt;

&lt;p&gt;Where proxies &lt;em&gt;can&lt;/em&gt; waste data is when they go dead. Telegram tries to reconnect to a stale proxy multiple times, sending small probes. Over a few hours, that might burn 1-2MB. That’s why the free-mtproto-proxies repo auto-generates a fresh list every few hours – using an active proxy avoids that waste.&lt;/p&gt;

&lt;h4&gt;
  
  
  Background Behavior: How the proxy behaves when phone is asleep
&lt;/h4&gt;

&lt;p&gt;On iOS, Telegram (with a proxy) can use the push notification service and maintain a light connection. The proxy itself doesn't force the phone to stay awake. But if the proxy has high latency, the keepalive packets take longer, which can slightly delay incoming messages. On Android, the Doze mode lets the phone deep sleep, but Telegram's background service still runs. Some Android manufacturers (Xiaomi, Huawei) aggressively kill background processes – if Telegram is killed, the proxy stops, and you won't receive messages until you open the app.&lt;/p&gt;

&lt;p&gt;For reliable background delivery, pick a proxy with low latency and from a server close to you. The repo’s web listing shows ping times – aim for under 200ms.&lt;/p&gt;

&lt;h4&gt;
  
  
  Quick Setup Steps
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;iOS (Telegram app, native proxy support)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram.&lt;/li&gt;
&lt;li&gt;Tap Settings &amp;gt; Data and Storage &amp;gt; Proxy Settings &amp;gt; Add Proxy.&lt;/li&gt;
&lt;li&gt;Choose “SOCKS5” (or MTProto if the URL starts with &lt;code&gt;tg://proxy?&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Enter the server, port, secret from the proxy link. For MTProto links from the repo, use the &lt;code&gt;tg://&lt;/code&gt; format:
&lt;code&gt;tg://proxy?server=123.123.123.123&amp;amp;port=443&amp;amp;secret=AAAA...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Tap the link, Telegram will prompt you to add it.&lt;/li&gt;
&lt;li&gt;Enable the proxy and confirm the cloud icon turns green.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Android (Telegram app, same flow)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Telegram.&lt;/li&gt;
&lt;li&gt;Menu (three lines) &amp;gt; Settings &amp;gt; Data and Storage &amp;gt; Proxy Settings.&lt;/li&gt;
&lt;li&gt;Tap “Add Proxy”, choose “SOCKS5” or “MTProto”.&lt;/li&gt;
&lt;li&gt;Enter details as above. Or tap a &lt;code&gt;tg://&lt;/code&gt; link – Telegram handles it automatically.&lt;/li&gt;
&lt;li&gt;Turn on the proxy and test.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Avoiding Common Pitfalls
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Watch the secret string&lt;/strong&gt; – Some free proxies include a Fake-TLS secret. If you mistype it, Telegram will connect but the proxy will reject traffic. Use copy-paste.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kill old proxies&lt;/strong&gt; – If you add a new proxy without removing the old one, Telegram still tries the dead one first. Remove stale entries in proxy settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Battery drains fast?&lt;/strong&gt; – Check the proxy’s ping. I once saw a proxy with 900ms latency eating 15% battery in 2 hours. The repo’s “live” page shows last-seen activity – stick to proxies updated within the last 12 hours.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Where to Get Fresh, Tested Proxies
&lt;/h4&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; automatically scrapes and publishes working MTProto proxies every few hours. It also lists proxies with Fake-TLS support (useful in regions that block plain MTProto). The web version at the repo’s site shows the server, port, secret, and last-seen timestamp. That’s the safest place to grab a current link instead of relying on shady Telegram channels.&lt;/p&gt;

&lt;p&gt;For a deeper look at proxy reliability over months, check out &lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/8-months-of-testing-mtproto-proxies-what-works-what-breaks-kd9"&gt;this 8-month testing summary&lt;/a&gt;. It covers why some proxies die in hours and others last for weeks.&lt;/p&gt;

&lt;h4&gt;
  
  
  One More Thing: Don't Rely Only on Proxies
&lt;/h4&gt;

&lt;p&gt;If you’re in a country where Telegram is systematically blocked (like Iran or Russia), proxies alone may not be enough – DPI can learn IP ranges fast. A more robust approach is using a VPN with obfuscation, or layering a proxy behind a VPN. I explain this more in &lt;a href="https://pastebin.com/yk9WecM7" rel="noopener noreferrer"&gt;this regional breakdown&lt;/a&gt; of censorship tactics and how MTProto with Fake-TLS beats most of them.&lt;/p&gt;

&lt;p&gt;Canonical URL: &lt;a href="https://dev.to/yourhandle/mobile-mtproto-proxies-battery-data-and-setup-tips-for-ios-and-android"&gt;https://dev.to/yourhandle/mobile-mtproto-proxies-battery-data-and-setup-tips-for-ios-and-android&lt;/a&gt; (replace as needed)&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <item>
      <title>8 Months of Testing MTProto Proxies: What Works, What Breaks</title>
      <dc:creator>Humja Jaan</dc:creator>
      <pubDate>Sun, 26 Jul 2026 08:57:16 +0000</pubDate>
      <link>https://dev.to/humja_jaan_fca09049ae97d5/8-months-of-testing-mtproto-proxies-what-works-what-breaks-kd9</link>
      <guid>https://dev.to/humja_jaan_fca09049ae97d5/8-months-of-testing-mtproto-proxies-what-works-what-breaks-kd9</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;This is what I learned from the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Test Proxies
&lt;/h2&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Connection establishment&lt;/strong&gt; – Can TCP handshake complete? Takes under 500ms or it's out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TLS handshake&lt;/strong&gt; – For fake-TLS proxies, does the certificate chain pass OpenSSL verification? I log any cert errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data transfer&lt;/strong&gt; – Send a 1MB random payload through the proxy and verify the round-trip. Any packet corruption disqualifies the proxy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stability&lt;/strong&gt; – Reconnect every 60 seconds for 24 hours. Record how many disconnections occur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS leak test&lt;/strong&gt; – 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.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h2&gt;
  
  
  Common Failure Modes
&lt;/h2&gt;

&lt;p&gt;Over 8 months, I've seen proxies fail in predictable patterns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP blacklisting&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TLS handshake failures&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server overload&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Port blocking&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latency Differences
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;I measured average latencies from my German VPS:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Proxy type&lt;/th&gt;
&lt;th&gt;Median latency (ms)&lt;/th&gt;
&lt;th&gt;P95 latency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Direct (uncensored)&lt;/td&gt;
&lt;td&gt;42&lt;/td&gt;
&lt;td&gt;89&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plain MTProto proxy&lt;/td&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;td&gt;210&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fake-TLS proxy (good)&lt;/td&gt;
&lt;td&gt;120&lt;/td&gt;
&lt;td&gt;250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fake-TLS proxy (bad)&lt;/td&gt;
&lt;td&gt;350&lt;/td&gt;
&lt;td&gt;900+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;For mobile users, latency over 200ms causes noticeable lag in voice calls. For messaging only, even 500ms is fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommendations
&lt;/h2&gt;

&lt;p&gt;If you need a reliable proxy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prefer fake-TLS proxies&lt;/strong&gt; over plain MTProto. They bypass DPI better and survive longer. I explained how they beat censorship techniques in a &lt;a href="https://dev.to/humja_jaan_fca09049ae97d5/censorship-techniques-by-country-and-how-mtproto-with-faketls-beats-them-237p"&gt;detailed post&lt;/a&gt; that covers country-specific blocking patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test latency before using.&lt;/strong&gt; Ping the proxy IP from your location. If it's above 300ms, find another one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Have a backup.&lt;/strong&gt; Keep 3-4 proxies in your Telegram proxy list. When one fails, the app falls back automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use proxies with port 990 or 993.&lt;/strong&gt; They last longer in censored regions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't trust a proxy that's been public for more than a week.&lt;/strong&gt; Rotate regularly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results Summary
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Finding Working Proxies
&lt;/h2&gt;

&lt;p&gt;I publish a curated list of proxies that pass my tests every 4 hours. You can find them in the &lt;a href="https://github.com/dubblebyte/free-mtproto-proxies" rel="noopener noreferrer"&gt;free-mtproto-proxies repository&lt;/a&gt;. 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.&lt;/p&gt;

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

&lt;p&gt;If you want to understand the protocol details better, I wrote a longer analysis on &lt;a href="https://telegra.ph/free-mtproto-proxies-07-25-2" rel="noopener noreferrer"&gt;Telegraph&lt;/a&gt; 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.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Testing methodology and latency data as of October 2025. Results will vary by location and ISP.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>proxy</category>
      <category>mtproto</category>
      <category>opensource</category>
    </item>
    <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>
  </channel>
</rss>
