Anti-censorship

Anti-censorship VPN: four ways through, and how to switch

Censors block VPNs by recognising their handshakes, blocking server addresses and site names, and probing servers they suspect. No single disguise survives everywhere, so ProofKit exits can offer four transports and two kinds of route. When one is blocked on your network, you pick another line in the same app.

01 /How censors find VPNs

  • Protocol fingerprints. OpenVPN, WireGuard and IPsec have recognisable handshakes, and filters drop them on sight.
  • Addresses and site names. Known server addresses are blocked, and encrypted connections are blocked by the site name they announce.
  • Active probing. The censor connects to a suspicious server itself, to see whether it answers like a proxy.
  • Behaviour. One long encrypted stream to a foreign server, or bytes that look like no protocol at all, can be slowed or cut without being identified.
  • Whitelists and shutdowns. In the hardest cases only an approved list of services stays reachable, or connections abroad are cut entirely.

Each transport below answers some of these and fails against others. How it plays out in practice: Russia, Iran, China.

02 /Four transports

VLESS Reality

Looks like a visit to a real website

The handshake is real TLS 1.3 under the name of a well-known site. A probe that connects without the key is passed through to that site and gets its real answer.

Fails when the exit’s address is blocked, the borrowed site is itself blocked on your network, or long connections abroad get cut.

Use it first: it works in the most apps and is usually the fastest. More on Reality

XHTTP

Looks like browsing

The same REALITY camouflage, but your traffic travels as many ordinary-looking HTTP requests and responses instead of one long stream.

Fails when the exit’s address is blocked. It adds a little overhead and needs an Xray-core app such as Happ or V2RayNG.

Use it when Reality connects but stalls or drops after a while. More on XHTTP

Hysteria2

Fast QUIC over UDP

QUIC with Salamander obfuscation: packets carry no recognisable header and no site name.

Fails when UDP is blocked or throttled, which is common on some mobile and office networks.

Use it on lossy or long-distance links where UDP gets through. More on Hysteria2

olcRTC

Looks like a video call

Your traffic travels inside a call on a major video-conferencing service. The exit node joins the call and sends your traffic out from its own address. It carries UDP, so calls and games work.

Fails when the video service is unreachable or restricted on your network. It is the slowest of the four.

Use it when only large services still work. It needs an olcRTC-capable client, such as the open-source Ghostlane. More on olcRTC

03 /Direct and 2-hop routes

Direct: your app connects straight to the exit node abroad. It is the fastest and cheapest route, at the exit’s price plus the 20% network fee, and every transport the exit offers works on it. olcRTC traffic is the exception: from 20 November 2026 it has one network-wide price per GB, read when the traffic moves.

2-hop: your app connects to an entry node that stays reachable from inside your country, and the entry carries your still-encrypted traffic to the exit over a tunnel between the two nodes. It helps where connections abroad are throttled but domestic ones are not, and the exit sees the entry’s address instead of yours. It costs both nodes’ prices plus the fee, and works with Reality, Hysteria2 and XHTTP.

Which entry countries exist changes as nodes come and go; the marketplace lists them for every exit.

04 /How to switch when something is blocked

  1. In your dashboard’s subscription block, choose your app and set Transports in subscription to All. The list for Happ, Hiddify and V2RayNG starts with Reality only; the list for an olcRTC-capable client can include olcRTC.
  2. Add the subscription link to your app once. It refreshes itself, so new lines appear without new links.
  3. In the marketplace, connect to two or three exits, and to a 2-hop route if there is one for your country. Each connection becomes a line in your app, and a line costs nothing until traffic flows through it.
  4. When a line stops working, pick another: the same exit over a different transport, a different exit, or the 2-hop line.

App guides: Hiddify, V2RayNG. All protocols side by side: protocol comparison.

05 /Why an open network helps

Censors block one address at a time. ProofKit’s exits sit in many countries, each with its own address, so a blocked address takes out one exit, not your access. The network is open: anyone can run a node, set its price and stake 1 TON on it. You pay per GB, so moving to another exit wastes nothing.

The marketplace shows each exit’s price and uptime before you connect, and the platform sends probe traffic through the nodes it lists to check that they carry what they report.

06 /Limits

  • No transport works everywhere or forever. Censors adapt, and a line that works today may not work tomorrow.
  • During a full shutdown of connections abroad, no VPN gets through.
  • olcRTC is slower than the other transports: a video call carries far less data than a direct connection.
  • Hysteria2 needs UDP, and XHTTP needs an Xray-core app.

Rules on VPN use differ by country and change often. Check what applies where you are.

// faq

Common questions

Which transport should I use?

Start with VLESS Reality on a direct route: it works in the most apps and is usually the fastest. If it stalls or drops after a while, try XHTTP; if UDP gets through, Hysteria2; if connections abroad are throttled, a 2-hop route; when only large services still work, olcRTC.

Which apps work?

For VLESS Reality, Hysteria2 and XHTTP: Happ, Hiddify, V2RayNG or Streisand, from one subscription link that updates itself. XHTTP needs an Xray-core app such as Happ or V2RayNG. olcRTC needs an olcRTC-capable client, such as the open-source Ghostlane.

Do I need new links to switch transports?

No. One subscription link carries every line you have. Set Transports in subscription to All in the dashboard and your app shows each exit over every transport it offers; switching is picking another line.

What is the difference between direct and 2-hop?

A direct route connects your app to the exit abroad. A 2-hop route connects it to an entry node that stays reachable inside your country, which carries your still-encrypted traffic to the exit over a tunnel between the two nodes. 2-hop costs both nodes’ prices plus the 20% network fee.

Is there a monthly plan?

No. You top up a balance with TON and pay for the gigabytes you use, at the price the marketplace shows with the 20% network fee included. olcRTC traffic is the exception: from 20 November 2026 it has one network-wide price per GB, read when the traffic moves. Lines you are not using cost nothing, and you can withdraw the balance you do not use.

// next step

Keep two or three ways through in your app

Create an account, top up with TON, connect to a few exits and set your subscription to All transports. You pay only for the gigabytes you use.