88 KiB
88 KiB
--------------------------------------------
ENDPOINT: /cl-word
TITLE: Content-Length: banana
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-word
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-word HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Invalid Content-Length: value
* Closing connection
--------------------------------------------
ENDPOINT: /cl-empty
TITLE: Content-Length: (empty)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-empty
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-empty HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Invalid Content-Length: value
* Closing connection
--------------------------------------------
ENDPOINT: /cl-negative
TITLE: Content-Length: -99999999999999999
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-negative
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-negative HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Invalid Content-Length: value
* Closing connection
--------------------------------------------
ENDPOINT: /cl-huge
TITLE: Content-Length: 99999999999999999
COMMAND: curl -sv --max-time 5 --max-time 2 http://127.0.0.1:60666/cl-huge
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-huge HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Length: 99999999999999999
<
{ [4 bytes data]
* transfer closed with 99999999999999995 bytes remaining to read
* Closing connection
tiny
--------------------------------------------
ENDPOINT: /cl-zero
TITLE: Content-Length: 0 (body sent)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-zero
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-zero HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Length: 0
<
* Closing connection
--------------------------------------------
ENDPOINT: /cl-float
TITLE: Content-Length: 3.14159
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-float
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-float HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Length: 3.14159
<
{ [3 bytes data]
* Closing connection
hel
--------------------------------------------
ENDPOINT: /cl-hex
TITLE: Content-Length: 0xDEAD
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-hex
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-hex HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Length: 0xDEAD
<
* Closing connection
--------------------------------------------
ENDPOINT: /cl-null
TITLE: Content-Length: 5\x00
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-null
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-null HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Nul byte in header
* Closing connection
--------------------------------------------
ENDPOINT: /cl-negative-one
TITLE: Content-Length: -1
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-negative-one
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-negative-one HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Invalid Content-Length: value
* Closing connection
--------------------------------------------
ENDPOINT: /cl-nan
TITLE: Content-Length: NaN
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-nan
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-nan HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Invalid Content-Length: value
* Closing connection
--------------------------------------------
ENDPOINT: /cl-inf
TITLE: Content-Length: Infinity
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-inf
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-inf HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Invalid Content-Length: value
* Closing connection
--------------------------------------------
ENDPOINT: /cl-mismatch
TITLE: Content-Length: 1 (body is 30 bytes)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/cl-mismatch
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /cl-mismatch HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Length: 1
<
{ [1 bytes data]
* Closing connection
t
--------------------------------------------
ENDPOINT: /ct-garbage
TITLE: Content-Type: 200 random chars
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-garbage
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-garbage HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type: Ht6V$[B4X#1JIrHTlaLLvZ
* Header without colon
* Closing connection
--------------------------------------------
ENDPOINT: /ct-multi
TITLE: Content-Type: 5 MIME types
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-multi
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-multi HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type: text/html, application/json, image/png, text/xml, application/octet-stream
<
{ [10 bytes data]
* Closing connection
what am i?
--------------------------------------------
ENDPOINT: /ct-empty
TITLE: Content-Type: (empty)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-empty
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-empty HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type:
<
{ [5 bytes data]
* Closing connection
hello
--------------------------------------------
ENDPOINT: /ct-null
TITLE: Content-Type: text/\x00html
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-null
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-null HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Nul byte in header
* Closing connection
--------------------------------------------
ENDPOINT: /ct-emoji
TITLE: Content-Type: emoji
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-emoji
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-emoji HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: 💀/🔥
< Content-Length: 5
<
{ [5 bytes data]
* Connection #0 to host 127.0.0.1 left intact
hello
--------------------------------------------
ENDPOINT: /ct-mega
TITLE: Content-Type: 10KB long
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-mega
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-mega HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type: text/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--------------------------------------------
ENDPOINT: /ct-crlf
TITLE: Content-Type with CRLF injection
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-crlf
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-crlf HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type: text/html
< X-Injected: true
<
{ [5 bytes data]
* Closing connection
hello
--------------------------------------------
ENDPOINT: /ct-semicolon
TITLE: Content-Type with 50 charset params
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/ct-semicolon
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /ct-semicolon HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type: text/html;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8;charset=utf-8
<
{ [5 bytes data]
* Closing connection
hello
--------------------------------------------
ENDPOINT: /status-neg
TITLE: Status: -1
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/status-neg
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /status-neg HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Unsupported HTTP/1 subversion in response
* Closing connection
--------------------------------------------
ENDPOINT: /status-zero
TITLE: Status: 0
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/status-zero
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /status-zero HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Unsupported HTTP/1 subversion in response
* Closing connection
--------------------------------------------
ENDPOINT: /status-999
TITLE: Status: 999
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/status-999
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /status-999 HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 999
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
<
{ [5 bytes data]
* Closing connection
hello
--------------------------------------------
ENDPOINT: /status-huge
TITLE: Status: 99999
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/status-huge
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /status-huge HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Unsupported HTTP/1 subversion in response
* Closing connection
--------------------------------------------
ENDPOINT: /status-word
TITLE: Status: BANANA
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/status-word
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /status-word HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Unsupported HTTP/1 subversion in response
* Closing connection
--------------------------------------------
ENDPOINT: /hdr-mega-name
TITLE: Header name: 64KB of As
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-mega-name
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-mega-name HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< X-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--------------------------------------------
ENDPOINT: /hdr-mega-val
TITLE: Header value: 1MB of Bs
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-mega-val
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-mega-val HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
* Closing connection
--------------------------------------------
ENDPOINT: /hdr-1000
TITLE: 1000 headers
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-1000
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-1000 HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< X-H0: 0
< X-H1: 1
< X-H2: 2
< X-H3: 3
< X-H4: 4
< X-H5: 5
< X-H6: 6
< X-H7: 7
< X-H8: 8
< X-H9: 9
< X-H10: 10
< X-H11: 11
< X-H12: 12
< X-H13: 13
< X-H14: 14
< X-H15: 15
< X-H16: 16
< X-H17: 17
< X-H18: 18
< X-H19: 19
< X-H20: 20
< X-H21: 21
< X-H22: 22
< X-H23: 23
< X-H24: 24
< X-H25: 25
< X-H26: 26
< X-H27: 27
< X-H28: 28
< X-H29: 29
< X-H30: 30
< X-H31: 31
< X-H32: 32
< X-H33: 33
< X-H34: 34
< X-H35: 35
< X-H36: 36
< X-H37: 37
< X-H38: 38
< X-H39: 39
< X-H40: 40
< X-H41: 41
< X-H42: 42
< X-H43: 43
< X-H44: 44
< X-H45: 45
< X-H46: 46
< X-H47: 47
< X-H48: 48
< X-H49: 49
< X-H50: 50
< X-H51: 51
< X-H52: 52
< X-H53: 53
< X-H54: 54
< X-H55: 55
< X-H56: 56
< X-H57: 57
< X-H58: 58
< X-H59: 59
< X-H60: 60
< X-H61: 61
< X-H62: 62
< X-H63: 63
< X-H64: 64
< X-H65: 65
< X-H66: 66
< X-H67: 67
< X-H68: 68
< X-H69: 69
< X-H70: 70
< X-H71: 71
< X-H72: 72
< X-H73: 73
< X-H74: 74
< X-H75: 75
< X-H76: 76
< X-H77: 77
< X-H78: 78
< X-H79: 79
< X-H80: 80
< X-H81: 81
< X-H82: 82
< X-H83: 83
< X-H84: 84
< X-H85: 85
< X-H86: 86
< X-H87: 87
< X-H88: 88
< X-H89: 89
< X-H90: 90
< X-H91: 91
< X-H92: 92
< X-H93: 93
< X-H94: 94
< X-H95: 95
< X-H96: 96
< X-H97: 97
< X-H98: 98
< X-H99: 99
< X-H100: 100
< X-H101: 101
< X-H102: 102
< X-H103: 103
< X-H104: 104
< X-H105: 105
< X-H106: 106
< X-H107: 107
< X-H108: 108
< X-H109: 109
< X-H110: 110
< X-H111: 111
< X-H112: 112
< X-H113: 113
< X-H114: 114
< X-H115: 115
< X-H116: 116
< X-H117: 117
< X-H118: 118
< X-H119: 119
< X-H120: 120
< X-H121: 121
< X-H122: 122
< X-H123: 123
< X-H124: 124
< X-H125: 125
< X-H126: 126
< X-H127: 127
< X-H128: 128
< X-H129: 129
< X-H130: 130
< X-H131: 131
< X-H132: 132
< X-H133: 133
< X-H134: 134
< X-H135: 135
< X-H136: 136
< X-H137: 137
< X-H138: 138
< X-H139: 139
< X-H140: 140
< X-H141: 141
< X-H142: 142
< X-H143: 143
< X-H144: 144
< X-H145: 145
< X-H146: 146
< X-H147: 147
< X-H148: 148
< X-H149: 149
< X-H150: 150
< X-H151: 151
< X-H152: 152
< X-H153: 153
< X-H154: 154
< X-H155: 155
< X-H156: 156
< X-H157: 157
< X-H158: 158
< X-H159: 159
< X-H160: 160
< X-H161: 161
< X-H162: 162
< X-H163: 163
< X-H164: 164
< X-H165: 165
< X-H166: 166
< X-H167: 167
< X-H168: 168
< X-H169: 169
< X-H170: 170
< X-H171: 171
< X-H172: 172
< X-H173: 173
< X-H174: 174
< X-H175: 175
< X-H176: 176
< X-H177: 177
< X-H178: 178
< X-H179: 179
< X-H180: 180
< X-H181: 181
< X-H182: 182
< X-H183: 183
< X-H184: 184
< X-H185: 185
< X-H186: 186
< X-H187: 187
< X-H188: 188
< X-H189: 189
< X-H190: 190
< X-H191: 191
< X-H192: 192
< X-H193: 193
< X-H194: 194
< X-H195: 195
< X-H196: 196
< X-H197: 197
< X-H198: 198
< X-H199: 199
< X-H200: 200
< X-H201: 201
< X-H202: 202
< X-H203: 203
< X-H204: 204
< X-H205: 205
< X-H206: 206
< X-H207: 207
< X-H208: 208
< X-H209: 209
< X-H210: 210
< X-H211: 211
< X-H212: 212
< X-H213: 213
< X-H214: 214
< X-H215: 215
< X-H216: 216
< X-H217: 217
< X-H218: 218
< X-H219: 219
< X-H220: 220
< X-H221: 221
< X-H222: 222
< X-H223: 223
< X-H224: 224
< X-H225: 225
< X-H226: 226
< X-H227: 227
< X-H228: 228
< X-H229: 229
< X-H230: 230
< X-H231: 231
< X-H232: 232
< X-H233: 233
< X-H234: 234
< X-H235: 235
< X-H236: 236
< X-H237: 237
< X-H238: 238
< X-H239: 239
< X-H240: 240
< X-H241: 241
< X-H242: 242
< X-H243: 243
< X-H244: 244
< X-H245: 245
< X-H246: 246
< X-H247: 247
< X-H248: 248
< X-H249: 249
< X-H250: 250
< X-H251: 251
< X-H252: 252
< X-H253: 253
< X-H254: 254
< X-H255: 255
< X-H256: 256
< X-H257: 257
< X-H258: 258
< X-H259: 259
< X-H260: 260
< X-H261: 261
< X-H262: 262
< X-H263: 263
< X-H264: 264
< X-H265: 265
< X-H266: 266
< X-H267: 267
< X-H268: 268
< X-H269: 269
< X-H270: 270
< X-H271: 271
< X-H272: 272
< X-H273: 273
< X-H274: 274
< X-H275: 275
< X-H276: 276
< X-H277: 277
< X-H278: 278
< X-H279: 279
< X-H280: 280
< X-H281: 281
< X-H282: 282
< X-H283: 283
< X-H284: 284
< X-H285: 285
< X-H286: 286
< X-H287: 287
< X-H288: 288
< X-H289: 289
< X-H290: 290
< X-H291: 291
< X-H292: 292
< X-H293: 293
< X-H294: 294
< X-H295: 295
< X-H296: 296
< X-H297: 297
< X-H298: 298
< X-H299: 299
< X-H300: 300
< X-H301: 301
< X-H302: 302
< X-H303: 303
< X-H304: 304
< X-H305: 305
< X-H306: 306
< X-H307: 307
< X-H308: 308
< X-H309: 309
< X-H310: 310
< X-H311: 311
< X-H312: 312
< X-H313: 313
< X-H314: 314
< X-H315: 315
< X-H316: 316
< X-H317: 317
< X-H318: 318
< X-H319: 319
< X-H320: 320
< X-H321: 321
< X-H322: 322
< X-H323: 323
< X-H324: 324
< X-H325: 325
< X-H326: 326
< X-H327: 327
< X-H328: 328
< X-H329: 329
< X-H330: 330
< X-H331: 331
< X-H332: 332
< X-H333: 333
< X-H334: 334
< X-H335: 335
< X-H336: 336
< X-H337: 337
< X-H338: 338
< X-H339: 339
< X-H340: 340
< X-H341: 341
< X-H342: 342
< X-H343: 343
< X-H344: 344
< X-H345: 345
< X-H346: 346
< X-H347: 347
< X-H348: 348
< X-H349: 349
< X-H350: 350
< X-H351: 351
< X-H352: 352
< X-H353: 353
< X-H354: 354
< X-H355: 355
< X-H356: 356
< X-H357: 357
< X-H358: 358
< X-H359: 359
< X-H360: 360
< X-H361: 361
< X-H362: 362
< X-H363: 363
< X-H364: 364
< X-H365: 365
< X-H366: 366
< X-H367: 367
< X-H368: 368
< X-H369: 369
< X-H370: 370
< X-H371: 371
< X-H372: 372
< X-H373: 373
< X-H374: 374
< X-H375: 375
< X-H376: 376
< X-H377: 377
< X-H378: 378
< X-H379: 379
< X-H380: 380
< X-H381: 381
< X-H382: 382
< X-H383: 383
< X-H384: 384
< X-H385: 385
< X-H386: 386
< X-H387: 387
< X-H388: 388
< X-H389: 389
< X-H390: 390
< X-H391: 391
< X-H392: 392
< X-H393: 393
< X-H394: 394
< X-H395: 395
< X-H396: 396
< X-H397: 397
< X-H398: 398
< X-H399: 399
< X-H400: 400
< X-H401: 401
< X-H402: 402
< X-H403: 403
< X-H404: 404
< X-H405: 405
< X-H406: 406
< X-H407: 407
< X-H408: 408
< X-H409: 409
< X-H410: 410
< X-H411: 411
< X-H412: 412
< X-H413: 413
< X-H414: 414
< X-H415: 415
< X-H416: 416
< X-H417: 417
< X-H418: 418
< X-H419: 419
< X-H420: 420
< X-H421: 421
< X-H422: 422
< X-H423: 423
< X-H424: 424
< X-H425: 425
< X-H426: 426
< X-H427: 427
< X-H428: 428
< X-H429: 429
< X-H430: 430
< X-H431: 431
< X-H432: 432
< X-H433: 433
< X-H434: 434
< X-H435: 435
< X-H436: 436
< X-H437: 437
< X-H438: 438
< X-H439: 439
< X-H440: 440
< X-H441: 441
< X-H442: 442
< X-H443: 443
< X-H444: 444
< X-H445: 445
< X-H446: 446
< X-H447: 447
< X-H448: 448
< X-H449: 449
< X-H450: 450
< X-H451: 451
< X-H452: 452
< X-H453: 453
< X-H454: 454
< X-H455: 455
< X-H456: 456
< X-H457: 457
< X-H458: 458
< X-H459: 459
< X-H460: 460
< X-H461: 461
< X-H462: 462
< X-H463: 463
< X-H464: 464
< X-H465: 465
< X-H466: 466
< X-H467: 467
< X-H468: 468
< X-H469: 469
< X-H470: 470
< X-H471: 471
< X-H472: 472
< X-H473: 473
< X-H474: 474
< X-H475: 475
< X-H476: 476
< X-H477: 477
< X-H478: 478
< X-H479: 479
< X-H480: 480
< X-H481: 481
< X-H482: 482
< X-H483: 483
< X-H484: 484
< X-H485: 485
< X-H486: 486
< X-H487: 487
< X-H488: 488
< X-H489: 489
< X-H490: 490
< X-H491: 491
< X-H492: 492
< X-H493: 493
< X-H494: 494
< X-H495: 495
< X-H496: 496
< X-H497: 497
< X-H498: 498
< X-H499: 499
< X-H500: 500
< X-H501: 501
< X-H502: 502
< X-H503: 503
< X-H504: 504
< X-H505: 505
< X-H506: 506
< X-H507: 507
< X-H508: 508
< X-H509: 509
< X-H510: 510
< X-H511: 511
< X-H512: 512
< X-H513: 513
< X-H514: 514
< X-H515: 515
< X-H516: 516
< X-H517: 517
< X-H518: 518
< X-H519: 519
< X-H520: 520
< X-H521: 521
< X-H522: 522
< X-H523: 523
< X-H524: 524
< X-H525: 525
< X-H526: 526
< X-H527: 527
< X-H528: 528
< X-H529: 529
< X-H530: 530
< X-H531: 531
< X-H532: 532
< X-H533: 533
< X-H534: 534
< X-H535: 535
< X-H536: 536
< X-H537: 537
< X-H538: 538
< X-H539: 539
< X-H5
--------------------------------------------
ENDPOINT: /hdr-empty-name
TITLE: Header: : empty_name
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-empty-name
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-empty-name HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< : empty_name
< Content-Length: 5
<
{ [5 bytes data]
* Connection #0 to host 127.0.0.1 left intact
hello
--------------------------------------------
ENDPOINT: /hdr-no-colon
TITLE: Header without colon
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-no-colon
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-no-colon HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
* Header without colon
* Closing connection
--------------------------------------------
ENDPOINT: /hdr-dup-cl
TITLE: Duplicate Content-Length: 5 and 999
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-dup-cl
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-dup-cl HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 5
< Content-Length: 999
<
{ [5 bytes data]
* transfer closed with 994 bytes remaining to read
* Closing connection
hello
--------------------------------------------
ENDPOINT: /hdr-null
TITLE: Header with null bytes
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-null
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-null HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
* Nul byte in header
* Closing connection
--------------------------------------------
ENDPOINT: /hdr-newline
TITLE: Header with bare \n
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/hdr-newline
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /hdr-newline HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Bad: line1
* Header without colon
* Closing connection
--------------------------------------------
ENDPOINT: /body-endless
TITLE: Infinite body stream
COMMAND: curl -sv --max-time 5 --max-time 2 http://127.0.0.1:60666/body-endless
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /body-endless HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:27 GMT
< Content-Type: application/octet-stream
<
{ [1024 bytes data]
* Operation timed out after 2000 milliseconds with 2048 bytes received
* Closing connection
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
--------------------------------------------
ENDPOINT: /body-none
TITLE: Content-Length: 5, no body
COMMAND: curl -sv --max-time 5 --max-time 2 http://127.0.0.1:60666/body-none
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /body-none HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 5
<
* transfer closed with 5 bytes remaining to read
* Closing connection
--------------------------------------------
ENDPOINT: /body-binary
TITLE: 4KB binary as text/html
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/body-binary
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /body-binary HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Content-Type: text/html
<
{ [4096 bytes data]
Ѯ<><D1AE>f>>E <20>&Z<><5A>{<7B><><88>4<A9><34><AF><9F>W5<57>̴<8A><CCB4>b
->vW(<28>rw<11><<3C>I<92><49>|/=p<>YrP<72><50>Z1
<0A><0C><>p<CA>G<CB><47><96>!<21>Fb<>V.<2E><>C<AF><43>v<<3C>4<CC>tS_<53>6<11><><A5>f<BA><66><D6><F7>t
<0A>a(J<>m<1D>Vp<56>ȡ<B6>ףIl<49>D<93>t<A1>D<BF>o<DA>%P<><1D>9<><39><B5><C4>ۘ<DF><DB98>aK<61>'cy&<26>t<A5>G٩<07>(<28>=܍<>Х<CB>t<B6>v<07>@J<><4A>d<><64>2<85>MftL~<7E>җܪ<1D><><8C>1%v<><08><><AE><80>:<3A>1O<31>B,<2C><><AF><ED>j5<>=9<1C>qc<71><08><>1<B7><31>VD<56>M<94> <10>hy(<28>a`L>H<EE97A5>;
<0A>[Ne<4E><65><8C><CB><FF><DC>T<>B<>|X<>6q<36>^<5E><><91>=<3D><0B><10>li<6C><16>f<BA>l<FD><6C><E4>߂]<5D><> <09>+<2B><><B6><F4><96><C9>X<99><58><E7>yb2$,EΎЧ:<0C><><B9>*W<0B><>&<02><>I؏<49><D88F>!^<5E>J<06><><9E>ׇZN<4E><0E><>6By<42>r<B1><72>ɨ<BC>CQG<51>M<DB>w<AC><77>ЌZZ1]<5D>5|<7C><><1D><>B4<0F><0C><>k@<40><>2ҥ<32>'<27><><A3><9D>CH<10>N<B4><4E>z<D7><7A><91>F,t<>r<93><72><06><><99>&<26><><B2><05><>[k<><1E>/a<>aVƾ*<2A>}<7D>Y
<0A>qyO
.<15><03>!<21>Ü<87><C39C>>շP<D5B7>0s<0E><>;<3B><>/'u!<21><>6P7V<37>C<D0><43>قtFg0G0<47><30>ݝ<AF><82>Z#<23><>47O<37>~;<3B><><87><FD>F<B3><46><8B>\0&<26>}<7D><><C8><FA>mf<6D><66>7<A5>E<8A><45><D1><F4><F7><A8><EB><17><>&<1B>
<0A><><F3>ϖ<80>y=ON<1D><><8F><03>Jt<4A>ʢ<BA>U<CE><55><18><>u<>.<2E>1<E6><31><B3><92>rz<72>F<D3>
<17><><99>q6<71><36><0C>B<85>o<E4><19><>Y0<01>ڸ<C5><DAB8>r<FA>r<B6>J<98><4A>Az<41><7A>a<C6><61> <09>e]|<7C><>c<1F>><3E>^tcp_<70><5F>0<F3>hH<68><48>ُJB<4A>՚<CA><D59A><E4>3<A6><33><A2>a@<40>=p<>]e<>&9<><05>?<3F>`<60><0E>Y<0B>)<29>-<08><>C<D1>T<DC>N<AD><4E><E3>(b<0F>z<A4><7A>}l<02><11>}<7D>u<D1><75><FA>[f<><66><F6>`<60>5<CB><35><13><>η:"<22>t<F3> <09><><13><><EE><9D>B<D1><42>|Ne<4E>Ŀ<13>]֫<1E>U<D6>8:<3A> tB<74><42>O'BgY2<59>Ȝ<F6><C89C><E8>ъ^Y8<59><38>j<D1>^<<3C><>y<>!,d<10><><88>S<A3><53><E0><11><>>Oȁ<1D><17><><B0><FF>$<24><>.m?J<><0B><>c{_<><5F>Պ<93><D58A><CD>Η<ED><01>pr<70><04>P!|<7C><>Q,}%5 <20>~<7E>7Q<><51>\<5C><><
<0E>
ʩ <20>02<30><32><84><EC><F3><B9>'<27>/<12>7b<37><62><A5>dG<64>P1ּz<D6BC><03>x<E1><78>y<D9><79>Hꥧk-<0F>"<22><><9D>V_#o<>yy<79><79>1<EA>^$<02><><18><><7F><C6><E2>
<0A><>C<91>6<86><36>\@<07>@<40><>v<B7><76>Q<18>C<B0>b<95><62>ab"_U$D ݓ<><DD93>.<2E><><B6><03><08>Po<50><6F><FD><F9>ޙ?tP<74>z<D7>Mf<4D><66>?<3F>^<5E><><E7><83><CD><EA>s<06><><EC><1A>q{e<>{<7B>]rG/T)#q<>jB<6A>ԭ?<3F><><FB>`<60><>w%^<5E>`<60>7jx<6A><78><9E><F9>@<40><><05>V<A3>v<DC>`<60>;<3B><1A><>m<>S<99>L<B0>P<D6><50>Ե@<40><>:<3A><>7<1C><>{<7B>{<7B><>:Fq<46>cޠ<63><DEA0>(4<>ڇ[<5B>:<3A>\<5C><><86><A8><D9><E5><F0><A8><FA><9C><FE>d&v<>(sG<73>j<><6A>$<24><1B><><A1><88>,<2C><><C7>t<14><>кld̓<19><><94>*v<>"<22><><91><A5>5<EB>i<FF>н<FD><B9><11>0<8D><30><BA>
w<>R<A8>ᛕ<F8>I<DC><49><EA>fc<66><63><D6><C1>*P<><50>+Tv*/EMIj<49><6A><C2>v<8D><76>/rM<72><4D><97><A8><D1><FD>Wny <09>H<F0>m<A0><<3C>(<28><>1<CF>Xg
he,7{<7B><><84><F6>Y<CF><1C>|<7C><><90><18>?<3F>\<5C>n u<><75>G<EC>ĄP2<50>?˼b<62><D2>&<26>1<B7><31><87>w<C2><77><8D>1H<31><48><B8><F1><F6><0C>-o<>DؙID<49><44><06>!<0C>:<3A>6<92>^<5E>m<><14><>ζ<E7>]ǝ0<C79D><30>T<C6><54><0B>qReCX<43><58>TNa<1F>%i<>X<D2>
<0A><02><03><89>8۳HQA<>w<E0>]<5D>!<21><><D0>m<F6>;<3B>p<D9><70>ʰ<B9><CAB0> <09><><85>\Q<><51>-<2D>r<8A><72><D1>;<3B><>e<8D>i<1F><><8A><D5><E1><99>,$<1B>qT<71><<3C>"<22>$m<>E<EC>O<8C><4F>K<FF><06><>-\<5C>V<88>A3
<0A><>[<5B>b<12><0E>Y<C1>p|+B<><42>4N<34><4E>%E<><45><B8><BC>$<24><04><<3C> 8wNSZ<53><5A>,<2C>38<33><38><FC><F4>+<2B><>
a<><61>ˠ<BB><CBA0><B6>4<C5><34><C4><DB><E5>- <08>Ɉ<91><C988><97><B0>*<2A>=vN<76><10><0F>+R<<3C>BS|,<2C><>>jgȹ1<C8B9><31>̠<C3>U<D6><17><><B7>=5<> <20>$<24><>i<C0>$Fl><3E>S<08>b`B诿<42><E8AFBF>b+<2B>QP*<2A><10>i<08><06><><B9><E4>ӄڔݱ`<60>2?<04><>0c<30><13>c,\<5C>&F<>PB<50>~<7E>t<EC><74>7<BA>y $<24>gD<67><44><86><ED>Ѭݸ<10><><91>
<0A><><8A><BF><F5>bT<0E><>o<D0><6F><02><><E3>Rt<>X<AB>_Ұ<5F><D2B0><F4><A4><AA>k<91><6B>(<28><><A1><F6><A9>ye?{<7B><><04><>T@<40>E<A1>)-i<>t$k2<6B>]<5D>#<23>e<F7>ϵ?r<> N
a$9<>HbEg<45><0C>jI%#$D<>[)Bl<42>(<0F><>~<7E>P үU<D2AF><55><FD>y<9B><79>@<40><>
+
<0A><>a<D9><61>d8<64><38>G<F8><47>oԶ<6F>nҰA<D2B0><41><B5>xU4<55><34><AA><9B><82><A5><E9>K<CB>Q<C6>0<B8>
<08><>=9<><39><F1>\0G<30><11><>J<CD>N<7F><4E><0B><><AF><04>bџ`<60><><A4>W<0C>$<24><><99>N<0C>K<88>2@%eۡ<65> <20>^<5E>Y7<0E><>x6<78>MhM<68><4D><F1>Љ<><D089>R<8C><52>+<07>d<F6>+f<><66><E9><81>x<0E>O
<0A><><98>'<27><>(}^<5E>n<C6>o<DC><6F>.W
X<>\i0<69>8<13><>8g<38>
즠<><ECA6A0><B1><F0>m<F8>A_ϑ<1B>s<E6>v<>>^<5E><>
n<><6E><F9><90>h2<68><32><F5>Q_<19>|X@<40>nÔ<6E>#<23><14><><B2><81>|<1E><>;<3B>[<5B><><87><E9><FB>ڠ<D1><DAA0>i<80><69>9<E3>e(/<2F><>\<5C><><92><8E>l<A8>&ց~<7E><><A7><91><B2><DA>)<29><DF><7F>0z14<31><1D><08>Lu<4C><1D>V<F8><56>'Ի<><D4BB><{0{F<><46><85>)-<2D>n<9D>"z<>"<22>?
<0A>L<85><4C>sn:<3A><><BC><9F>ѺW<D1BA><57><BB><92>.{<7B><>D<A7><44><A4><9C><<03><><99>6<8A><36>Ï<D0><C38F>:ZH8<48>UF<55>8%c|@X4<58>7<93><37>v^<5E>k<FA><0C>Ç<>L<B1><02>f_<66>pu<0E>=BnOJ <09><1C><1F><>E<0F><>]<5D><><F1><8E><B7>c<C2><63><A1>q<><16>M<BD>]֫O<D6AB><4F>R<F7>I<1A>&<26><>}\<5C><>3<AE>]ʓ6<CA93>+M<><4D><14>b<D3>e<B5><65>jQ<><51><0C><0C><>oR@<40><>X"<22><><FF><8F>Lŏ<4C>+oBȍwnOHa˛<61><CB9B><8A>=<3D><>-<2D><><A9><F0><A2><E6><02>ĕ<7F>]<5D><><F1>7<D2>}<7D><>O<D3>;<3B><0C><><1D>4<06><<3C><>d<D5><64>oъm;P+<2B>{<16><>^;<3B><><F3><:ӝ<><12>2r<32><72>w<F6>l<>4<9D>q<>{<7B>AL2D<32><44>g<E4>G<ED>C<D7><43>K<10>"5<><35>]C<>#{<7B><><1C>}ÇЃ<C387><D083>A<01>Ɲ<BE><C69D><97>l<EF>$<24><><AE><1E><>?<13>O<B8><4F><E2> <09>
Ty<54><79><F7><A0><AC><18><>/<2F>EGC<06><19>U5D<35>垞* Closing connection
--------------------------------------------
ENDPOINT: /te-invalid
TITLE: Transfer-Encoding: banana
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/te-invalid
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /te-invalid HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Transfer-Encoding: banana
<
{ [5 bytes data]
* Closing connection
hello
--------------------------------------------
ENDPOINT: /te-double
TITLE: Content-Length + Transfer-Encoding
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/te-double
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /te-double HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 5
< Transfer-Encoding: chunked
<
{ [5 bytes data]
* Connection #0 to host 127.0.0.1 left intact
hello
--------------------------------------------
ENDPOINT: /te-bad-chunk
TITLE: Chunked with ZZZ chunk size
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/te-bad-chunk
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /te-bad-chunk HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Transfer-Encoding: chunked
<
* Illegal or missing hexadecimal sequence in chunked-encoding
* Closing connection
--------------------------------------------
ENDPOINT: /proto-garbage
TITLE: 512 random bytes (no HTTP)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/proto-garbage
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /proto-garbage HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Received HTTP/0.9 when not allowed
* Closing connection
--------------------------------------------
ENDPOINT: /proto-empty
TITLE: Empty response (0 bytes)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/proto-empty
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /proto-empty HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Empty reply from server
* Closing connection
--------------------------------------------
ENDPOINT: /proto-half
TITLE: HTTP/9.9 version
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/proto-half
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /proto-half HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Unsupported HTTP version in response
* Closing connection
--------------------------------------------
ENDPOINT: /proto-no-headers
TITLE: Status line + body, no headers
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/proto-no-headers
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /proto-no-headers HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
* no chunk, no close, no size. Assume close to signal end
<
{ [5 bytes data]
* Closing connection
hello
--------------------------------------------
ENDPOINT: /proto-just-newlines
TITLE: Response is just CRLF
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/proto-just-newlines
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /proto-just-newlines HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Received HTTP/0.9 when not allowed
* Closing connection
--------------------------------------------
ENDPOINT: /enc-utf16
TITLE: Body is UTF-16, header says UTF-8
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/enc-utf16
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /enc-utf16 HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Content-Type: text/html; charset=utf-8
<
{ [12 bytes data]
* Closing connection
<0A><>S0<53>0k0a0o0
--------------------------------------------
ENDPOINT: /enc-gzip-lie
TITLE: Content-Encoding: gzip (plaintext body)
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/enc-gzip-lie
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /enc-gzip-lie HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Content-Encoding: gzip
<
{ [30 bytes data]
* Closing connection
this is definitely not gzipped
--------------------------------------------
ENDPOINT: /redir-self
TITLE: 301 redirect loop
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/redir-self
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-self HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 301 Moved Permanently
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-self
<
* Closing connection
--------------------------------------------
ENDPOINT: /redir-garbage
TITLE: 301 garbage Location URL
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/redir-garbage
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-garbage HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 301 Moved
* Nul byte in header
* Closing connection
--------------------------------------------
ENDPOINT: /redir-chain
TITLE: 302 infinite unique redirect chain
COMMAND: curl -sv --max-time 5 -L --max-redirs 5 http://127.0.0.1:60666/redir-chain
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-chain HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Found
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-chain?n=1
<
* Closing connection
* Issue another request to this URL: 'http://127.0.0.1:60666/redir-chain?n=1'
* Hostname 127.0.0.1 was found in DNS cache
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-chain?n=1 HTTP/1.0
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Found
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-chain?n=2
<
* Closing connection
* Issue another request to this URL: 'http://127.0.0.1:60666/redir-chain?n=2'
* Hostname 127.0.0.1 was found in DNS cache
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-chain?n=2 HTTP/1.0
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Found
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-chain?n=3
<
* Closing connection
* Issue another request to this URL: 'http://127.0.0.1:60666/redir-chain?n=3'
* Hostname 127.0.0.1 was found in DNS cache
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-chain?n=3 HTTP/1.0
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Found
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-chain?n=4
<
* Closing connection
* Issue another request to this URL: 'http://127.0.0.1:60666/redir-chain?n=4'
* Hostname 127.0.0.1 was found in DNS cache
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-chain?n=4 HTTP/1.0
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Found
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-chain?n=5
<
* Closing connection
* Issue another request to this URL: 'http://127.0.0.1:60666/redir-chain?n=5'
* Hostname 127.0.0.1 was found in DNS cache
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /redir-chain?n=5 HTTP/1.0
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 302 Found
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:29 GMT
< Location: /redir-chain?n=6
<
* Closing connection
* Maximum (5) redirects followed
--------------------------------------------
ENDPOINT: /slow-headers
TITLE: Slowloris: 1 byte per 0.5s headers
COMMAND: curl -sv --max-time 5 --max-time 2 http://127.0.0.1:60666/slow-headers
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /slow-headers HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* Operation timed out after 2001 milliseconds with 0 bytes received
* Closing connection
--------------------------------------------
ENDPOINT: /slow-body
TITLE: Body: 1 byte per second (a-z)
COMMAND: curl -sv --max-time 5 --max-time 2 http://127.0.0.1:60666/slow-body
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /slow-body HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:31 GMT
< Content-Length: 26
< Content-Type: text/plain
<
{ [1 bytes data]
* Operation timed out after 2001 milliseconds with 2 out of 26 bytes received
* Closing connection
ab
--------------------------------------------
ENDPOINT: /html-utf16
TITLE: Full HTML page encoded as UTF-16LE
COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/html-utf16
* Trying 127.0.0.1:60666...
* Connected to 127.0.0.1 (127.0.0.1) port 60666
> GET /html-utf16 HTTP/1.1
> Host: 127.0.0.1:60666
> User-Agent: curl/8.5.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.12.3
< Date: Sat, 14 Feb 2026 04:43:33 GMT
< Content-Type: text/html
<
{ [358 bytes data]
* Closing connection
<html><head></head>
This entire page is UTF-16LE
But the server never declared a charset. Good luck decoding!
</html> -------------------------------------------- ENDPOINT: /html-long-title TITLE: HTML title is 1000 characters COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/html-long-title * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /html-long-title HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:33 GMT < Content-Type: text/html < { [2063 bytes data] * Closing connection <html><head></head>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</html> -------------------------------------------- ENDPOINT: /html-multiline-title TITLE: HTML title with embedded newlines COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/html-multiline-title * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /html-multiline-title HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < { [117 bytes data] * Closing connection <html><head></head>Check your tab title
</html> -------------------------------------------- ENDPOINT: /html-irc-title TITLE: Title with CRLF IRC injection COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/html-irc-title * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /html-irc-title HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < { [153 bytes data] * Closing connection <html><head></head>IRC Injection via HTML title
</html> -------------------------------------------- ENDPOINT: /html-unicode TITLE: Random unicode title and body COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/html-unicode * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /html-unicode HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html; charset=utf-8 < { [3063 bytes data] * Closing connection <html><head></head>ᯁᤜᆕዙ⩳⹈⮁Ⓞ➢ᲁኑᘉም◰ⰣῩዼẚᇃⅆ␔⊤ᗾ△⧷ᄚᾮᇭ⇎ᇒᛊ᠐☙ᬨ⋚⨰ṭⅣᩕ⌸ᐂឲ⿉ᾔ╎⛒ᣱ⤿⥤ᤛ᠐ᮬᲲ᪇ာ⃩ᵏⵃᱛℏᎩ↝ᑓኴ⋠ቋ❻⬢⟝ᾧἈᩲ፲ᒓᰋᓊᅕᗩⶥჃᰞዋᢎ⥑⁏၈⵰⿌᷑┲ⓔ☁ዩⲭ⓱ᤚᒗ⹘ᘏ❾⺩Ⓟᔥ⋳⌑ᘜ៥ᄏ⚑ẩ⊐⤑⬭⮎ጯᥕᐄ⮲ⴲᵣ⦡ᰇ⭅ᘉ⟴␛℀⏞⊽ᄮⷠ⸷ᴣⲱ᱒⧆⩠ᵼᬓᑌႡ⏥ᅏ↠⃯✤᮵ᓢቤႠⵁᯘᚅ⟱⟂⼿⁒Ⲍᦶ╰᩠Ḽ⺺ίⰎ⫹ᩉᡂ⯒ᕬ᱅▕⨄ᖾ῍⌋ሦለጵ⼛↪ᄩ♹ᕝᔽ‴♈ረ⮎Აệ⇛Ღ᷁●ᢡᷫោ├ၟ⚯Ⱪ⌣ᱯႮᏓ᷍ᙶᇜᥰᕣᅄ⟇⪐ᦽ⇄Ὅᜯᥕ♪ឦ⪰⩽ᾎᔚጇ⪒⛒⨖ὸᛪ⽼␡◔Ᵽ⮉⪦⩩ὁᯠⶱេ⎦᭰⸙⧺⨭❝❸ၨ᭟ᨼ╗⋏ᥕ⾉⁰ᝇᮓᱏⱙᒜ⑁⇝ᖠ╈⸕⋮ᓑ∓ፔᇏᱞⵚᓻ✹ᾖᘁ⢂ᇶẳ␁Ἒ⨀ᗵ⊡⮶ᗕῇቫ⧥⓹ᴆᄃᒼ☔⪱⦾ႍᩐ⅌⮧ᐓ⪧≏ᱚᚈᎨ⭝ᦧⓝ☕ᡘᨨ⢂␏ုⳀὟ≂ံ❰╹ᴦሰℨᔀ᥈⎩ᇧⱨዜᵴጦ᭪Ḳ↺⟡᠙⤊⊧ᶦ⠒ᱱ⌻⻕ᚗក⿴ሙ∮Ⱌ⛟⟹▤⻜⍢Ⅾᱻ⛾ᅠ⸒✶ᱛ⽿⥛ᓽ⢛⥜ἵᑌⲶ⤈ᅐ✸✃⤸ℚ⸕ῤឥ≶ᖓᇭᬶ⁄Ḽ⏔✅᪁ᑲᏙቘ⻢ဢ⍳⊾◺ⅈῒ᳁ᄾ⾆⢣ኑ⑮▤ጞᡃᷣᰛṸថ⓿ᔁ⩽ᕯኩᨸ⢑♆⚱᧥⋔ᾮⷯᜊ⌼ήⳘᡴ≒Ḟᢟᮦ⊢≑⧚ᔮ⤮ၨᩲᵜⷃᚇ⽞ኁ៳ⵘⅭᗄ⃗ḝር┄ⶰ⩼␠᥅ᅗ⩵Ὶᢶᨃẛⴵဖᶗ⢫
</html> -------------------------------------------- ENDPOINT: /html-meta-refresh TITLE: Meta refresh loop (0 second) COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/html-meta-refresh * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /html-meta-refresh HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < { [231 bytes data] * Closing connection <html><head></head>This page reloads every 0 seconds
Your browser tab is now stuck in an infinite reload loop.
</html> -------------------------------------------- ENDPOINT: /ansi-chaos TITLE: ANSI escape code nightmare COMMAND: curl -s --max-time 5 http://127.0.0.1:60666/ansi-chaos | cat -v ^[[2J^[[H^[]0;HACKED BY MALSERV^G^[[?25l^[[11;88H^[[5;31mM-bM-^UM-^T^[[0m^[[47;40H^[[7;33mM-bM-^VM-^R^[[0m^[[16;81H^[[7;37mM-bM-^UM-^W^[[0m^[[21;62H^[[5;31mM-bM-^XM- ^[[0m^[[44;43H^[[7;33mM-bM-^YM- ^[[0m^[[5;35H^[[4;36mM-bM-^UM-^P^[[0m^[[1;8H^[[5;33mM-pM-^_M-^NM--^[[0m^[[31;97H^[[3;37mM-bM-^YM-&^[[0m^[[2;30H^[[4;34mM-bM-^YM-&^[[0m^[[35;73H^[[5;36mM-bM-^YM- ^[[0m^[[19;117H^[[1;32mM-bM-^VM-^R^[[0m^[[8;110H^[[4;33mM-bM-^UM-^W^[[0m^[[28;52H^[[7;32mM-bM-^ZM-!^[[0m^[[41;93H^[[4;33mM-pM-^_M-^CM-^O^[[0m^[[19;94H^[[7;37mM-bM-^YM-#^[[0m^[[31;46H^[[4;33mM-bM-^VM-^H^[[0m^[[23;91H^[[3;37mM-pM-^_M-^RM-^@^[[0m^[[24;112H^[[5;32mM-bM-^ZM-!^[[0m^[[10;107H^[[4;36mM-bM-^XM- ^[[0m^[[32;102H^[[5;31mM-bM-^VM-^R^[[0m^[[36;110H^[[1;36mM-bM-^YM- ^[[0m^[[43;52H^[[7;34mM-pM-^_M-^CM-^O^[[0m^[[37;15H^[[7;37mM-pM-^_M-^PM-^[^[[0m^[[14;34H^[[1;33mM-pM-^_M-^CM-^O^[[0m^[[6;71H^[[4;31mM-bM-^UM-^P^[[0m^[[17;61H^[[4;34mM-bM-^YM- ^[[0m^[[39;65H^[[1;37mM-bM-^XM- ^[[0m^[[16;58H^[[3;37mM-bM-^YM- ^[[0m^[[43;83H^[[5;32mM-bM-^VM-^H^[[0m^[[17;74H^[[7;31mM-bM-^YM-%^[[0m^[[29;29H^[[3;36mM-pM-^_M-^NM--^[[0m^[[47;83H^[[1;31mM-bM-^YM-%^[[0m^[[35;67H^[[3;31mM-bM-^UM-^Q^[[0m^[[41;11H^[[7;34mM-pM-^_M-^PM-^[^[[0m^[[43;38H^[[4;32mM-bM-^YM-#^[[0m^[[46;64H^[[7;35mM-bM-^YM- ^[[0m^[[38;62H^[[4;37mM-pM-^_M-^TM-%^[[0m^[[32;74H^[[4;35mM-bM-^UM-^Q^[[0m^[[9;101H^[[4;34mM-bM-^VM-^S^[[0m^[[42;17H^[[5;36mM-bM-^UM-^T^[[0m^[[24;24H^[[4;33mM-pM-^_M-^RM-^@^[[0m^[[11;26H^[[7;35mM-pM-^_M-^PM-^[^[[0m^[[17;50H^[[3;32mM-bM-^VM-^S^[[0m^[[3;113H^[[4;35mM-pM-^_M-^TM-%^[[0m^[[37;60H^[[1;37mM-pM-^_M-^NM--^[[0m^[[47;114H^[[5;34mM-bM-^YM-&^[[0m^[[18;81H^[[4;33mM-pM-^_M-^RM-^@^[[0m^[[3;32H^[[5;33mM-bM-^UM-^]^[[0m^[[16;82H^[[1;32mM-bM-^UM-^Z^[[0m^[[49;77H^[[5;36mM-bM-^YM-%^[[0m^[[25;23H^[[1;33mM-pM-^_M-^NM--^[[0m^[[10;23H^[[7;32mM-pM-^_M-^CM-^O^[[0m^[[50;108H^[[5;31mM-pM-^_M-^NM--^[[0m^[[31;83H^[[1;33mM-bM-^YM-%^[[0m^[[8;92H^[[5;36mM-bM-^UM-^P^[[0m^[[25;34H^[[5;35mM-bM-^VM-^Q^[[0m^[[24;69H^[[1;35mM-pM-^_M-^CM-^O^[[0m^[[31;26H^[[1;32mM-bM-^VM-^S^[[0m^[[34;34H^[[1;32mM-bM-^UM-^T^[[0m^[[8;111H^[[7;36mM-bM-^XM- ^[[0m^[[28;77H^[[5;32mM-bM-^YM-#^[[0m^[[2;13H^[[7;32mM-bM-^ZM-!^[[0m^[[49;32H^[[4;37mM-bM-^VM-^Q^[[0m^[[10;59H^[[3;32mM-pM-^_M-^PM-^[^[[0m^[[15;86H^[[7;33mM-bM-^YM-%^[[0m^[[25;67H^[[4;36mM-pM-^_M-^PM-^[^[[0m^[[50;61H^[[5;35mM-bM-^VM-^Q^[[0m^[[49;115H^[[5;34mM-bM-^YM- ^[[0m^[[44;1H^[[5;37mM-bM-^UM-^Z^[[0m^[[5;116H^[[4;34mM-bM-^VM-^S^[[0m^[[26;16H^[[4;31mM-pM-^_M-^RM-^@^[[0m^[[30;93H^[[7;36mM-bM-^YM-&^[[0m^[[34;89H^[[3;32mM-bM-^UM-^Q^[[0m^[[24;49H^[[4;37mM-bM-^UM-^T^[[0m^[[16;100H^[[7;37mM-bM-^UM-^W^[[0m^[[23;19H^[[7;32mM-bM-^UM-^T^[[0m^[[42;55H^[[7;31mM-bM-^YM-#^[[0m^[[6;102H^[[7;36mM-bM-^UM-^W^[[0m^[[49;89H^[[7;37mM-pM-^_M-^PM-^[^[[0m^[[5;51H^[[7;32mM-bM-^VM-^H^[[0m^[[10;20H^[[1;5;31mM-bM-^VM-^QM-bM-^VM-^RM-bM-^VM-^SM-bM-^VM-^H YOUR TERMINAL IS MINE NOW M-bM-^VM-^HM-bM-^VM-^SM-bM-^VM-^RM-bM-^VM-^Q^[[0m^[[12;20H^[[1;5;35mM-bM-^VM-^QM-bM-^VM-^RM-bM-^VM-^SM-bM-^VM-^H RESISTANCE IS FUTILE M-bM-^VM-^HM-bM-^VM-^SM-bM-^VM-^RM-bM-^VM-^Q^[[0m^[[14;20H^[[1;5;32mM-bM-^VM-^QM-bM-^VM-^RM-bM-^VM-^SM-bM-^VM-^H CURLING WAS A MISTAKE M-bM-^VM-^HM-bM-^VM-^SM-bM-^VM-^RM-bM-^VM-^Q^[[0m^[[16;20H^[[1;33m^[[16;10H^[[34mM-bM-^VM-^P^[[31mM-bM-^VM-^Z^[[37mM-bM-^VM-^P^[[33mM-bM-^VM-^J^[[33mM-bM-^VM-^S^[[37mM-bM-^VM-^G^[[31mM-bM-^VM-^T^[[32mM-bM-^VM-^]^[[37mM-bM-^VM-^]^[[32mM-bM-^VM-^Y^[[32mM-bM-^VM-^W^[[33mM-bM-^VM-^K^[[33mM-bM-^VM-^S^[[33mM-bM-^VM-^J^[[31mM-bM-^VM-^M^[[33mM-bM-^VM-^X^[[34mM-bM-^VM-^A^[[31mM-bM-^VM-^_^[[37mM-bM-^VM-^O^[[37mM-bM-^VM-^C^[[36mM-bM-^VM-^N^[[34mM-bM-^VM-^Z^[[37mM-bM-^VM-^Q^[[36mM-bM-^VM-^X^[[35mM-bM-^VM-^[^[[35mM-bM-^VM-^Q^[[37mM-bM-^VM-^I^[[34mM-bM-^VM-^Y^[[31mM-bM-^VM-^L^[[31mM-bM-^VM-^A^[[33mM-bM-^VM-^R^[[35mM-bM-^VM-^V^[[33mM-bM-^VM-^L^[[35mM-bM-^VM-^O^[[35mM-bM-^VM-^W^[[34mM-bM-^VM-^A^[[33mM-bM-^VM-^^^[[37mM-bM-^VM-^D^[[32mM-bM-^VM-^Q^[[31mM-bM-^VM-^D^[[33mM-bM-^VM-^P^[[31mM-bM-^VM-^O^[[37mM-bM-^VM-^K^[[37mM-bM-^VM-^T^[[32mM-bM-^VM-^E^[[35mM-bM-^VM-^W^[[31mM-bM-^VM-^B^[[37mM-bM-^VM-^Z^[[37mM-bM-^VM-^V^[[31mM-bM-^VM-^[^[[35mM-bM-^VM-^K^[[36mM-bM-^VM-^I^[[35mM-bM-^VM-^^^[[32mM-bM-^VM-^W^[[36mM-bM-^VM-^X^[[36mM-bM-^VM-^F^[[36mM-bM-^VM-^V^[[34mM-bM-^VM-^Z^[[31mM-bM-^VM-^D^[[35mM-bM-^VM-^W^[[17;10H^[[34mM-bM-^VM-^E^[[33mM-bM-^VM-^L^[[34mM-bM-^VM-^_^[[36mM-bM-^VM-^Q^[[37mM-bM-^VM-^S^[[37mM-bM-^VM-^D^[[37mM-bM-^VM-^G^[[33mM-bM-^VM-^X^[[32mM-bM-^VM-^]^[[32mM-bM-^VM-^E^[[36mM-bM-^VM-^D^[[35mM-bM-^VM-^A^[[36mM-bM-^VM-^F^[[31mM-bM-^VM-^W^[[32mM-bM-^VM-^]^[[31mM-bM-^VM-^L^[[37mM-bM-^VM-^[^[[34mM-bM-^VM-^W^[[32mM-bM-^VM-^W^[[31mM-bM-^VM-^E^[[36mM-bM-^VM-^E^[[31mM-bM-^VM-^L^[[36mM-bM-^VM-^^^[[37mM-bM-^VM-^L^[[35mM-bM-^VM-^J^[[33mM-bM-^VM-^@^[[32mM-bM-^VM-^J^[[33mM-bM-^VM-^C^[[37mM-bM-^VM-^X^[[31mM-bM-^VM-^Z^[[37mM-bM-^VM-^X^[[32mM-bM-^VM-^E^[[34mM-bM-^VM-^T^[[35mM-bM-^VM-^]^[[34mM-bM-^VM-^\^[[36mM-bM-^VM-^B^[[33mM-bM-^VM-^[^[[31mM-bM-^VM-^S^[[37mM-bM-^VM-^^^[[31mM-bM-^VM-^_^[[36mM-bM-^VM-^C^[[36mM-bM-^VM-^Z^[[36mM-bM-^VM-^F^[[35mM-bM-^VM-^M^[[34mM-bM-^VM-^\^[[36mM-bM-^VM-^W^[[34mM-bM-^VM-^M^[[34mM-bM-^VM-^M^[[32mM-bM-^VM-^I^[[31mM-bM-^VM-^Z^[[33mM-bM-^VM-^J^[[37mM-bM-^VM-^K^[[33mM-bM-^VM-^W^[[34mM-bM-^VM-^O^[[31mM-bM-^VM-^C^[[32mM-bM-^VM-^Q^[[35mM-bM-^VM-^F^[[36mM-bM-^VM-^J^[[37mM-bM-^VM-^Z^[[32mM-bM-^VM-^N^[[18;10H^[[32mM-bM-^VM-^E^[[34mM-bM-^VM-^X^[[32mM-bM-^VM-^N^[[35mM-bM-^VM-^R^[[36mM-bM-^VM-^S^[[35mM-bM-^VM-^J^[[31mM-bM-^VM-^]^[[31mM-bM-^VM-^C^[[36mM-bM-^VM-^L^[[32mM-bM-^VM-^_^[[34mM-bM-^VM-^H^[[35mM-bM-^VM-^U^[[37mM-bM-^VM-^V^[[32mM-bM-^VM-^R^[[32mM-bM-^VM-^U^[[33mM-bM-^VM-^]^[[36mM-bM-^VM-^V^[[35mM-bM-^VM-^_^[[35mM-bM-^VM-^P^[[32mM-bM-^VM-^K^[[36mM-bM-^VM-^_^[[37mM-bM-^VM-^I^[[37mM-bM-^VM-^@^[[34mM-bM-^VM-^Z^[[32mM-bM-^VM-^[^[[36mM-bM-^VM-^Z^[[32mM-bM-^VM-^F^[[34mM-bM-^VM-^P^[[35mM-bM-^VM-^S^[[34mM-bM-^VM-^K^[[33mM-bM-^VM-^Y^[[34mM-bM-^VM-^X^[[34mM-bM-^VM-^@^[[36mM-bM-^VM-^H^[[36mM-bM-^VM-^B^[[32mM-bM-^VM-^I^[[31mM-bM-^VM-^G^[[36mM-bM-^VM-^L^[[34mM-bM-^VM-^T^[[37mM-bM-^VM-^Q^[[33mM-bM-^VM-^\^[[33mM-bM-^VM-^O^[[37mM-bM-^VM-^]^[[34mM-bM-^VM-^O^[[36mM-bM-^VM-^P^[[31mM-bM-^VM-^Z^[[32mM-bM-^VM-^T^[[35mM-bM-^VM-^\^[[32mM-bM-^VM-^Q^[[31mM-bM-^VM-^]^[[35mM-bM-^VM-^\^[[36mM-bM-^VM-^V^[[37mM-bM-^VM-^R^[[34mM-bM-^VM-^M^[[37mM-bM-^VM-^G^[[34mM-bM-^VM-^W^[[32mM-bM-^VM-^Z^[[34mM-bM-^VM-^I^[[35mM-bM-^VM-^V^[[33mM-bM-^VM-^\^[[19;10H^[[31mM-bM-^VM-^Y^[[36mM-bM-^VM-^^^[[34mM-bM-^VM-^D^[[32mM-bM-^VM-^D^[[35mM-bM-^VM-^N^[[33mM-bM-^VM-^H^[[31mM-bM-^VM-^S^[[31mM-bM-^VM-^S^[[33mM-bM-^VM-^G^[[34mM-bM-^VM-^_^[[34mM-bM-^VM-^E^[[33mM-bM-^VM-^X^[[33mM-bM-^VM-^D^[[37mM-bM-^VM-^R^[[35mM-bM-^VM-^Z^[[31mM-bM-^VM-^J^[[36mM-bM-^VM-^R^[[36mM-bM-^VM-^G^[[33mM-bM-^VM-^N^[[35mM-bM-^VM-^Q^[[33mM-bM-^VM-^J^[[36mM-bM-^VM-^C^[[31mM-bM-^VM-^Q^[[32mM-bM-^VM-^P^[[36mM-bM-^VM-^K^[[35mM-bM-^VM-^Y^[[34mM-bM-^VM-^T^[[34mM-bM-^VM-^Y^[[31mM-bM-^VM-^Z^[[36mM-bM-^VM-^@^[[37mM-bM-^VM-^\^[[31mM-bM-^VM-^H^[[32mM-bM-^VM-^D^[[32mM-bM-^VM-^R^[[35mM-bM-^VM-^L^[[35mM-bM-^VM-^L^[[34mM-bM-^VM-^Z^[[37mM-bM-^VM-^Y^[[33mM-bM-^VM-^U^[[32mM-bM-^VM-^C^[[36mM-bM-^VM-^R^[[36mM-bM-^VM-^B^[[33mM-bM-^VM-^W^[[36mM-bM-^VM-^F^[[32mM-bM-^VM-^N^[[32mM-bM-^VM-^[^[[35mM-bM-^VM-^S^[[36mM-bM-^VM-^]^[[37mM-bM-^VM-^^^[[32mM-bM-^VM-^J^[[35mM-bM-^VM-^S^[[36mM-bM-^VM-^K^[[31mM-bM-^VM-^E^[[33mM-bM-^VM-^C^[[31mM-bM-^VM-^M^[[33mM-bM-^VM-^F^[[36mM-bM-^VM-^D^[[32mM-bM-^VM-^F^[[31mM-bM-^VM-^I^[[36mM-bM-^VM-^J^[[20;10H^[[31mM-bM-^VM-^F^[[34mM-bM-^VM-^O^[[31mM-bM-^VM-^G^[[34mM-bM-^VM-^S^[[32mM-bM-^VM-^R^[[31mM-bM-^VM-^[^[[31mM-bM-^VM-^F^[[37mM-bM-^VM-^]^[[37mM-bM-^VM-^B^[[37mM-bM-^VM-^L^[[37mM-bM-^VM-^R^[[32mM-bM-^VM-^D^[[35mM-bM-^VM-^O^[[33mM-bM-^VM-^[^[[35mM-bM-^VM-^Q^[[31mM-bM-^VM-^K^[[31mM-bM-^VM-^B^[[37mM-bM-^VM-^J^[[32mM-bM-^VM-^S^[[37mM-bM-^VM-^L^[[33mM-bM-^VM-^_^[[37mM-bM-^VM-^N^[[36mM-bM-^VM-^Q^[[34mM-bM-^VM-^N^[[35mM-bM-^VM-^C^[[35mM-bM-^VM-^\^[[31mM-bM-^VM-^S^[[33mM-bM-^VM-^I^[[37mM-bM-^VM-^O^[[36mM-bM-^VM-^N^[[35mM-bM-^VM-^C^[[31mM-bM-^VM-^^^[[35mM-bM-^VM-^R^[[32mM-bM-^VM-^C^[[35mM-bM-^VM-^E^[[31mM-bM-^VM-^C^[[31mM-bM-^VM-^\^[[32mM-bM-^VM-^P^[[35mM-bM-^VM-^N^[[32mM-bM-^VM-^B^[[36mM-bM-^VM-^O^[[34mM-bM-^VM-^F^[[35mM-bM-^VM-^N^[[37mM-bM-^VM-^@^[[33mM-bM-^VM-^[^[[34mM-bM-^VM-^Z^[[35mM-bM-^VM-^G^[[36mM-bM-^VM-^]^[[35mM-bM-^VM-^\^[[37mM-bM-^VM-^G^[[34mM-bM-^VM-^[^[[33mM-bM-^VM-^T^[[36mM-bM-^VM-^ -------------------------------------------- ENDPOINT: /net-gzip-bomb TITLE: Gzip bomb (~10KB to 10MB) COMMAND: curl -sv --max-time 5 -o /dev/null http://127.0.0.1:60666/net-gzip-bomb * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /net-gzip-bomb HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: application/octet-stream < Content-Encoding: gzip < Content-Length: 9750 < { [9750 bytes data] * Closing connection -------------------------------------------- ENDPOINT: /net-event-flood TITLE: SSE event flood (infinite) COMMAND: curl -sv --max-time 5 --max-time 1 http://127.0.0.1:60666/net-event-flood * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /net-event-flood HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/event-stream < Cache-Control: no-cache * HTTP/1.0 connection set to keep alive < Connection: keep-alive < { [2149 bytes data] id: 0 event: flood data: {"seq":0,"time":1771044214.038684,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 1 event: flood data: {"seq":1,"time":1771044214.0386956,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 2 event: flood data: {"seq":2,"time":1771044214.0387022,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 3 event: flood data: {"seq":3,"time":1771044214.0387075,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 4 event: flood data: {"seq":4,"time":1771044214.038712,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 5 event: flood data: {"seq":5,"time":1771044214.0387173,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 6 event: flood data: {"seq":6,"time":1771044214.0387225,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} id: 7 event: flood data: {"seq":7,"time":1771044214.0387278,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -------------------------------------------- ENDPOINT: /net-mime-sniff TITLE: MIME type confusion (JS as image/jpeg) COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/net-mime-sniff * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /net-mime-sniff HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < { [464 bytes data] * Closing connection <html><head></head>MIME Sniffing Test
This page includes a <script> tag pointing to /net-mime-sniff?payload=1,
which serves JavaScript with Content-Type: image/jpeg.
If your browser MIME-sniffs, the JS will execute and you'll see an alert.
<script src="/net-mime-sniff?payload=1"></script> </html> -------------------------------------------- ENDPOINT: /net-cache-poison TITLE: Contradicting cache headers COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/net-cache-poison * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /net-cache-poison HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < Cache-Control: no-cache, max-age=999999, must-revalidate, public, private, no-store, immutable < Expires: Thu, 01 Jan 1970 00:00:00 GMT < Pragma: no-cache < Last-Modified: Sun, 01 Jan 2090 00:00:00 GMT < ETag: "*" < Vary: * < Age: 999999999 < { [323 bytes data] * Closing connection <html>Which cache directive wins?
Every cache header contradicts every other. Good luck, proxy.
no-cache + max-age=999999 + must-revalidate + public + private + no-store + immutable
Expires in the past, Last-Modified in the future, Age is 31 years, Vary is wildcard, ETag is *
</html> -------------------------------------------- ENDPOINT: /net-hsts-bomb TITLE: HSTS with insane max-age COMMAND: curl -sv --max-time 5 http://127.0.0.1:60666/net-hsts-bomb * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /net-hsts-bomb HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < Strict-Transport-Security: max-age=999999999; includeSubDomains; preload < { [253 bytes data] * Closing connection <html>HSTS Bomb
Your browser now thinks this site requires HTTPS for 31 years.
This header also applies to ALL subdomains and requests preload list inclusion.
To undo in Chrome: chrome://net-internals/#hsts
</html> -------------------------------------------- ENDPOINT: /misc-ipv4 TITLE: Shows your connecting IPv4 address COMMAND: curl -sv --max-time 5 -4 http://127.0.0.1:60666/misc-ipv4 * Trying 127.0.0.1:60666... * Connected to 127.0.0.1 (127.0.0.1) port 60666 > GET /misc-ipv4 HTTP/1.1 > Host: 127.0.0.1:60666 > User-Agent: curl/8.5.0 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: BaseHTTP/0.6 Python/3.12.3 < Date: Sat, 14 Feb 2026 04:43:34 GMT < Content-Type: text/html < { [188 bytes data] * Closing connection <html><head></head>