online / endpoints 59 / categories 14 / rate 60/min/ip /

GET /header-flood

GET /header-flood

Returns N custom response headers. Tests header size limits in clients, proxies, and load balancers. Many stacks reject or silently drop responses above a threshold.

n Number of X-Chaos-Header-* headers to add. Range: 1–100. Default: 20.
build a request:

expect: 200 OK with N synthetic X-Chaos-Header-* headers. Proxies and clients that enforce a header-count limit may drop the response.

bash
curl -i https://chaos.catastrophic.io/header-flood?n=20
import urllib.request
resp = urllib.request.urlopen("https://chaos.catastrophic.io/header-flood?n=20")
chaos = [k for k in resp.headers if k.lower().startswith("x-chaos-header-")]
print(f"Got {len(chaos)} chaos headers")
const res = await fetch("https://chaos.catastrophic.io/header-flood?n=20");
let count = 0;
for (const [name] of res.headers) {
    if (name.toLowerCase().startsWith("x-chaos-header-")) count++;
}
console.log(`Got ${count} chaos headers`);
package main

import (
    "fmt"
    "net/http"
    "strings"
)

func main() {
    resp, _ := http.Get("https://chaos.catastrophic.io/header-flood?n=20")
    defer resp.Body.Close()
    count := 0
    for k := range resp.Header {
        if strings.HasPrefix(strings.ToLower(k), "x-chaos-header-") {
            count++
        }
    }
    fmt.Printf("Got %d chaos headers\n", count)
}
// Cargo.toml: reqwest = { version = "0.12", features = ["blocking"] }
fn main() -> Result<(), Box> {
    let resp = reqwest::blocking::get("https://chaos.catastrophic.io/header-flood?n=20")?;
    let count = resp
        .headers()
        .keys()
        .filter(|k| k.as_str().starts_with("x-chaos-header-"))
        .count();
    println!("Got {count} chaos headers");
    Ok(())
}
import java.net.URI;
import java.net.http.*;

public class HeaderFlood {
    public static void main(String[] args) throws Exception {
        var client = HttpClient.newHttpClient();
        var req = HttpRequest.newBuilder(URI.create("https://chaos.catastrophic.io/header-flood?n=20")).build();
        var resp = client.send(req, HttpResponse.BodyHandlers.discarding());
        long count = resp.headers().map().keySet().stream()
            .filter(k -> k.toLowerCase().startsWith("x-chaos-header-"))
            .count();
        System.out.println("Got " + count + " chaos headers");
    }
}
using var client = new HttpClient();
var resp = await client.GetAsync("https://chaos.catastrophic.io/header-flood?n=20");
var count = resp.Headers.Count(h =>
    h.Key.StartsWith("X-Chaos-Header-", StringComparison.OrdinalIgnoreCase));
Console.WriteLine($"Got {count} chaos headers");
require "net/http"
res = Net::HTTP.get_response(URI("https://chaos.catastrophic.io/header-flood?n=20"))
count = res.each_header.count { |k, _| k.downcase.start_with?("x-chaos-header-") }
puts "Got #{count} chaos headers"
$r = Invoke-WebRequest -Uri 'https://chaos.catastrophic.io/header-flood?n=20'
($r.Headers.Keys | Where-Object { $_ -like 'X-Chaos-Header-*' }).Count