This series described five layers and what each one actually did on this site. Here is the model in one place, including the point where we part company with the standard recommendation.

Five layers, one site, and every layer measured before and after.

The five layers

LayerWhat it decidesWhere we diverge
1. EdgeRefuse probe fingerprints before they reach the serverNo JavaScript challenge: retrieval crawlers do not run it, and they are the clients we want
2. ServerRefuse paths that should never resolveNo silent 444: we publish 403 as part of a verifiable contract
3. BehaviourBound abuse of endpoints worth abusingNo automatic IP bans: our crawler and scanner traffic share address ranges
4. HoneypotDetect the requests nobody legitimate makesNo fingerprinting theatre: address, agent, order and timing only
5. ReportingTurn defence into something checkableNo address blocklist: the loop closes on path families instead

What the numbers looked like

In our own window: 71,191 requests, of which 40,263 were refused and 33,133 matched known scan paths; the top five probe paths were /v1/graphql (857), /api/graphql (845), /graphql (831), /api/config (814) and /actuator/loggers (533).

The single most useful measurement was not a count but a comparison: refusing the same requests at the origin left the published number unchanged, because the number reads what reaches the server. Only the layers that decide before arrival can move it.

The parts, in order

How to check any of it

Sources: this site's own access log, rule set and published data; RFC 9309 (rfc-editor.org); nginx documentation (nginx.org); Cloudflare WAF custom rules (developers.cloudflare.com), rate-limiting rules (developers.cloudflare.com) and bot concepts (developers.cloudflare.com); Google on verifying crawler requests (developers.google.com); OWASP automated threats (owasp.org).

Which layer matters most?

Server hardening, because it depends on nobody else and covers the paths that should not exist. Edge blocking is the one that changes the published volume.

Can these five layers replace a WAF?

They overlap. A WAF is where layer one usually lives; the other four run whether or not you have one.

Why publish the disagreements?

Because the standard advice is usually right for a different kind of site - one without a public contract and without crawler-dependent traffic. Ours is neither.

Related reading: Layer 5: Closing the Loop in Public · Layer 4: Honeypots as Early Warning (and Their Limits)

More on this site: live signals · dated reports · how to verify us