dare.co.uk — Sunday traffic recompare

Baseline: 2026-05-06 (Wed, dashboard snapshot) · Today: 2026-05-10 (Sun, GraphQL fetch covering UTC 2026-05-09) · Window: 24h each

TL;DR

Trajectory — four days side by side

MetricWed 05-06Thu 05-07Fri 05-08Sat 05-09Wed → Sat Δ
Total requests / 24h8,93711,23014,21214,820+65.8%
Page views2,0762,1652,9412,906+40.0%
Cached requests3,7785,0466,6216,423+70.0%
Cache HIT %42.3%44.9%46.6%43.3%+1.0 pt
Threats3181,2221,4102,183+586%
Threat %3.6%10.9%9.9%14.7%+11.1 pts
Real content (200)4,0863,1754,7764,960+21.4%
Uniques (approx)1,8761,5771,7011,951+4.0%

Status-code mix — evolution across the week

CodeWedThuFriSatRead
2004,086 (45.7%)3,175 (28.3%)4,776 (33.6%)4,960 (33.5%)Real content. Slight absolute growth; share down because total volume up faster.
301889 (9.9%)2,867 (25.5%)1,328 (9.3%)2,405 (16.2%)Redirect batch still absorbing legacy SureCart / WP-taxonomy probes. Healthy.
302056 (0.5%)1,573 (11.1%)1,094 (7.4%)Newer 302s introduced mid-week. Stable now.
403322 (3.6%)1,225 (10.9%)1,423 (10.0%)2,184 (14.7%)Bot Fight Mode tarpit. Escalating with bot pressure.
4043,486 (39.0%)3,429 (30.5%)4,868 (34.3%)3,812 (25.7%)Down 13 points since baseline. Real broken-link reduction.
40528 (0.3%)321 (2.9%)58 (0.4%)58 (0.4%)Method-not-allowed bot probes — settled at low level after Thu spike.
5303 (0.0%)06 (0.0%)76 (0.5%)Origin sub-error — 25× jump Saturday. Worker hiccup, see Watch items.

Visual

Status-code composition · 24h, four consecutive days 0 4,000 8,000 12,000 16,000 Wed 05-06 · 200: 4,086 Wed 05-06 · 301: 889 Wed 05-06 · 302/307/308: 29 Wed 05-06 · 403: 322 Wed 05-06 · 404: 3,486 Wed 05-06 · other 4xx/5xx: 125 8,937 Wed 05-06 Thu 05-07 · 200: 3,175 Thu 05-07 · 301: 2,867 Thu 05-07 · 302/307/308: 112 Thu 05-07 · 403: 1,225 Thu 05-07 · 404: 3,429 Thu 05-07 · other 4xx/5xx: 422 11,230 Thu 05-07 Fri 05-08 · 200: 4,776 Fri 05-08 · 301: 1,328 Fri 05-08 · 302/307/308: 1,669 Fri 05-08 · 403: 1,423 Fri 05-08 · 404: 4,868 Fri 05-08 · other 4xx/5xx: 148 14,212 Fri 05-08 Sat 05-09 · 200: 4,960 Sat 05-09 · 301: 2,405 Sat 05-09 · 302/307/308: 1,230 Sat 05-09 · 403: 2,184 Sat 05-09 · 404: 3,812 Sat 05-09 · other 4xx/5xx: 229 14,820 Sat 05-09 Status group 200 301 302/307/308 403 404 other 4xx/5xx
Story: total volume rises (black line, +66% Wed→Sat); real content (green) holds at ~33–46% of the bar with a slight absolute uptick; the bottom (red 404) shrinks while purple (301s) grows — that's the redirect batch absorbing legacy bot probes. Amber (403, Bot Fight) climbing with threat pressure.
Volume + threats trajectory · 24h, four consecutive days 0 4,000 8,000 12,000 16,000 0 1,000 2,000 Wed 05-06 Thu 05-07 Fri 05-08 Sat 05-09 Total requests: 8,937 Total requests: 11,230 Total requests: 14,212 Total requests: 14,820 Real content (200): 4,086 Real content (200): 3,175 Real content (200): 4,776 Real content (200): 4,960 Threats (right axis): 318 Threats (right axis): 1,222 Threats (right axis): 1,410 Threats (right axis): 2,183 total 200s threats
Story: total requests (black) and real content (green) rise together — the green floor is intact. Threats (red, right axis) rise faster — the WAF is working harder, but it's not chewing into real-content delivery.

What this tells us

The recent fixes are doing exactly what they were aimed at, and the trajectory is a clean four-day arc you could put in a deck:

  1. 404 share down 13 points (39% → 25.7%). The redirect batch is still absorbing the legacy URL probes Google was reading as “broken site”.
  2. 301s at 16.2% of all traffic — twice the baseline share. Each is an edge-computed response: fast, free, no origin work, and the right Google signal (“we know where it moved”).
  3. Real-content delivery is healthy. 4,960 200s on Saturday vs 4,086 on Wednesday (+21%). Page views up similarly. The HSTS + cache-control + sitemap + redirect work didn't break anything visible to real visitors.
  4. Cache HIT held in a tight band. 43–47% across all four days. No regression from the deploy churn. Saturday's 43.3% is well within the noise floor.

The framing for Friday's recompare (“composition has shifted significantly”) still applies — but as of Sunday the shift has settled into a stable new shape, not a moving target.

Watch items

Recommendations

Methodology note

Addendum — 530 spike verified (2026-05-10)

The original watch-item hypothesis (“almost certainly deploy-window noise from today's launchd-cron unblock + manual deploy testing”) was wrong on two counts. Documenting the falsification trail because the reasoning matters.

What I checked: five-minute-granularity GraphQL on httpRequestsAdaptiveGroups for the 21:30–01:00 UTC window around the spike, plus the dare-co-uk Worker's modified_on timestamp.

What the data showed:

5-min bucket UTC530TotalNotable
22:25 (23:25 BST)34641363 × 403s — sustained 130 req/s, 100× the day's average.
23:20 (00:20 BST Sun)356157% error rate — focused failure, low volume.
(rest of day)7full dayFlat background.

Where the original hypothesis went wrong:

  1. Timeline. My launchd-cron unblock + manual deploys happened ~07:30 BST Sunday morning, not late Saturday. The 530 bursts were 7+ hours earlier.
  2. Cause. The signature isn't deploy-window noise (which would look like a few 530s spread around a single short window with no other anomaly). It's two distinct events: an attack-burst overwhelm at 22:25 (Worker hit CPU/concurrency limits during a sustained 130 req/s spike that the WAF was already blocking 363 of), and a focused failure at 23:20 (35 530s in 61 reqs is a broken endpoint signature, not volume overload).

What probably happened: botnet hit dare.co.uk hard at 22:20–22:30 UTC, WAF caught most of it (363 of 641), Worker briefly couldn't keep up with the rest (34 × 530s). A second smaller burst at 23:20 hit a specific Worker path that was breaking. You likely investigated and shipped a fix — dare-co-uk Worker modified_on = 2026-05-09T23:32:54Z, exactly 7 minutes after the second burst. Zero 530s in any bucket after that, and zero today.

Lesson banked: when a watch-item ends with “probably X”, that's a testable hypothesis. Five minutes of higher-resolution data is cheaper than publishing a wrong leading explanation.


Generated 2026-05-10 from 2026-05-10.json (data window: UTC 2026-05-09). Addendum verified against 5-min GraphQL + Worker metadata.

Source: dare_traffic_recompare_2026-05-10.md