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 guarded, expiring rules to your Cloudflare or AWS WAF instead of blanket fingerprint blocks.
Published · Updated
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 into enforcement in the WAF you already run: Cloudflare or AWS WAF, with guardrails and expiry. (Automatic blocking from detections is held off in production until scores are calibrated; you can block manually today.) 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 design principle behind WebDecoy enforcement is: never block a fingerprint that real users could share.
WebDecoy has two ways to turn an actor into a WAF rule.
The Cloudflare signature adapter emits a composite actor signature: a rule keyed on at least two independent dimensions:
/login, only /api/*, only the routes actually under attack).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.
The Block actor at WAF response action (on AWS WAF, and on Cloudflare zones with Bot Management) pushes the actor’s JA4 itself. That is a bare fingerprint rule, so it sits behind a strict gate: the actor must be seen across at least 5 distinct IPs with an aggregate threat of 60 or more, the JA4 must have a non-browser shape (curl, python-requests, Go HTTP clients and similar tools), no other actor in your organization may carry the same JA4, and actors made up entirely of verified declared crawlers never qualify. Browser-shaped fingerprints are never pushed this way.
Even a precise signature shouldn’t always lead with a block. On Cloudflare, a composite signature can carry a Managed Challenge instead of a Block. A challenge resolves the shared-fingerprint problem for you: a real human sitting behind that JA4 passes it, while a headless bot fails. The ambiguity a fingerprint can’t settle, a challenge can.
Blocks are for high-confidence evidence: a honeypot or tripwire hit, or a confirmed rotating actor. The Response Actions you configure decide what runs: Block actor at WAF, Block IP (a time-boxed entry in a managed list), Webhook, or Email. On AWS WAF, pushed rules use the action set on the integration: Block, Count (monitor only), or Allow.
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 session clearance 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, 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. These properties are what 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.
Not from a single detection, and never for a browser-shaped fingerprint. There are two paths. The Cloudflare signature adapter builds composite rules (the JA4 combined with a network identity such as an ASN or CIDR, optionally path-scoped). The Block actor at WAF action on AWS WAF and Cloudflare pushes the actor's JA4 itself, but only after a gate: the actor must be rotating across at least 5 IPs with high aggregate threat, the JA4 must have a non-browser shape, and no other actor in your organization may share it.
That's what the design works to prevent. Fingerprint rules are gated to confirmed rotating actors with non-browser, unshared fingerprints; IP blocks expire automatically; AWS WAF can run in Count (monitor-only) mode; and each site has a Monitor/Enforce switch. Automatic blocking from detections is also held off in production until scores are calibrated, so today blocking is something you turn on and review. Where session clearance is deployed, enforcement allowlists proven-good sessions instead of blocklisting fingerprints.
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.
On Cloudflare, composite signatures can use Managed Challenge or Block. The Response Actions you configure can Block actor at WAF (a fingerprint rule for a confirmed rotating actor) or Block IP (a time-boxed entry in a managed list). On AWS WAF, pushed rules use the action you set on the integration: Block, Count (monitor only), or Allow.
Once an actor qualifies and enforcement is on, the rule is pushed through your WAF's API and follows the actor across every IP it rotates to for the life of the rule. Automatic blocking from detections is currently held off in production until scores are calibrated; manual blocking works today.
They are excluded from fingerprint blocking. An actor whose sightings all verified as a declared crawler (for example Googlebot or a published AI crawler fleet) never qualifies for the Block actor at WAF gate, so its infrastructure is not read as IP rotation.
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 is live on Shopify. Detect bot traffic, investigate risky orders, track AI crawlers and referrals, and choose your response with Shopify Flow.
integrationWebDecoy now reads your Fastly logs to find crawlers that never run JavaScript, and blocks addresses in a Fastly ACL. No application code.
integrationLike this post? Share it with your friends!
Get a personalized demo from our team.