diff --git a/mirrors/index.html b/mirrors/index.html new file mode 100644 index 0000000..b63c8c7 --- /dev/null +++ b/mirrors/index.html @@ -0,0 +1,194 @@ + + +
+ + +Some sites — including several of the most-cited pages in the Bitcoin
+ Cash ecosystem — return HTTP 503 to Theseus, no matter what user-agent it sends.
+ A short note on why, and how a .bch name gets you through.
Cloudflare's Bot Fight Mode (and similar WAF rules) fingerprints the + TLS ClientHello — the cipher list, extensions, and JA3/JA4 hash your browser + sends before any HTTP header is negotiated. Chromium's TLS stack, which Theseus is + built on via Electron, ships with a slightly different fingerprint than desktop + Chrome — enough to trigger the bot heuristic. The server replies with a short + 503 page and the load fails.
+Stripping Electron/… from the user-agent
+ doesn't help: the fingerprint sits below HTTP. Disabling HTTP/2 doesn't help either.
+ From the site's perspective, Theseus is indistinguishable from a scraper.
p record doesA BCDN name can carry a p record — a
+ single upstream URL. When Theseus loads a name whose record picker returns
+ p, it doesn't hand the request to Chromium's network
+ stack. It hands it to Node's fetch() from the
+ main process, which uses a different HTTP client (undici) with a completely
+ different TLS fingerprint — one Cloudflare doesn't flag. The response body comes
+ back and gets served under the .bch origin.
The address bar stays on the BNS name; the upstream never sees your + IP resolve through Cloudflare's browser-bot rules, only through Theseus's outbound + Node fetch. No captcha, no interstitial, no 503.
+Trade-offs to know: the p path uses the
+ upstream's own DNS and public certificate authority (unlike ip,
+ which pins to a raw IP + on-chain TLS fingerprint), and Theseus streams the body
+ through its own process — so the upstream sees Theseus's outbound IP, not yours.
+ This is a shared proxy in effect, though only for the one request.
These names are registered on the Bitcoin Cash chain with a
+ p record pointing at a Cloudflare-fronted upstream
+ Theseus can't reach directly. Click any to open it in Theseus (or via
+ navigate.st if you don't have the browser
+ installed yet).
+ See a site missing? If a Cloudflare-fronted page you care about is
+ unreachable from Theseus, either mint a p record for
+ it yourself, or open an issue on
+ the Theseus repo and
+ we'll add it to the featured list once it's on chain.
+
Registration costs a few sats of BCH. Theseus 0.3.14+ ships with the + Aegis wallet — the wallet the Sirius UI signs against — so this is a couple + of clicks once your wallet has a small balance.
+ +.bch TLD if the site is
+ BCH-related; other registered TLDs work too. Mint the name.p: "https://the-original-upstream.example/"
+ yourname.bch in Theseus's address
+ bar. If the upstream returns 200, Theseus renders it under your name. Send us
+ the name and we'll add it to the featured list.For anyone curious about the exact mechanism:
+pickRecord() in Argus:
+ h > s3 > ip > p > u at the apex, and
+ subdomain inheritance never picks p. Theseus
+ carries an inline copy to keep in step.theseus/main.js,
+ the serveP closure inside serveBns().
+ Uses fetch(target, { redirect: "manual" })
+ from the main process, which is Node's undici — a different TLS stack from
+ Chromium's, and the reason the fingerprint check doesn't fire.p record that reverse-proxies the site through Node's
+ HTTP stack — see Reverse-proxy mirrors for the featured
+ list and how to mint your own.