This is a feature request for Telegram Desktop to update its MTPROTO FakeTLS fingerprint to evade blocking in Russia. The current fingerprint is outdated, allowing censors to detect and block Telegram traffic. The request asks for updating to current browser fingerprints, potentially with rotation, to make detection harder.
A starter prompt for Claude Code, what you'll need, and how to reach them.
You are an expert C++ developer. Your task is to implement a solution for `telegramdesktop/tdesktop` issue #30733: 'Обновить fingerprint MTPROTO FakeTLS'. This issue requests updating the MTPROTO FakeTLS Client Hello fingerprint to match current popular browser versions to evade censorship. The primary goal is to make Telegram traffic indistinguishable from legitimate browser traffic. Here's the plan: 1. **Fork the repository**: Start by forking `https://github.com/telegramdesktop/tdesktop`. 2. **Identify relevant files**: Locate the C++ code responsible for generating the FakeTLS Client Hello in the MTPROTO connection establishment. This will likely involve TLS handshake logic and fingerprinting mechanisms. 3. **Research current JA4 fingerprints**: Find reliable sources (e.g., TLS fingerprint databases, open-source projects for censorship circumvention) to identify the latest JA4 fingerprints for popular browsers like Chrome (on Windows and Android) and Firefox. Select 2-3 distinct, up-to-date fingerprints. 4. **Implement fingerprint update**: Modify the C++ code to use one of the selected, current browser fingerprints. The initial MVP should just use one updated static fingerprint. For a more robust solution, consider implementing a mechanism for rotating between these fingerprints or for them to be dynamically updated (e.g., fetched from a remote configuration). 5. **Build and test**: Compile the modified Telegram Desktop client. Verify that it connects successfully to MTPROTO proxies. If possible, test against known censorship detection methods (though this may be difficult without specific infrastructure). 6. **Verify gate**: The client successfully connects to MTPROTO proxies and its TLS Client Hello fingerprint matches one of the chosen current browser fingerprints according to a JA4 analysis tool.
Russian/a
While specific to Russia's blocking, the underlying technique of disguising traffic is globally relevant for privacy-focused tools, but not localized to operator's markets.
### Is your feature request related to a problem? In Russia, they are once again blocking connections to MTPROTO proxies. The blocking tests began on May 22, in the Siberian region (if that helps). According to traffic dumps, there is a problem with TLS Client Hello again. Telegram on Android and Windows uses the Ja4 fingerprint t13d1516h2_8daaf6152771_d8a2da3f94cd, which is typical for Chrome 134 on MacOS. As Chrome updates, the fingerprint changes over time, making it possible to detect the Client Hello from Telegram using the outdated Chrome fingerprint. The current Chrome 148 under WIn uses the fingerprint t13d1514h2_8daaf6152771_827b515c4f52. ### Describe the solution you'd like Could you update the fingerprint for Telegram clients to match the current browser versions, possibly using rotation (Chrome for Windows, Chrome for Android, and Firefox), so that the client cannot be identified by Ja4 in an outdated browser. Over time, the Client Hello fingerprint can be updated to match the current browser stack and the most popular platforms. ### Describe alternatives you've considered I don't see any other solutions that haven't been proposed before. ### Additional context _No res
Standard for dev work
Standard for C++ projects
Specific libraries and tools for Telegram Desktop compilation - ~0.5 day to setup
Learn it: Search getting-started ↗
Understanding of TLS Client Hello structure and MTPROTO's FakeTLS implementation - ~1 day study
Learn it: Search getting-started ↗
Researching and verifying current browser fingerprints - ~0.5 day
Learn it: Search getting-started ↗
Comment on the GitHub issue #30733 in the `telegramdesktop/tdesktop` repository, then open a draft pull request linking to the issue.
“I've prototyped an update to the MTPROTO FakeTLS fingerprint, aligning it with current Chrome browser versions to combat recent blocking in Russia. I'm preparing a PR for issue #30733 – would you be open to reviewing a draft?”
Open the original ↗