How WebDecoy Integrates With Cloudflare and AWS
From one script tag to a rotation-proof lockout: the setup, the visitor experience, and the closed loop across a Cloudflare Worker and AWS WAF.
integrationWebDecoy closes the loop from detection to enforcement. Pushing composite, auto-expiring rules to your Cloudflare or AWS WAF. Challenge first, block last.
WebDecoy Team
WebDecoy Security Team
Detection is only half a product. A dashboard that tells you which requests were bots. But leaves you to copy indicators into your WAF by hand, has quietly made you the enforcement engine. And by the time you paste a fingerprint or an IP into a rule, the actor has rotated to a new address, the indicator is stale, and every browser release quietly grows your false-positive risk.
WebDecoy closes that loop. Detection now flows straight into enforcement in the WAF you already run: Cloudflare or AWS WAF: automatically, safely, and reversibly. No inline proxy. No DNS change. An overlay on your existing edge, with honeypot-grade evidence behind every action.
But “push enforcement to the WAF” is the easy part to say and the dangerous part to get wrong. Here is how we do it without breaking your real users.
The naive version of WAF automation is “detect a bad JA4, write a block JA4 rule.” It’s also how you take down a chunk of your own traffic.
A JA4 TLS fingerprint identifies a population, not a person. Every Chrome 126 on Windows 11 emits the same JA4. Mobile apps are worse: one app version is a single fingerprint shared across every device that installed it. The moment one legitimate user shares a fingerprint with an attacker, a standing “block this JA4” rule blocks them both. That’s why AWS’s own guidance warns against single-dimension blocking, and why Cloudflare documents JA4 blocking as an incident-response tool, not standing policy.
So the entire design principle behind WebDecoy enforcement is a single rule: never emit a bare-fingerprint block.
When WebDecoy’s scoring engine confirms an actor is worth acting on, it doesn’t emit a fingerprint. It emits a composite actor signature: a rule keyed on at least two independent dimensions:
/login, only /api/*, only the routes actually under attack).That composite is the whole game. A rule targeting “this fingerprint and this network and this path” describes the actual rotating adversary. Not the millions of legitimate users who merely share a browser build. It’s precise enough to be safe as a standing rule, and it’s still IP-independent enough that it follows the actor as it rotates. JA4 remains the correlation key that ties an adversary’s scattered IPs into one actor; it just never becomes a block on its own.
Even a precise signature shouldn’t lead with a block. WebDecoy maps risk to a graduated ladder of actions, because the right response to “probably a bot” is not the same as the right response to “definitely an attacker”:
You keep control of the ladder: every band and action is editable per route group, and API or mobile routes. Where interactive challenges don’t work, automatically fall back to rate limiting.
The most robust way to defeat the shared-fingerprint problem is to stop asking “is this fingerprint bad?” and start asking “has this session proven it’s good?”
Where the WebDecoy SDK is deployed, enforcement flips from blocklisting bad fingerprints to allowlisting proven-good sessions. After a session passes WebDecoy’s client-side checks, it carries a signed clearance signal that your edge validates on protected routes. With no origin round-trip and effectively zero added latency for real users: requests that carry valid clearance pass straight through; requests that don’t, on a sensitive route, get challenged, and passing that challenge lets the session earn its clearance and self-heal.
This is the same architecture the enforcement incumbents rely on: Cloudflare’s clearance cookie, DataDome’s session cookie, Imperva’s session chain. Because the unit of enforcement is the individual session, not the population-level fingerprint. A shared JA4 produces zero collateral, because a real user’s session simply proves itself and moves on.
Update, July 2026: the decoy side of this loop is now live. A client that trips a decoy while carrying clearance loses it: the active session is revoked within about a minute, and re-issuance is refused on every IP the client rotates to, durably. The honeypot hit, a signal with no behavioral ambiguity, is what pulls the trigger. SDK tripwires feed the same deny path: and by design, only deception signals do: heuristic rules like rate limits never drive the deny-list, so enforcement stays proof-based.
Automated enforcement is only worth having if it can’t quietly turn into a self-inflicted outage. Four properties make WebDecoy enforcement safe to leave running:
And the whole system fails open: if anything errors, traffic flows. WebDecoy is a safety net over your WAF, not a new single point of failure in front of it.
Every major enforcement vendor: DataDome, Cloudflare Bot Management, HUMAN, Kasada, Imperva, converges on the same clearance-token architecture. WebDecoy delivers that same enforcement model with three differences that matter:
Detection told you who. Closed-loop enforcement does something about it: in your own WAF, at your own edge, without ever blanket-blocking the users who happen to share a fingerprint with an attacker.
Go deeper: Defeat IP Rotation: Block Bots by JA4 at the WAF explains the actor model this enforcement rides on, and the JA4 fingerprinting guide covers the signal itself. Ready to close the loop? See integrations or talk to us.
No. A bare fingerprint is never a WebDecoy block rule. Every enforcement rule the system generates is a composite actor signature: the TLS fingerprint combined with a network identity (IP or ASN) and, where it applies, a path scope. That composite is what makes automated blocking safe: a rule targets the specific rotating actor, not everyone who happens to share a browser's JA4.
That's exactly what the design prevents. Blocks are composite (never a single fingerprint), the default action is a challenge rather than a block, every rule carries an automatic expiry, and each integration starts in monitor mode so you can see what would have been challenged or blocked before anything is enforced. Where the WebDecoy SDK is deployed, enforcement flips to allowlisting proven-good sessions, which is structurally immune to shared-fingerprint collateral.
No. WebDecoy is an overlay on the WAF you already run, Cloudflare or AWS WAF. Your traffic never routes through WebDecoy, there is no reverse proxy, and there is no DNS change. Detection runs out of band and enforcement decisions are pushed into your own WAF through its API, so blocking and challenging happen at your edge, not in a WebDecoy hop.
A graduated ladder. Clean traffic is allowed, suspicious traffic is rate-limited on a composite key, likely-bot traffic gets a challenge (Cloudflare Managed Challenge or AWS WAF Challenge/CAPTCHA), and only high-confidence evidence. Like a honeypot or tripwire hit, earns an outright block. You can tune the action for each route group, and API or mobile routes automatically substitute rate limiting for challenges.
A confirmed actor typically reaches your WAF in under a minute, and stays blocked across every IP it rotates to for the life of the rule. Revocation is just as fast: one click pulls a signature globally, and the label feeds back into the scoring engine so the same false positive doesn't recur.
No. Googlebot, Bingbot, uptime monitors, and any partners you declare are evaluated against a first-class allowlist before any generated rule applies, so legitimate automation is never swept up in enforcement.
From one script tag to a rotation-proof lockout: the setup, the visitor experience, and the closed loop across a Cloudflare Worker and AWS WAF.
integrationDeploy WebDecoy's edge sensor to Cloudflare in one click. Detect the crawlers a JavaScript tag can't see, and enforce before they hit your origin.
integrationIntegrate WebDecoy bot detection with your SIEM. Native support for Splunk, Elastic, CrowdStrike, Syslog, and CEF formats.
integrationLike this post? Share it with your friends!
Get a personalized demo from our team.