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 trap: a fingerprint is not an actor

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.

Composite actor signatures, and a gate for bare JA4

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:

  • the TLS fingerprint (JA4/JA3),
  • a network identity (the CIDR or ASN the actor is rotating through),
  • and, where it applies, a path scope (only /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.

Challenge where you can, block on evidence

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.

Prove you’re good, not just prove you’re bad

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.

Safe by construction

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:

  • Blocks expire. IP blocks carry an automatic expiry (24 hours by default), and composite signatures carry a TTL that is renewed only when the actor is re-observed. Stale rules don’t pile up, and a false positive self-heals instead of blocking legitimate traffic forever.
  • Blocks are reversible and audited. Blocked IPs can be removed, and enforcement changes are recorded in the enforcement history.
  • Monitor mode first. Each site has a Monitor/Enforce switch, and the AWS WAF integration can run in Count (monitor-only) mode so you can see what would have been blocked before you enforce a thing.
  • Verified crawlers are excluded from fingerprint blocking. An actor made up entirely of verified declared crawlers never qualifies for Block actor at WAF, so a published crawler fleet’s IP spread is not mistaken for rotation.

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.

The overlay advantage

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:

  1. It’s an overlay on the WAF you already own, not a new inline proxy you route your traffic through. No DNS change, no vendor in your request path, no added latency for real users.
  2. Blocks are backed by honeypot-grade evidence. A tripwire hit is a deterministic fact that a client is automated. Not a probability score. So the actions WebDecoy takes rest on ground truth, not guesses.
  3. It’s safe by default. Gated fingerprint rules, expiring blocks, monitor mode, and the verified-crawler exclusion aren’t features you switch on. They’re how the system works.

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.

Frequently Asked Questions

Does WebDecoy block bots by JA4 fingerprint alone? +

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.

Will automated WAF enforcement cause false positives? +

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.

Does WebDecoy sit inline or require a DNS change? +

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.

What actions can WebDecoy trigger in my WAF? +

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.

How fast is detection-to-enforcement? +

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.

Do verified good bots like Googlebot get caught? +

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.

Want to see WebDecoy in action?

Get a personalized demo from our team.

Request Demo