FakeTLS Explained: How MTProto Becomes Invisible to Your Network.
Your ISP does not need to block Telegram to disrupt it. It only needs to identify the traffic — and then throttle it, restrict it, or in some networks, block it entirely. FakeTLS removes the signal your ISP uses to identify it.
FakeTLS makes a Telegram connection look, at the network inspection layer, exactly like an ordinary HTTPS web request. The classifier sees nothing remarkable. Your traffic passes through unmodified.
This guide covers the full mechanism: what DPI sees, how TLS handshakes work, how FakeTLS forges one, what the 'ee' prefix means, and when the masking works and when it does not.
What is FakeTLS and why does it matter for signal delivery?
FakeTLS is a masking technique for MTProto connections. It constructs an opening handshake that is indistinguishable from TLS 1.3 — the protocol used for HTTPS. Your ISP's DPI classifier examines the connection, identifies it as HTTPS, and leaves it alone. The throttle that would have delayed your signal during NFP does not fire.
The mechanism is point-to-point between your device and the TradersProxy server. Beyond the proxy, traffic to Telegram's data centres is standard MTProto. The masking is only needed for the ISP-visible leg.
The 'ee' prefix in your proxy secret is the FakeTLS version identifier in Telegram's specification. Secrets starting with 'dd' use Obfuscated2 only. If your proxy does not use 'ee' secrets, it is not using FakeTLS.
Included on Standard ($15/mo) and Pro ($25/mo) — see plans
What DPI sees without FakeTLS: the fingerprint problem.
Every network protocol has a fingerprint. Not in the payload — in the structure and timing of the opening exchange. TCP, HTTP, TLS, QUIC, WebSockets — each has a characteristic pattern of packet sizes, byte sequences, and timing intervals in the first milliseconds of a connection.
Deep Packet Inspection is the process of reading and classifying those fingerprints in real time, on every packet that passes through a network node. Modern DPI appliances can classify thousands of protocols and applications — Telegram, Netflix, BitTorrent, Zoom, Spotify — without reading the encrypted content. The fingerprint is in the shape of the traffic, not the words inside it.
MTProto 2.0 with Obfuscated2 randomises the opening bytes of the connection. The first packets look like noise — unidentifiable byte sequences rather than a recognisable protocol pattern. This defeats simple classifiers that match on specific byte patterns.
The problem is that "looks like noise" is its own signature. A connection that does not match any known protocol and begins with apparently random bytes is detectable as Obfuscated2, and some ISPs treat unidentifiable traffic as low-priority by policy — not because they know it is Telegram, but because it is not anything they prefer. Being invisible is not the same as being safe from throttling.
What a real TLS handshake looks like to a classifier.
TLS 1.3 — the version used by all modern HTTPS connections — begins with a specific sequence. The client sends a ClientHello: a structured message identifying the TLS version, supported cipher suites, extensions, and an SNI (Server Name Indication) field containing the hostname the client wants to reach.
The server responds with a ServerHello, selecting the cipher suite, followed by encrypted extensions, a certificate chain, and a Finished message. The client verifies the certificate and sends its own Finished. From that point, the session is encrypted and traffic flows.
A DPI classifier learns to identify HTTPS by these exact patterns: the specific byte structure of the ClientHello, the TLS record type header (0x16 for handshake, 0x17 for application data), the extensions list, the cipher suite octets. These are standardised in the TLS specification. Every browser on every device sends a nearly identical opening sequence when connecting to an HTTPS site.
HTTPS is the dominant protocol on the internet. ISPs do not throttle it — doing so would break the majority of all web traffic. Any connection that looks like HTTPS gets normal priority. This is the target that FakeTLS aims to hit.
How FakeTLS forges the handshake.
FakeTLS constructs an opening exchange that passes DPI inspection as legitimate TLS 1.3. The key insight is that the DPI classifier is pattern-matching, not certificate-verifying. It checks whether the packet structure matches TLS. It does not validate whether the certificate is signed by a trusted CA or whether the SNI hostname resolves to the server's IP.
The FakeTLS implementation creates a ClientHello with the correct TLS record type, a plausible cipher suite list, standard TLS extensions, and a synthetic SNI hostname. The byte layout matches TLS 1.3 at the structural level. A classifier checking packet headers sees a TLS handshake initiation. It does not look further.
The proxy server on the receiving end knows to expect FakeTLS because of the 'ee' prefix in the secret. It unwraps the handshake layer, recovers the actual MTProto connection bytes, and forwards them to Telegram's data centre as standard MTProto. The masking is consumed and removed at the proxy — it exists only for the ISP-visible leg between your device and the proxy.
What the DPI classifier sees at each point in the path
Sends FakeTLS-wrapped MTProto
sees: TLS 1.3
classifies: HTTPS → pass
Unwraps FakeTLS, forwards MTProto to Telegram DC
The DPI classifier fires at the ISP boundary. It sees TLS 1.3 and moves on. FakeTLS is consumed at the proxy. Beyond the proxy, traffic is standard MTProto to Telegram's servers.
The forged handshake does not need to complete as a real TLS session because the DPI classifier has already passed the traffic before the session would need to be established. By the time any further validation could occur, the connection is already through the inspection point.
This is a structural property of how DPI operates — it classifies at the connection level, not at the session validation level. The FakeTLS technique exploits this gap deliberately and cleanly.
The secret parameter: what the 'ee' prefix means.
MTProto proxy secrets are hex-encoded strings embedded in the tg:// link. The first two characters — the prefix — are a version identifier that tells the proxy server which protocol variant to use for this connection.
Proxy secret format — prefix determines protocol mode
The 'ee' prefix is defined in Telegram's MTProto proxy specification as the identifier for the FakeTLS mode. When the proxy server receives a connection with an 'ee' secret, it expects a FakeTLS handshake from the client and processes it accordingly. When it receives a 'dd' secret, it expects an Obfuscated2 opening.
Your unique secret from the TradersProxy portal starts with 'ee'. This confirms that FakeTLS is active for your connection. The rest of the secret is a random hex string unique to your account — it cannot be shared with other users, and the proxy verifies it before forwarding any traffic.
If you are evaluating a proxy and want to confirm it uses FakeTLS: check the secret in the tg:// link. If it starts with anything other than 'ee', it is not using FakeTLS. This is the single fastest way to verify FakeTLS support without any testing.
Obfuscated2 vs FakeTLS: what each does and why both exist.
These are two different layers addressing the same underlying problem — making MTProto less identifiable — using different approaches at different levels of the connection.
Obfuscated2 operates at the byte level of the MTProto framing. It randomises the initial handshake bytes of the MTProto connection itself, replacing the recognisable MTProto opening pattern with a random-looking sequence derived from the shared secret. It makes the MTProto connection look like nothing — unidentifiable bytes rather than a known protocol.
FakeTLS operates at the transport level, above Obfuscated2. It wraps the connection in a fake TLS handshake before the Obfuscated2 layer is even reached by the classifier. Instead of looking like nothing, the connection looks like HTTPS.
Both layers exist because different DPI systems pose different challenges. An Obfuscated2 connection that looks like "random bytes" might pass through a classifier that only throttles known Telegram fingerprints. But it would be flagged by a classifier that throttles any unidentified traffic. FakeTLS solves both: the connection has a positive identity (HTTPS) that no sane ISP will throttle.
The TradersProxy stack implements both layers. Obfuscated2 randomises the MTProto frame. FakeTLS masks the transport layer as TLS. The classifier faces a connection that looks like HTTPS from the outside and like noise at the protocol level if it somehow sees past the TLS presentation. Both layers are needed for robust DPI bypass.
What the proxy server does on the other end.
The FakeTLS masking is point-to-point between your Telegram app and the TradersProxy server. When the encrypted bytes arrive at the proxy, it processes them in the following sequence.
First, it reads the 'ee' prefix from the secret to identify this as a FakeTLS connection. It verifies the secret against the account database — if the secret is not valid, the connection is rejected before any further processing. This is what prevents strangers from using the proxy.
Second, it processes the synthetic TLS handshake layer. The proxy knows the handshake is not real TLS — it was constructed to fool the DPI classifier, not to establish an actual TLS session. The proxy strips it, revealing the Obfuscated2-wrapped MTProto bytes underneath.
Third, it decodes the Obfuscated2 framing using the shared secret, recovering the actual MTProto traffic. At this point the proxy has standard MTProto bytes — the same as what Telegram's native clients send.
Fourth, it forwards these bytes to Telegram's data centre on the appropriate DC. The proxy-to-DC connection uses standard MTProto — no FakeTLS masking is needed there, because this leg of the connection is not passing through ISP DPI. It is a direct server-to-server link.
The proxy is a translation point — masking inbound, standard MTProto outbound. Your Telegram session is seamless across both legs.
Domain fronting: the next layer and its limits.
FakeTLS forges the structure of a TLS handshake. Domain fronting goes further — it routes the connection through a CDN or cloud provider whose hostname is the SNI in the ClientHello, then sends the actual request to a different backend. The connection appears to go to a major cloud provider (Cloudflare, AWS, Azure) rather than to a proxy server.
For MTProto use, domain fronting is a more complex and less reliable approach than FakeTLS for most traders. It requires the proxy to be reachable through a CDN that supports the technique, adds latency from the CDN hop, and is increasingly blocked by cloud providers themselves who do not want their infrastructure used this way.
FakeTLS achieves the essential goal — defeating ISP DPI classifiers — without the complexity and reliability costs of domain fronting. For the threat model relevant to signal delivery (ISP throttling of Telegram traffic), FakeTLS is sufficient. Domain fronting addresses a harder threat model: an ISP that actively blocks all traffic to known proxy server IPs, which is uncommon in the jurisdictions where most traders operate.
TradersProxy uses FakeTLS. Domain fronting is not implemented because it introduces CDN latency and reliability dependencies that would degrade the infrastructure for the primary use case. The added complexity solves a threat model most traders do not face.
When FakeTLS works and when it doesn't.
FakeTLS is effective against the most common threat model for signal delivery: ISP traffic shaping that throttles classified Telegram traffic during high-congestion events. This is the throttling that causes 3-8 second delivery delays during NFP, CPI, and FOMC. For this use case, FakeTLS is the right tool and it works reliably.
It works when: your ISP uses DPI-based traffic shaping, classifying MTProto and placing it in a lower-priority queue. FakeTLS prevents that classification. This covers the majority of ISP throttling scenarios that signal traders encounter.
It works when: your ISP has a soft block on Telegram that operates by classifying Telegram protocol traffic. FakeTLS prevents classification. In many soft-block jurisdictions, FakeTLS allows normal Telegram access.
It is uncertain when: your ISP or government has implemented deep infrastructure-level blocks on Telegram, including blocking all traffic to Telegram's data centre IP ranges. FakeTLS defeats the classifier but does not change the destination IP. If the DCs themselves are blocked, the proxy-to-DC connection is affected.
It does not work when: there is a hard national infrastructure block with active monitoring, IP-range blocking of Telegram's servers, and proactive detection of proxy servers. This is a different threat model from traffic shaping, and it requires more advanced techniques (domain fronting, Tor, etc.) that are outside the scope of this infrastructure.
For most traders in Western Europe, North America, Southeast Asia, and the Middle East who experience signal delivery delays rather than complete Telegram unavailability, FakeTLS is the correct and sufficient solution. The delay you experience is ISP traffic shaping — and that is precisely what FakeTLS addresses.
Eight questions about FakeTLS.
FakeTLS wraps an MTProto connection in a handshake that looks identical to TLS 1.3 — the protocol used for HTTPS web traffic. Your ISP's DPI classifier examines the handshake, identifies it as standard encrypted web traffic, and passes it through without throttling. The actual MTProto session runs inside this disguised channel.
FakeTLS is Telegram's own anti-censorship feature, built into the Telegram proxy protocol specification. Using it is part of normal Telegram operation. It is legal in the vast majority of countries. In jurisdictions with hard Telegram restrictions, the legal situation is more complex.
Look at the proxy secret in the tg:// link. FakeTLS secrets start with 'ee' — for example: ee + hex string. If the secret starts with 'dd' or with just a hex string, the proxy is using Obfuscated2 only, not FakeTLS. The 'ee' prefix is the FakeTLS identifier in Telegram's proxy secret specification.
The 'ee' prefix is a version identifier in Telegram's MTProto proxy secret format that signals to the proxy server that the connection should use FakeTLS masking. Secrets starting with 'dd' use Obfuscated2. Secrets starting with 'ee' use FakeTLS. This is defined in Telegram's proxy specification.
No. FakeTLS is a transport-level masking layer. MTProto's encryption is at the application layer, inside the connection. FakeTLS changes what the connection looks like to an external observer. It does not decrypt, modify, or have access to your messages or credentials.
A VPN tunnels all your device's traffic through one encrypted pipe. Every app — your trading terminal, browser, background processes — shares that tunnel and competes in the same queue. VPN overhead adds latency to every connection. FakeTLS only handles Telegram. Your terminal gets a clean, separate path with no VPN overhead.
FakeTLS disguises the connection as HTTPS, making it hard for network-level classifiers to identify as Telegram traffic. For soft blocks and throttling, FakeTLS typically works. Hard national-level infrastructure blocks with deep enforcement are a different category — results vary and are outside the scope of what any single proxy can guarantee.
Yes. TradersProxy implements Obfuscated2 + FakeTLS. Your personal tg:// link from the portal contains an 'ee' prefix secret, which confirms FakeTLS is active. The secret is unique per user and cannot be shared.