**Feature summary**:
Please add a censorship circumvention feature like domain fronting in both iOS and Android apps to use domain fronting to access Wikipedia where it is blocked. (e.g. China)
All blocking technique of Wikipedia are:
* DNS poisoning
* Deep Packet Inspection for SNI (always followed by a TCP reset attack)
* IP blocking
This feature should basically has two parts:
1. IP selecting by their availability.
2. SNI obfuscation (domain fronting).
The first one is for areas which blocked some of Wikimedia IPs but not all, app should test the availability of all Wikimedia data centers, they are published [here](https://meta.wikimedia.org/wiki/Wikimedia_servers#Hosting) on Meta-Wiki. Now there are 6 data centers: eqiad, codfw, esams, ulsfo, eqsin, drmrs. The IP address of them are located on some specified domains, for example,
* eqiad IP address is on `text-lb.eqiad.wikimedia.org` and `upload-lb.eqiad.wikimedia.org`.
* codfw IP address is on `text-lb.codfw.wikimedia.org` and `upload-lb.codfw.wikimedia.org`.
App get all data center IP by DNS looking up these domains. We can also hardcode these IP address as long as they are not frequently changing. App should test if some of them are reachable and use them. This effectively solved both DNS poisoning and IP blocking problem.
The second one is for DPI, it can be implemented by adjusting App's network stack, App should connect to Wikimedia IPs without sending SNI extension in TLS handshake and verify the certificate manually.
**Similar features in other apps**
* Tor meek and snowflake, using Microsoft Azure and Fastly as fronting providers
* [A client for pixiv.net](https://github.com/Notsfsssf/Pix-EzViewer/tree/master/app/src/main/java/com/perol/asdpl/pixivez/networks), for accessing `pixiv.net` which is also blocked in China by SNI detection, written in Kotlin
* [A client for e-hentai.org](https://github.com/Ehviewer-Overhauled/Ehviewer/tree/1.8.x.x/app/src/main/java/com/hippo/ehviewer/client), also written in Kotlin
* Signal has a "censorship circumvention" features which utilizes Google Cloud and domain fronting as an alternative route to their server
* ProtonVPN. If it detects potential blocks, it will try to resolve a certain domain using DoH and use HTTPS certificate pinning to access that IP as an alternative backend
* [Geph](https://geph.io/en), a popular proxy app which is successful at bypassing China & Iran censors. It [uses domain fronting](https://github.com/geph-official/geph4-client/blob/403efdf21e186b1d3de339596c288e7fa31ebb77/src/config.rs#L148) as a bootstrapping process.
**Use case(s)**:
As shown in [Censorship of Wikipedia](https://en.wikipedia.org/wiki/Censorship_of_Wikipedia) article, many countries have blocked access to Wikipedia.Why this is important**:
**Benefits**:As shown in [Censorship of Wikipedia](https://en.wikipedia.org/wiki/Censorship_of_Wikipedia) article, many countries have blocked access to Wikipedia. While it's possible for volunteers to access Wikipedia though their own proxies, they may (1) not have enough knowledge or resource to setup or buy a proxy, or (2) encounter trouble editing Wikipedia because of proxy IP bans. Both may have negative impacts on user engagement. Most recently, the IPBE requesting mailing lists of Chinese Wikipedia (unblock-zh) has been queued for ~30 days, making the situation worse.
People in these area may find in-app circumvention feature helpful,I believe, equipping in-app censorship circumvention methods is a balance between usability and availability, because enabling this would be as easy as toggling a switch. they can read and edit Wikipedia without a VPN or proxyIt may be one of the most viable options for now.