Help · Architecture

VLESS + XHTTP + REALITY

VLESS carried as many HTTP requests (XHTTP) behind a REALITY handshake, so the traffic looks like browsing rather than one long stream. For networks where DPI flags plain Reality by its shape.

example

Plain Reality: one long stream → behaviour-based DPI can flag it XHTTP: many separate requests → looks like a browser on a site

XHTTP is one of ProofKit's transports. It carries VLESS over an HTTP-shaped transport with REALITY in front, on its own TCP port (8444 by default). It is charged per GB at your route's price, like Reality and Hysteria2.

How it differs from Reality

Plain VLESS Reality hides the handshake, but the tunnel is one long connection in both directions, and behaviour-based DPI can sometimes flag that shape. XHTTP sends uploads as separate HTTP requests with padding and receives the download as separate responses, so the flow looks like a browser using a website.

The cover site matters here

As with Reality, the server name in the handshake is visible, so the node's cover site must be one that is not blocked on your network.

When to use it

  • DPI flags plain Reality, but TCP still works.
  • UDP is blocked, which rules out Hysteria2.

Limits

  • It needs an Xray-core app such as Happ or V2RayNG. sing-box based apps cannot run it.
  • It uses its own port, so it fails on networks that let only ports 80 and 443 through.
  • It connects straight to the node; it does not go through a CDN.
  • Many short requests cost a little more overhead than one Reality stream.
XHTTP works on direct routes and on 2-hop routes, where the entry node relays it. See Choosing a transport to compare it with Reality and Hysteria2.