Get access
Web Bot Auth is enabled for Hyperbrowser teams on request. If you use Hyperbrowser and want your sessions to sign their requests, contact us at info@hyperbrowser.ai. If a site still blocks a session that signs its requests, email us the URL and the session ID.Sign a session’s requests
SetwebBotAuth when you create a session, and the session signs its HTTPS requests:
onlyDomains (only_domains in Python). Each hostname also covers its subdomains, so example.com covers shop.example.com. You can list up to 50 hostnames, without a scheme, port, or path.
sessionOptions (session_options in Python). An agent task that runs in an existing session (sessionId) keeps that session’s setting. Scrape, crawl, and extract requests don’t accept webBotAuth.
Requirements and errors
A session that asks for Web Bot Auth is either signed or refused; it never starts unsigned. You can’t take a snapshot of a session that signs its requests.
The rest of this page is for website operators: it explains how to identify and verify the requests that Hyperbrowser signs.
Identify signed requests
A signed request carries three headers:Signature-Agentnames the signer. For Hyperbrowser it is always"https://www.hyperbrowser.ai".Signature-Inputlists what is signed: the host the request is sent to (@authority) and theSignature-Agentheader.tag="web-bot-auth"marks it as a Web Bot Auth signature, andkeyidnames the key that made it.Signatureholds the Ed25519 signature.
User-Agent, so identify them by their signature rather than by User-Agent.
Verify a signature
Hyperbrowser publishes its public keys in a key directory:kid is its JWK thumbprint (RFC 7638) and matches the keyid in Signature-Input. Every key also signs the directory response itself, which proves that Hyperbrowser holds the matching private keys.
To verify a request:
- Check that
Signature-Agentis"https://www.hyperbrowser.ai"and fetch the key directory above. - Check that
Signature-Inputhastag="web-bot-auth"and that the current time is betweencreatedandexpires. - Find the key whose
kidmatches thekeyid. - Rebuild the signature base from the covered components as RFC 9421 defines, and verify
Signatureagainst it with that key.
Keys can change. Fetch the key directory instead of hard-coding keys, and cache it according to its
Cache-Control header.What a signature tells you
A valid signature tells you that Hyperbrowser signed the request for your host, and that the signature is within its validity window (betweencreated and expires). It does not:
- Identify which Hyperbrowser customer sent the request.
- Grant the request any access. What you allow is up to you.
- Stop the same signature from being reused for other requests to your host until it expires. It covers your host and the
Signature-Agentheader, not the full request.
Allow or block Hyperbrowser
- If you use a bot management provider that supports Web Bot Auth, such as Cloudflare, use its bot rules to allow or block Hyperbrowser.
- On your own infrastructure, verify the signature as described above, then allow or block requests whose
Signature-Agentis"https://www.hyperbrowser.ai".
Troubleshooting
If signatures from Hyperbrowser don’t verify:- Check that no proxy, load balancer, or CDN in front of your server removes or rewrites the
Signature,Signature-Input, orSignature-Agentheaders. - Check that your server’s clock is accurate. Verification compares the current time with
createdandexpires.
Report a problem
If traffic from Hyperbrowser causes problems for your site, contact us at info@hyperbrowser.ai. Include the affected domain, when the requests happened, and theSignature-Input headers if you logged them.