Defeat IP Rotation: Block Bots by JA4 at the WAF
WebDecoy now tracks bots as persistent actors and pushes a JA4 rule to your AWS WAF or Cloudflare, blocking rotating scrapers across every IP they use.
securityVerify legitimate bots using RFC 9421 signatures and RFC 9576 Privacy Pass tokens.
WebDecoy Team
WebDecoy Security Team
Not all bots are malicious. Search engines, legitimate crawlers, and trusted partners need reliable ways to prove their identity to your systems. But how can you differentiate a legitimate Google crawler from a sophisticated scraper that’s spoofing its user agent?
WebDecoy’s Cryptographic Verification Feature answers this question using industry-standard protocols that allow bots to cryptographically prove their legitimacy, without requiring usernames and passwords.
Traditional bot detection relies on pattern matching:
But these signals can be spoofed. A sophisticated attacker can:
How do you know if a request from Googlebot is actually from Google, or from an attacker impersonating Google?
That’s where cryptographic verification comes in.
Instead of trusting metadata (which can be forged), WebDecoy verifies cryptographic signatures and tokens that prove a bot’s identity mathematically.
A bot can sign its request using cryptographic algorithms. Your server then verifies the signature using the bot’s public key.
How it works:
Bot creates a request:
├── Adds HTTP headers: Signature, Signature-Input, Signature-Agent
├── Computes a cryptographic signature using its private key
└── Sends the signed request
Your server receives the request:
├── Extracts the signature from headers
├── Reconstructs what was signed (following RFC 9421 spec)
├── Verifies the signature using the bot's public key
└── If it matches → request is genuinely from that botExample signed request:
curl -X GET https://example.com/api \
-H "Signature: sig1=:base64encodedSignature:; key=bot-key-2024-01" \
-H "Signature-Input: (@method @authority @path);alg=Ed25519" \
-H "Signature-Agent: trusted-bot-v1"Key benefit: Even if an attacker intercepts the request and modifies it, the signature will no longer match. They’d need the bot’s private key to create a valid signature, and that’s cryptographically infeasible.
Privacy Pass tokens let bots prove legitimacy without revealing identity. Useful when you want to trust a bot without knowing exactly who it is.
How it works:
Token Issuer (e.g., a bot network) creates a token:
├── Encodes bot identity, expiration, rate limits
├── Signs the token with their private key
└── Issues tokens to legitimate bots in their network
Bot includes token in request:
├── Adds Authorization header: "PrivacyPass <token>"
└── Adds Token-Issuer header
Your server verifies the token:
├── Checks if the issuer is trusted
├── Validates the token hasn't expired
├── Verifies rate limit compliance
└── If all checks pass → bot is legitimateExample token request:
curl -X GET https://example.com/api \
-H "Authorization: PrivacyPass eyJhbGci..." \
-H "Token-Issuer: privacy-pass-provider.example.com"Rate limiting built-in: Tokens support usage quotas. A token might be valid for 100 requests per hour. WebDecoy tracks usage and enforces limits automatically.
Every cryptographic verification produces a trust score (0-100%):
When both signature and token are present, scores are averaged for a comprehensive trust assessment.
Google wants to crawl your site, but you want to verify it’s actually Google, not an imposter:
Traditional approach:
Cryptographic approach:
A partner bot needs to access your API thousands of times per day:
Traditional approach:
Cryptographic approach:
An attacker tries to impersonate a legitimate bot:
Attack: Spoof user agent, IP, and behavioral patterns Detection:
Cryptographic verification applies to the honeypot/decoy layer: the endpoints and interactions WebDecoy monitors. It helps you:
When a request hits your honeypot, WebDecoy’s enrichment pipeline processes it in 4 steps:
1. Reverse DNS lookup (Is the IP's domain legitimate?)
2. AbuseIPDB enrichment (Is this IP known to be malicious?)
3. Cryptographic verification (Can this bot prove identity?)
4. Store enriched detection (Save all data for analysis)Cryptographic verification is step 3: a non-blocking async operation that runs in the background.
All verification results are stored with the detection:
{
"cryptographic_verification": {
"signature": {
"agent": "googlebot-v3",
"algorithm": "Ed25519",
"verified": true,
"key_id": "google-public-key-2024"
},
"token": {
"issuer": "partner-api.example.com",
"expires_at": "2025-12-31T23:59:59Z",
"verified": true,
"rate_limit_used": 45,
"rate_limit": 100
},
"trust_score": 0.95
}
}In your detection dashboard, you can see:
WebDecoy implements IETF-standard protocols:
Using standards means:
To trust a bot, you add its public key to your whitelist:
Trusted Agents (Signature Verification):
├── googlebot-v3: "ed25519 public key (base64)"
├── bingbot-v2: "ed25519 public key (base64)"
└── partner-crawler-v1: "ed25519 public key (base64)"
Trusted Issuers (Token Verification):
├── privacy-pass-provider.example.com
└── partner-api.example.comWebDecoy validates every request against these whitelists. Verified bots show high trust scores; unverified or failed verifications show low scores.
Previously, legitimate bots might get caught in your detection net because they looked suspicious. Now, if they’re cryptographically verified, you know they’re safe, even if their behavior is unusual.
Instead of allowing all of Google’s IP range (which could include malicious actors using Google’s infrastructure), you allow only Google’s specifically-signed requests.
Token-based rate limiting is automatic and cryptographically enforced. No manual IP allowlisting needed.
Privacy Pass tokens let you verify a bot is legitimate without knowing exactly which bot it is. Perfect for bot networks and federated systems.
Every cryptographic verification is logged with details:
Current limitations:
Coming soon:
Cryptographic verification transforms bot detection from pattern-matching guesswork into mathematical proof. A verified bot has proven its identity using cryptography. There’s no ambiguity.
For legitimate bots, search engines, and trusted partners, this means:
For your security team, this means:
Ready to implement cryptographic bot verification?
WebDecoy. Verify bots. Trust data.
WebDecoy now tracks bots as persistent actors and pushes a JA4 rule to your AWS WAF or Cloudflare, blocking rotating scrapers across every IP they use.
securityAI-generated form spam is harder to catch than the old kind. An honest technical breakdown of what works, what fails, and where the arms race is going.
securityA technical deep dive into credential stuffing tooling, attack anatomy, and the detection signals that actually work against modern ATO operators.
securityLike this post? Share it with your friends!
Get a personalized demo from our team.