Challenge
The loader pulls a nonce, a proof-of-work target and a per-session VM — wrapped in an opaque binary envelope.
A WebAssembly verifier scores every session in under 200ms. Humans pass with no captcha. Bots get a poisoned token your backend quietly rejects.
No SDK lock-in · verify offline with your secret
Three stages on every protected request — end to end in under 200ms.
The loader pulls a nonce, a proof-of-work target and a per-session VM — wrapped in an opaque binary envelope.
A Rust→WASM core fingerprints 190+ signals, runs the VM, solves the PoW and collects automation + behaviour probes.
The engine scores seven dimensions into one number. Humans get a signed token; bots get a poisoned reject.
Seven dimensions, scored independently. Any one critical tell ends it.
190+ signals — canvas, WebGL, audio, fonts — cross-checked for the impossible.
webdriver flags, headless markers, prototype tampering and eval hooks.
curl, Python and Go give themselves away in the handshake.
CDP runtime, Puppeteer / Playwright, worker-heartbeat debugger.
Pointer entropy and keystroke cadence — humans jitter, scripts don't.
Hashcash gate plus a per-session VM that rotates every challenge.
Returning devices build trust; fingerprint reuse across IPs flags farms.
No captcha, no friction — a signed token you trust offline. They never know a perimeter exists.
A 200 OK indistinguishable from success. Your backend reads the reject; the bot thinks it won.
Drop the loader on your page; verify the token in your backend with your site secret. No callback to us on the happy path.
// frontend import { runChallenge } from '@instantblock/loader'; const { token } = await runChallenge({ sitekey }); // backend — offline, with your secret const claims = verifyToken(token, SECRET); if (claims.decision !== 'accept') block();
Run the actual engine against this browser. Live client signals, a real proof-of-work, and the same seven-dimension verdict our customers get — nothing simulated.