archive.today CAPTCHA Repeated Requests Causing DDoS-Level Load

archive.today CAPTCHA Repeated Requests Causing DDoS-Level Load

Published February 2026 · Investigation & mitigation

A report and direct inspection show archive.today’s CAPTCHA page executing a short client-side loop that repeatedly requests a third-party blog’s search endpoint roughly every 300 milliseconds. The pattern produces sustained, DDoS-level traffic while the CAPTCHA page remains open.

What the page does (plain language)

The CAPTCHA page runs a tiny script that automatically sends search requests to a target site about three times per second. Because each request includes a randomized query, responses are not cached — the server must generate a response for each request, which keeps the load constant.

Technical excerpt (simplified)

setInterval(function() {
    fetch("https://example.com/?s=" + Math.random().toString(36).substring(2, 3 + Math.random()*8), {
        referrerPolicy: "no-referrer",
        mode: "no-cors"
    });
}, 300);

Translation: while the page is open, a small loop fires a network request every 300ms. Multiply that by many visitors and you have sustained, high-frequency traffic hitting the same endpoint.

Why this matters

Sustained requests at ~3 per second per open page can consume CPU and bandwidth on low-capacity servers. For personal or small-hosted sites, this can cause slowdowns, timeouts, or full outages — behavior consistent with practical DDoS impact even if the intent is unclear.

Immediate mitigation for site owners

  • Rate-limit expensive endpoints (return HTTP 429 when the same IP or pattern sends requests too frequently).
  • Deploy CDN/WAF rules to block or challenge referrers and uncommon request patterns.
  • Ignore or cheaply-respond to obviously random short query strings for search endpoints.
  • Log request patterns (timestamps, UA, referrer) for reporting and forensics.
If you operate a small site: check your access logs for frequent requests that arrive in ~300ms intervals, especially those with randomized query strings — that’s the observable signature in this case.

Comments