Files
badtests/results_python.txt
2026-02-13 23:50:20 -05:00

92 KiB
Raw Permalink Blame History

Testing badtests.py at http://127.0.0.1:60666 Endpoints: 65 Libraries: urllib.request, http.client, requests, aiohttp -------------------------------------------- ENDPOINT: /cl-word TITLE: Content-Length: banana [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': 'banana'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', 'banana')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': 'banana'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: banana'\n ^", url='http://127.0.0.1:60666/cl-word' -------------------------------------------- ENDPOINT: /cl-empty TITLE: Content-Length: (empty) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': ''} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': ''} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Empty Content-Length:\n\n b''\n ^", url='http://127.0.0.1:60666/cl-empty' -------------------------------------------- ENDPOINT: /cl-negative TITLE: Content-Length: -99999999999999999 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '-99999999999999999'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '-99999999999999999')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '-99999999999999999'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: -99999999999999999'\n ^", url='http://127.0.0.1:60666/cl-negative' -------------------------------------------- ENDPOINT: /cl-huge TITLE: Content-Length: 99999999999999999 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '99999999999999999'} Body: b'tiny' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '99999999999999999')] Body: b'tiny' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '99999999999999999'} Body: b'tiny' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '99999999999999999'} Body: b'tiny' -------------------------------------------- ENDPOINT: /cl-zero TITLE: Content-Length: 0 (body sent) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '0'} Body: b'' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '0')] Body: b'' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '0'} Body: b'' [aiohttp] ERROR: ClientResponseError: 400, message="Data after `Connection: close`:\n\n b'surprise!'\n ^", url='http://127.0.0.1:60666/cl-zero' -------------------------------------------- ENDPOINT: /cl-float TITLE: Content-Length: 3.14159 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '3.14159'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '3.14159')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '3.14159'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: 3.14159'\n ^", url='http://127.0.0.1:60666/cl-float' -------------------------------------------- ENDPOINT: /cl-hex TITLE: Content-Length: 0xDEAD [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '0xDEAD'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '0xDEAD')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '0xDEAD'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: 0xDEAD'\n ^", url='http://127.0.0.1:60666/cl-hex' -------------------------------------------- ENDPOINT: /cl-null TITLE: Content-Length: 5\x00 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '5\x00'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '5\x00')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '5\x00'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: 5'\n ^", url='http://127.0.0.1:60666/cl-null' -------------------------------------------- ENDPOINT: /cl-negative-one TITLE: Content-Length: -1 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '-1'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '-1')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '-1'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: -1'\n ^", url='http://127.0.0.1:60666/cl-negative-one' -------------------------------------------- ENDPOINT: /cl-nan TITLE: Content-Length: NaN [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': 'NaN'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', 'NaN')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': 'NaN'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: NaN'\n ^", url='http://127.0.0.1:60666/cl-nan' -------------------------------------------- ENDPOINT: /cl-inf TITLE: Content-Length: Infinity [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': 'Infinity'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', 'Infinity')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': 'Infinity'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid character in Content-Length:\n\n b'Content-Length: Infinity'\n ^", url='http://127.0.0.1:60666/cl-inf' -------------------------------------------- ENDPOINT: /cl-mismatch TITLE: Content-Length: 1 (body 30 bytes) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '1'} Body: b't' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Length', '1')] Body: b't' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Length': '1'} Body: b't' [aiohttp] ERROR: ClientResponseError: 400, message="Data after `Connection: close`:\n\n b'this is way more than one byte'\n ^", url='http://127.0.0.1:60666/cl-mismatch' -------------------------------------------- ENDPOINT: /ct-garbage TITLE: Content-Type: 200 random chars [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': '?Xkar]/`A\tB40oLA%P:?'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Type', 'Rr>IQL OXeaw?Sr>F$&&hF2My5S/a?')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'pBT\t"N7/yCP7w\\[zT_QEJ2,NFAIPRBy7XNVCOGfk RW/MEanr$B4KDJ da;.kor2dS;;OSTqVWkM>D%;S$Xq\\x0cWsNcV0\\\'EhTN6FF:Vg>HDKa,bXy8AT\\\'R+eH2`-HaZU?Swk[!7NwT4tnw7/#\\r5s,Rb;,-1quzo5e8(>1E-:IP4Y2o=b^IqJKX\'\n ^', url='http://127.0.0.1:60666/ct-garbage' -------------------------------------------- ENDPOINT: /ct-multi TITLE: Content-Type: 5 MIME types [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/html, application/json, image/png, text/xml, application/octet-stream'} Body: b'what am i?' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Type', 'text/html, application/json, image/png, text/xml, application/octet-stream')] Body: b'what am i?' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/html, application/json, image/png, text/xml, application/octet-stream'} Body: b'what am i?' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/html, application/json, image/png, text/xml, application/octet-stream'} Body: b'what am i?' -------------------------------------------- ENDPOINT: /ct-empty TITLE: Content-Type: (empty) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': ''} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Type', '')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': ''} Body: b'hello' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': ''} Body: b'hello' -------------------------------------------- ENDPOINT: /ct-null TITLE: Content-Type: text/\x00html [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/\x00html'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Type', 'text/\x00html')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/\x00html'} Body: b'hello' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/\x00html'} Body: b'hello' -------------------------------------------- ENDPOINT: /ct-emoji TITLE: Content-Type: emoji [urllib.request] Status: 200 Headers: {'Content-Type': 'ð\x9f\x92\x80/ð\x9f\x94¥', 'Content-Length': '5'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Content-Type', 'ð\x9f\x92\x80/ð\x9f\x94¥'), ('Content-Length', '5')] Body: b'hello' [requests] Status: 200 Headers: {'Content-Type': 'ð\x9f\x92\x80/ð\x9f\x94¥', 'Content-Length': '5'} Body: b'hello' [aiohttp] Status: 200 Headers: {'Content-Type': '💀/🔥', 'Content-Length': '5'} Body: b'hello' -------------------------------------------- ENDPOINT: /ct-mega TITLE: Content-Type: 10KB long [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... (10106 chars total) Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Type', 'text/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... (10112 chars total) Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... (10106 chars total) Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message='Got more than 8190 bytes (10005) when reading Header value is too long.', url='http://127.0.0.1:60666/ct-mega' -------------------------------------------- ENDPOINT: /ct-crlf TITLE: Content-Type with CRLF injection [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/html', 'X-Injected': 'true'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 GMT'), ('Content-Type', 'text/html'), ('X-Injected', 'true')] Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/html', 'X-Injected': 'true'} Body: b'hello' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 GMT', 'Content-Type': 'text/html', 'X-Injected': 'true'} Body: b'hello' -------------------------------------------- ENDPOINT: /ct-semicolon TITLE: Content-Type with 50 charsets [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 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=u... (810 chars total) Body: b'hello' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:55 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;char... (816 chars total) Body: b'hello' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 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=u... (810 chars total) Body: b'hello' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:55 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=u... (810 chars total) Body: b'hello' -------------------------------------------- ENDPOINT: /status-neg TITLE: Status: -1 [urllib.request] ERROR: BadStatusLine: HTTP/1.1 -1 BROKEN [http.client] ERROR: BadStatusLine: HTTP/1.1 -1 BROKEN [requests] ERROR: ConnectionError: ('Connection aborted.', BadStatusLine('HTTP/1.1 -1 BROKEN\r\n')) [aiohttp] ERROR: ClientResponseError: 400, message="Invalid status code:\n\n b'HTTP/1.1 -1 BROKEN'\n ^", url='http://127.0.0.1:60666/status-neg' -------------------------------------------- ENDPOINT: /status-zero TITLE: Status: 0 [urllib.request] ERROR: BadStatusLine: HTTP/1.1 0 NOTHING [http.client] ERROR: BadStatusLine: HTTP/1.1 0 NOTHING [requests] ERROR: ConnectionError: ('Connection aborted.', BadStatusLine('HTTP/1.1 0 NOTHING\r\n')) [aiohttp] ERROR: ClientResponseError: 400, message="Invalid status code:\n\n b'HTTP/1.1 0 NOTHING'\n ^", url='http://127.0.0.1:60666/status-zero' -------------------------------------------- ENDPOINT: /status-999 TITLE: Status: 999 [urllib.request] ERROR: HTTPError: HTTP Error 999: [http.client] Status: 999 Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 03:59:56 GMT')] Body: b'hello' [requests] Status: 999 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:56 GMT'} Body: b'hello' [aiohttp] Status: 999 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:56 GMT'} Body: b'hello' -------------------------------------------- ENDPOINT: /status-huge TITLE: Status: 99999 [urllib.request] ERROR: BadStatusLine: HTTP/1.1 99999 WAY TOO BIG [http.client] ERROR: BadStatusLine: HTTP/1.1 99999 WAY TOO BIG [requests] ERROR: ConnectionError: ('Connection aborted.', BadStatusLine('HTTP/1.1 99999 WAY TOO BIG\r\n')) [aiohttp] ERROR: ClientResponseError: 400, message="Invalid response status:\n\n b'HTTP/1.1 99999 WAY TOO BIG'\n ^", url='http://127.0.0.1:60666/status-huge' -------------------------------------------- ENDPOINT: /status-word TITLE: Status: BANANA [urllib.request] ERROR: BadStatusLine: HTTP/1.1 BANANA OK [http.client] ERROR: BadStatusLine: HTTP/1.1 BANANA OK [requests] ERROR: ConnectionError: ('Connection aborted.', BadStatusLine('HTTP/1.1 BANANA OK\r\n')) [aiohttp] ERROR: ClientResponseError: 400, message="Invalid status code:\n\n b'HTTP/1.1 BANANA OK'\n ^", url='http://127.0.0.1:60666/status-word' -------------------------------------------- ENDPOINT: /hdr-mega-name TITLE: Header name: 64KB of As [urllib.request] ERROR: LineTooLong: got more than 65536 bytes when reading header line [http.client] ERROR: LineTooLong: got more than 65536 bytes when reading header line [requests] ERROR: ConnectionError: ('Connection aborted.', LineTooLong('got more than 65536 bytes when reading header line')) [aiohttp] ERROR: ClientResponseError: 400, message='Got more than 8190 bytes (65542) when reading Header name is too long.', url='http://127.0.0.1:60666/hdr-mega-name' -------------------------------------------- ENDPOINT: /hdr-mega-val TITLE: Header value: 1MB of Bs [urllib.request] ERROR: LineTooLong: got more than 65536 bytes when reading header line [http.client] ERROR: LineTooLong: got more than 65536 bytes when reading header line [requests] ERROR: ConnectionError: ('Connection aborted.', LineTooLong('got more than 65536 bytes when reading header line')) [aiohttp] ERROR: ClientResponseError: 400, message='Got more than 8190 bytes (65439) when reading Header value is too long.', url='http://127.0.0.1:60666/hdr-mega-val' -------------------------------------------- ENDPOINT: /hdr-1000 TITLE: 1000 headers [urllib.request] ERROR: HTTPException: got more than 100 headers [http.client] ERROR: HTTPException: got more than 100 headers [requests] ERROR: ConnectionError: ('Connection aborted.', HTTPException('got more than 100 headers')) [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:56 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'... (16861 chars total) Body: b'hello' -------------------------------------------- ENDPOINT: /hdr-empty-name TITLE: Header: : empty_name [urllib.request] Status: 200 Headers: {'Content-Length': '5'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Content-Length', '5')] Body: b'hello' [requests] Status: 200 Headers: {'Content-Length': '5'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid header token:\n\n b': empty_name'\n ^", url='http://127.0.0.1:60666/hdr-empty-name' -------------------------------------------- ENDPOINT: /hdr-no-colon TITLE: Header without colon [urllib.request] Status: 200 Headers: {} Body: b'hello' [http.client] Status: 200 OK Headers: [] Body: b'hello' [requests] Status: 200 Headers: {} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid header token:\n\n b'BrokenHeaderNoColon'\n ^", url='http://127.0.0.1:60666/hdr-no-colon' -------------------------------------------- ENDPOINT: /hdr-dup-cl TITLE: Duplicate Content-Length [urllib.request] Status: 200 Headers: {'Content-Length': '5'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Content-Length', '5'), ('Content-Length', '999')] Body: b'hello' [requests] ERROR: InvalidHeader: Content-Length contained multiple unmatching values (5, 999) [aiohttp] ERROR: ClientResponseError: 400, message="Duplicate Content-Length:\n\n b'Content-Length: 999'\n ^", url='http://127.0.0.1:60666/hdr-dup-cl' -------------------------------------------- ENDPOINT: /hdr-null TITLE: Header with null bytes [urllib.request] Status: 200 Headers: {} Body: b'hello' [http.client] Status: 200 OK Headers: [] Body: b'hello' [requests] Status: 200 Headers: {} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid header token:\n\n b'X-'\n ^", url='http://127.0.0.1:60666/hdr-null' -------------------------------------------- ENDPOINT: /hdr-newline TITLE: Header with bare \n [urllib.request] Status: 200 Headers: {'X-Bad': 'line1'} Body: b'hello' [http.client] Status: 200 OK Headers: [('X-Bad', 'line1')] Body: b'hello' [requests] Status: 200 Headers: {'X-Bad': 'line1'} Body: b'hello' [aiohttp] ERROR: ClientResponseError: 400, message="Invalid header token:\n\n b'X-Bad: line1\\nline2'\n ^", url='http://127.0.0.1:60666/hdr-newline' -------------------------------------------- ENDPOINT: /body-endless TITLE: Infinite body stream [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 03:59:56 GMT', 'Content-Type': 'application/octet-stream'} Body: b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'... (8192 bytes total) [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:00:03 GMT'), ('Content-Type', 'application/octet-stream')] Body: b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'... (8192 bytes total) [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:10 GMT', 'Content-Type': 'application/octet-stream'} Body: b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'... (8192 bytes total) [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'application/octet-stream'} Body: b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'... (1024 bytes total) -------------------------------------------- ENDPOINT: /body-none TITLE: Content-Length: 5, no body [urllib.request] Status: 200 Headers: {'Content-Length': '5'} Body: b'' [http.client] Status: 200 OK Headers: [('Content-Length', '5')] Body: b'' [requests] ERROR: ProtocolError: ('Connection broken: IncompleteRead(0 bytes read, 5 more expected)', IncompleteRead(0 bytes read, 5 more expected)) [aiohttp] ERROR: ClientPayloadError: Response payload is not completed: -------------------------------------------- ENDPOINT: /body-binary TITLE: 4KB binary as text/html [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'text/html'} Body: b"r\xac\xab\x1a\xc9\xd1c\xc5\xfc\xc0Uf\xe4\x9c\xcb\x86\xd1N\xfa\xca;w\x0bJ\xa9\xc2\x1c_v\xdc\xaa\x1f\x14\x14\x12vK^\xf1\x05.\xb5J\xee\xe1\xde\xf0f<\xba>\xb24:_+\xb4|c't\x0b\x90\xf8\x05\xd5\x8fJ\x1bO\xf7kF%\x89\x82\xe3\xb6\x8a\xed\x8c\x97\x12\x1b!\x9f\x18\x96\xc5\xebP\xf5\x0bN\x164N\xbe\xd6\xe6m4/\x05\xf9h`!\xfde`\xdd\x9ed\xd3\x9b'q\xa8\xd2\x8f:\xe1\xf9\x8c4c\xd3\xb9\x8bR\x83\xd2\xa5q\xef\xd7U\xfeF\xd0\x80`N\xa7\xde(c\xa6\x1b\x16%Y\x13\xed\xf9\xec?Q}\x9c\x83 P\x9c\x91\x83\xcb\xff?\x9c\x90\xb52\xb4\xf2;#\xbe\x16\x17\xdf\x8aD\xa6\xeb\x08\x0f\xde$9\xf3\x1aX_\xd3\xd8G\xa4\x84x\x03\x80\x80\x16\x12\xc4\x91\x15\xf9Lz\xf0\xef\x03\xb7\x17U\x9a\xa8\x9dq\xa2`kf/\x81\xae\x9c\xf4\xed\xeel\x06\xe0\xfcD\xa6\xf3\xbd\x12/\xbb'\r\xfa\x1f\xec\r\xb1\xbb\x82\x9eL\x8a\xcdS\xf9\xd6S\x15J\xb1\xd7\x1b\x1c\x08\xa8v\x84\xb1\x92\xdd-X\x84^\xd8\x16kI\xf8o\xebK\x92=!v\x8cF~\x80\xbdv\xeb\xeb\xed\x13\xba;w!\x98\xa8\x14\nn\xc5IN\xbf\xc7\xa3\x98!\x03\xce\x05}\x89\xa4\x01\x91\xf7!;#\xd2\x10\x96\xd6\x0e\xefAd-?\x1a\xd6g\xc11\x89c\xbe\xc4\xcc\xa1Z\x0ct\xed[73\x84e\xf8\x91\x8b\t\xcd\xa85UC\xed\x87\xaf\xbd\x80\xd3q\x99\xe3\xa4\xb41\x06a\xf7\x91\xd2\x7f\x92\x143\x15\xa7D\x02\xc2\xcb\xca\xee\x11\x01\x98\x86\xd1\r\xd2\x92\xfb\x07)\xd2\xb4\x8f\xde\xaf\xb6Hv\xae'\x95?s\xf3\x7fg5\xbe\xf7\n\x90\xa2\xc2\x828\xe1\xdb\x0bKM\xb0\xeb\xe2Q\\\x82\xb9U\xd0\xd8d\x00\xd1?\xae\xc7\xdbC2R\x88e'Z\x14m5'\xf8Z\t\x1b\x96\xbe\x87\xafhd\x94~\x84g)\x92\xbd/\xe9f\xa1\xdaYglX&MFu\xd6\xad;p"... (4096 bytes total) [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:00:17 GMT'), ('Content-Type', 'text/html')] Body: b'Y\x88\xc4\x07\x974(\xcc\xd7\x9bZ\xa3\x8a\xff\n\xf3\xb8\xbdMY\x87\xf5\xc4\xc2\x16\x19G\x9a\x1b\x08v$\x829\x8f\xf1\xd8\xa59F=\x86\x06u\xef\x10\xa3\xf8\x13W.\x1c-\x08zm\x99\xa7\xb7\xf4\xfbi\xa5B\xce\x02?\x9e\x9d\xb1"\xd1)\x8a\x8b\x80n\xb8Y\xe6\xa5\x9c\xe0\x10\xe01\x87_\x96\x9f\xfa+\xc5&\x1a\x04*\xb4\xacs(>c\x9aP\xaaioZl,\xa8\xdd\xa6*\x85\xfd\x87\x13F$\xa8Jp\x10\xec\x9f\xaf1\xc6J\x12Y\xe1\'$&}\xf7\x8by +\xab\x08\xa7\xcc\xbeRX)}\xa7\x88\xa6\x87M\xfc{\xd7\xf2X\x10\x94\xc6\xf99\xbb\xc4\x83\x82\xa4\xce{Y\xfa\xa3/\xa0\xa4\xc7B_"\xfe\xab\xc2i\x8e\xd2\x9b\x858\xbd\xd5\x8aC\xebz\x81\xe1\x80BZ\xcbZ\xc3\x9f`(\xec\xb2w\x84a\x10\xa3\xf2_d\tXU"\xef0;N@\x9aEr\xaa\xac\xc8\x8f\xc2\xc9!\xc3.\x1a\x80\xfa\xb33\x1d}\x81\x06i*0\xea8\xbc\xcc\x0e\x8f\r\xeb5\xb8>\x1d\xe2\xfb\xe3\xf9]+\x92f}\x82\x919Wf\xdd\xf1\n\xe2@\xa9~\xea\x0eK\x8e\xd8\x14\xd5\xc2k\xa8O\x88V=Kr\xd4$p\x00\x1a8\xcdV\x88\xa1l\x0eB\xb5MM\xa534\x13I!\xf6\x03>q\xbeF\xf7\xf9\xab\x10\xd6\x99\xbaOx\xc2\xdb\x14j\x14\x01\x9b1\r\xe5\xc4[x\xdc\x05\x02\xcd\xf6]\xa0\x19\xce\xfd\x04\x92\xe5\xc0M\xb1\xd0\xfb\xb3\x01\xa6\xf8G47\x8cA\xa1\x81W\x1dy\xd1\xc2\xa5\x08\x93\x07\xc2\xae\x17\xd3\xc2i\xb2\x89j\x18\x85[)S\xd8\xff\xd0i\xf3k\xef\x9c\xd4\xd70\x9f\xb0\x0bX{\x15%\xcc\xccf\x9e~\xd1\xed5#\xf9\xba\x96C\xe5P\xe2\xf3t\xf6GG\x1f\xba\xd6\xdfQ\xd6\xb2\xf6\x15\xb2\xb9\xb7\x12\xbaQ2\x9a\x1d\xfa\xdd\xbf)5\xba\xee\xd6$\x96\xe5W\x91\x1e\xef\xb9\xe2\xa9D\xd3\x1a\x06\xe7\x8f\x97\x0b\x0b\xe6\xad\xc9\xf3\xbf\x93\xe9\x8dV\xe6\xb0\xdc'... (4096 bytes total) [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'text/html'} Body: b'\xe4\x8f\xd3\xe4C\x9a\xca5)\xa6\xf0\x96\x0e\xf7\x93\xc8\xcf\xd1\t\xb0r\xbd\xca\x85* \xc7ZV\x16\xc2\x1c\x12yf\xf1\xf8g\xa4\x05\xb3\xb0\x8dU\xa5\x99\'\x83\rWA\xea\xf1\xad\xd0\xb1\x9f\x15X-u\xe8\xd9lW\x1an\xed\xd9\x12\xcf\x9d<&l\x8b\xba\x11*@E\xfah\x8c\x99\xf8\xbb\xd3f\xb8\x91$\xb2\r\xa0a\x8fu]\xb1\x8c\x977\x8b\x1c\x9e\xe0\\\x01\x97=\nE\x97\x01\x99\x8c\xf9Z\x0e\xcf\xc6\xc3\x03\xca\x83x)R\x1f/3$*\xcd\x15\xb4\xa5_\n3C\xa3F\xe0\xff\xf6\x05\x1a$G\xa8k\xafEx[}\xe1\xdc\xaf\xa532\xf2\xc3p\xb0\xceN\xdd\xa2\xdd\xd0\x18\xa8\xce*!*\xd4\x9f%x\xf5\x9f\xad\xbf\xef-\xec\xb3;y5\xab\x895\xbcx\xa5F\xbf\xa8\xd1\x19\x15\x99\xb9>Q\xa1\x87R\xd8\xcbc\x195|\x1b\xe9\x93p\x8c\x9c\xc0\xf3kBT5\xafhg\xfc\xb4\xb1\xc4\x17\x07\xdc\xc3\xc7$\x91\xf3\x87\x12\x7fx\xbfz\xbe\'=\xaa\x94\xbc\xd9\r\x95k\x00pF\x9bY\xb1Q\xe1\x1e\x8e\xda\x98\xebjN\x98\xe5HSp@\x9a\x9e\x94\xf5\xac;e\xce\x10#\xc3#J\xd1z\x94\xa7 \x93\x92\xb8\xcb\xa1\xc4\xf1\x8en\x8b\x1b\x00\x82X\x1eJ/6\x96sF\\\x19\xeam".(!:8\xb2\xf3C&\xc0\xe3\x92\tvP\xd9\xc1u\x84g/\x95Kt\xc2\xa8:g\x8f\x9b\x8c\xc1\xaaO=\x03N\x1a\x80\xbf\x11)\x1f\x9b0\x9d_`\x86 \x8c\xd8!M\x1cVY\t\xfc\xc9\x04\t5\xc2c\x11\x15\xb8\xffe\xa1\xe3,Y\xfe\x80\xf5j\xb5\x18\xc5\xb6Y\x07;&\xbfn\xdd@0\xad\x9d\xd2NP\xa8\x88\x94\x17\x9b\x8cv\xdd\x9e5\x1b\xb8K\xa5t\xf5\xfc\x8d\xc2\xbb\xbc\xd54\x03\xa6\x97_\xf3#}\xf1\x1f<\x100\x97$\xd6\xc1\xfc\x14\xd4-6\xb8 p\xb2\xa0\x13\x8b\xf2\xbc\xa6\xba\xa9J0M\x83JAE{:T\xdd\x02N\xa1\x96\xf2\xb2wi\xee'... (4096 bytes total) [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'text/html'} Body: b"\xd7\x1f\x02\x1b\xe2)\xab\xa3k\xe84i\xb9Jc!\x84\xf8\x9c\xe1N\xfdw\xada\x11~\xd6\xc5z\xe6\x11Ab\xb8\xbb1\xe2\xf4\xe7\xf6u`9I\xb0\x1e\x85\x89\xb3\x01\xea\xcb\x01\x8a\xf4\xf8\x83\xf6n\x19-J\x7f\xcf\x8c\xd4\xc5\x90h~\x95\xb5j\x93b[I\x90F\x0e\xec\x01\x038\xb0SA_a\x9b\xee2\x92\xbf\xf9\xe7\x99\xb1\xc1w\xe1\xdb\x13a\xa7j\x84\xd19\xdcz8\xab\xa4c\x97\xad;7|>h\x8a!5\xc2\xea\x81\xdb\xb5\xde`\xee85\xad\xf8\xa4D\x9aA\xe53\x0ej\xf2b\xac\xcd\x9a\xb8f\xd7\xe5\xed\xa9/\xee\xddM>D\xc5\xff\xa1\x00\x9f6\xf2\xfe\xcaf\xf6s\xc6\xff\xb8\xaet\x85_\xbe\x9e\x1bv\xc1Cqq\xcb\x93*@\xbfI\xd8\x9d\xfa\x9anm\x9dg\x08'\xb3^\xb1/\xe6\xb3\xa1\x80*\x96\xc6\xd9q\xdc\xff\x99>1\x97\x03\xb0>\x89\x81A\xbc3^\xd1n>M\xf9\x80\x1a\xa4%\n\t\xf4\x1a\x82\t\xd2A\xf2$n\x83/V\x0e1c\n_6F\x95@\xe0\xb1\x97,\x8e\x9a:\x9a0\x99\x1f\x1dt#j\xbbj\x15KbF\xc2A\xed<\xa72\xa3\xa5\xf9\xe6}|M\xec\xd5\xe6\xc6\xd5+F\xa8\x8d\xe1\x8b\xeb\xdc\xb2\x08\xba\xe3(\xbe9n\x1d\xf9\x07rKLE\x03:T \xf7-\\*\xa9\n\xfeR_]\xaf]\xec\x13\xdc]\xb2\x07\x07\xd7\xcd\xc6E\x81-\x19\x98\x83\xe4\x98\x85\xeaC\x0b\xea\xda\xdeq\xab\xe5\xb0\xda`\xaa\xa6\xdf8z\xf2N\x83\x8a \x02\xa9\xd3\xe5\xcc\xeb(\x9b[\xdcv\x91\r\xb2y5\xd6\x13\x85\xe4\x8d\xe2\x90\xf0w\xd4\xa2\xc5e\x1a\x12\xb2\xe53\n\xa4S\x0e\x0e\xc4O=y\xa6UF\xe6@\x8e\xe1\xfc\x10\xe2\xe4u\x90w\xd1\xaf\x02\xfd1\x1a¾cH[¶Ó#ºÓ~ݑê@”¥óXÒøg!ÇI³gÉ[ÇI‘‡*}Ыôÿ€-­Rñm¦ÓŠ¿qÏ^FJz_”°»Žs3 A›X€ùðM¨±6˜Ë#ž\VèR¥ÚX¥ÿÂüµ/Æ\et>= ¯(Ißw(aŠu—½áx¤g@€»^½zwt<%6‹»™Ç‚»¦mË߈–àG¹À\̰jËrØYÎ"‘~KY–Iq³>çPÑu ©¿š]F«üݙς‚·îDöK¿©ö~×\­i~fÛ Å}Ì+Jc&¢¥÷ùY¤Èúy0–èýRSúyĺ߬·2äþ¡ïÌ6Áj’x%y_–:ƒeº«g–sqܾojž@îɌ¿M¥`i©Àíjš/} IYìAšªäؼé„Í+öˆÐIG$ÙBêwÕæÔn*¥;ÕSþ˜,<œ;ž2)"Ũy{%²È˜tÙ)Ð|äLü䌞\23¢ín„*2§2Nï֝ŠýÓr÷Š·¦ ~k5´¨/¹´†‹¬k_IÉ [requests] ERROR: ConnectionError: ('Connection aborted.', BadStatusLine('ǨµK[DJ¾$5\n')) [aiohttp] ERROR: ClientResponseError: 400, message='Expected HTTP/, RTSP/ or ICE/:\n\n b\'=\\xfe\\x1c\\xb6\\xa6\\xe0\\xc1x\\x95-\\xc1\\xe6\\xfb\\x95m\\xa6\\xfdq\\xc0\\xaa8\\x12j\\xd7\\x99~!\\xae4{\\xe7\\x0c\\xca\\x98\\x9d\\xda@\\x976\\x16\\xc0\\xb3*\\xbe9\\x07\\x9eR:\\n\\x17m\\xcaW\\\\\\x9f\\x80\\xdd\\x1c\\x96d\\xd6\\x8d\\x18W\\xc2\\xec)\\xdd\\xef3g\\xbc\\xc7\\xbc25U\\x9b\\xa1)euG\\xd1X]\\xf6\\xaf\\xd9\\xc8\\x075\\x02\\x15\\x9c\\x9c\\x897N\\x05\\xe8\\xf9\\x11\\xe2\\x83\\x94Z6u\\xcd\\xceH\\xed\\xfe\\xd6\\xc2?=\\x13\\xf3M\\x9d\\xcf4h)\\x17\\x93\\xef\\xf6FTU\\xff\\xdd"\\xe4\\xfa\\x7f\\xee=\\xb3G\\xb8qd\\x84+2\\xb8O0f\\xf6\\xc1\\xee\\xcb\\xab\\x95\\xea\\x17\\xc4\\xf8c\\x14M\\xc2u`\\xac\\x90G\\xe4\\xb56-@}DV\\xf7\\x83\\xa6\\xf8\\x0fi\\x917\\xbap\\x10\\xb9\\x13I7\\t\\xc4\\xe14xS\\x87\\xfbS>\\xc8\\x9aA\\x92r\\xba\\xb0\\x98\\x12\\xaao\\xc4\\xecTG\\xc2\\xb3\\x9a\\xc1\\xb2\\x08\\x97s\\x0e1\\xd6\\xf8\\\\\\xb2\\x7fUil3\\xbf\\xa6\\xc9\\xe5\\x1b\\x17\\x1d04\\x17\\x9d?|S\\x17?\\x047\\x9aQC5\\xf4o\\xc2\\xec\\xaa\\xf2\\xc5\\xf4g\\x02\\x15\\xca\\x1e3>\\x1e8\\xfaW>\\xd6}y\\x95\\xab\'\n ^', url='http://127.0.0.1:60666/proto-garbage' -------------------------------------------- ENDPOINT: /proto-empty TITLE: Empty response (0 bytes) [urllib.request] ERROR: RemoteDisconnected: Remote end closed connection without response [http.client] ERROR: RemoteDisconnected: Remote end closed connection without response [requests] ERROR: ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) [aiohttp] ERROR: ServerDisconnectedError: Server disconnected -------------------------------------------- ENDPOINT: /proto-half TITLE: HTTP/9.9 version [urllib.request] ERROR: UnknownProtocol: HTTP/9.9 [http.client] ERROR: UnknownProtocol: HTTP/9.9 [requests] ERROR: ConnectionError: ('Connection aborted.', UnknownProtocol('HTTP/9.9')) [aiohttp] ERROR: ClientResponseError: 400, message="Invalid HTTP version:\n\n b'HTTP/9.9 200 OK'\n ^", url='http://127.0.0.1:60666/proto-half' -------------------------------------------- ENDPOINT: /proto-no-headers TITLE: Status line + body, no headers [urllib.request] Status: 200 Headers: {} Body: b'hello' [http.client] Status: 200 OK Headers: [] Body: b'hello' [requests] Status: 200 Headers: {} Body: b'hello' [aiohttp] Status: 200 Headers: {} Body: b'hello' -------------------------------------------- ENDPOINT: /proto-just-newlines TITLE: Response is just CRLF [urllib.request] ERROR: BadStatusLine: [http.client] ERROR: BadStatusLine: [requests] ERROR: ConnectionError: ('Connection aborted.', BadStatusLine('\r\n')) [aiohttp] ERROR: ServerDisconnectedError: Server disconnected -------------------------------------------- ENDPOINT: /enc-utf16 TITLE: Body is UTF-16, header says UTF-8 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'text/html; charset=utf-8'} Body: b'\xff\xfeS0\x930k0a0o0' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:00:17 GMT'), ('Content-Type', 'text/html; charset=utf-8')] Body: b'\xff\xfeS0\x930k0a0o0' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'text/html; charset=utf-8'} Body: b'\xff\xfeS0\x930k0a0o0' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Type': 'text/html; charset=utf-8'} Body: b'\xff\xfeS0\x930k0a0o0' -------------------------------------------- ENDPOINT: /enc-gzip-lie TITLE: Content-Encoding: gzip (plaintext) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Encoding': 'gzip'} Body: b'this is definitely not gzipped' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:00:17 GMT'), ('Content-Encoding', 'gzip')] Body: b'this is definitely not gzipped' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Content-Encoding': 'gzip'} Body: b'this is definitely not gzipped' [aiohttp] ERROR: ClientPayloadError: 400, message: Can not decode content-encoding: gzip -------------------------------------------- ENDPOINT: /redir-self TITLE: 301 redirect loop [urllib.request] ERROR: HTTPError: HTTP Error 301: The HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: Moved Permanently [http.client] Status: 301 Moved Permanently Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:00:17 GMT'), ('Location', '/redir-self')] Body: b'' [requests] Status: 301 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Location': '/redir-self'} Body: b'' [aiohttp] Status: 301 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Location': '/redir-self'} Body: b'' -------------------------------------------- ENDPOINT: /redir-garbage TITLE: 301 garbage Location URL [urllib.request] ERROR: HTTPError: HTTP Error 404: Not Found [http.client] Status: 301 Moved Headers: [('Location', '\x00ÿ://ð\x9f\x92\x80:99999/../../etc/passwd'), ('Content-Length', '0')] Body: b'' [requests] ERROR: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 1: invalid start byte [aiohttp] Status: 301 Headers: {'Location': '\x00\udcff://💀:99999/../../etc/passwd', 'Content-Length': '0'} Body: b'' -------------------------------------------- ENDPOINT: /redir-chain TITLE: 302 infinite unique chain [urllib.request] ERROR: HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: Found [http.client] Status: 302 Found Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:00:17 GMT'), ('Location', '/redir-chain?n=1')] Body: b'Hop 0' [requests] Status: 302 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Location': '/redir-chain?n=1'} Body: b'' [aiohttp] Status: 302 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:00:17 GMT', 'Location': '/redir-chain?n=1'} Body: b'Hop 0' -------------------------------------------- ENDPOINT: /slow-headers TITLE: Slowloris: 1 byte per 0.5s [urllib.request] Status: 200 Headers: {'Content-Length': '5'} Body: b'hello' [http.client] Status: 200 OK Headers: [('Content-Length', '5')] Body: b'hello' [requests] Status: 200 Headers: {'Content-Length': '5'} Body: b'hello' [aiohttp] ERROR: TimeoutError: -------------------------------------------- ENDPOINT: /slow-body TITLE: Body: 1 byte per second (a-z) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:01:25 GMT', 'Content-Length': '26', 'Content-Type': 'text/plain'} Body: b'abcdefghijklmnopqrstuvwxyz' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:01:50 GMT'), ('Content-Length', '26'), ('Content-Type', 'text/plain')] Body: b'abcdefghijklmnopqrstuvwxyz' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:15 GMT', 'Content-Length': '26', 'Content-Type': 'text/plain'} Body: b'abcdefghijklmnopqrstuvwxyz' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Length': '26', 'Content-Type': 'text/plain'} Body: b'a' -------------------------------------------- ENDPOINT: /html-utf16 TITLE: Full HTML page as UTF-16LE [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<\x00h\x00t\x00m\x00l\x00>\x00<\x00h\x00e\x00a\x00d\x00>\x00<\x00t\x00i\x00t\x00l\x00e\x00>\x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00 \x00E\x00n\x00c\x00o\x00d\x00e\x00d\x00 \x00P\x00a\x00g\x00e\x00<\x00/\x00t\x00i\x00t\x00l\x00e\x00>\x00<\x00/\x00h\x00e\x00a\x00d\x00>\x00<\x00b\x00o\x00d\x00y\x00>\x00<\x00h\x001\x00>\x00T\x00h\x00i\x00s\x00 \x00e\x00n\x00t\x00i\x00r\x00e\x00 \x00p\x00a\x00g\x00e\x00 \x00i\x00s\x00 \x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00<\x00/\x00h\x001\x00>\x00<\x00p\x00>\x00B\x00u\x00t\x00 \x00t\x00h\x00e\x00 \x00s\x00e\x00r\x00v\x00e\x00r\x00 \x00n\x00e\x00v\x00e\x00r\x00 \x00d\x00e\x00c\x00l\x00a\x00r\x00e\x00d\x00 \x00a\x00 \x00c\x00h\x00a\x00r\x00s\x00e\x00t\x00.\x00 \x00G\x00o\x00o\x00d\x00 \x00l\x00u\x00c\x00k\x00 \x00d\x00e\x00c\x00o\x00d\x00i\x00n\x00g\x00!\x00<\x00/\x00p\x00>\x00<\x00/\x00b\x00o\x00d\x00y\x00>\x00<\x00/\x00h\x00t\x00m\x00l\x00>\x00' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<\x00h\x00t\x00m\x00l\x00>\x00<\x00h\x00e\x00a\x00d\x00>\x00<\x00t\x00i\x00t\x00l\x00e\x00>\x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00 \x00E\x00n\x00c\x00o\x00d\x00e\x00d\x00 \x00P\x00a\x00g\x00e\x00<\x00/\x00t\x00i\x00t\x00l\x00e\x00>\x00<\x00/\x00h\x00e\x00a\x00d\x00>\x00<\x00b\x00o\x00d\x00y\x00>\x00<\x00h\x001\x00>\x00T\x00h\x00i\x00s\x00 \x00e\x00n\x00t\x00i\x00r\x00e\x00 \x00p\x00a\x00g\x00e\x00 \x00i\x00s\x00 \x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00<\x00/\x00h\x001\x00>\x00<\x00p\x00>\x00B\x00u\x00t\x00 \x00t\x00h\x00e\x00 \x00s\x00e\x00r\x00v\x00e\x00r\x00 \x00n\x00e\x00v\x00e\x00r\x00 \x00d\x00e\x00c\x00l\x00a\x00r\x00e\x00d\x00 \x00a\x00 \x00c\x00h\x00a\x00r\x00s\x00e\x00t\x00.\x00 \x00G\x00o\x00o\x00d\x00 \x00l\x00u\x00c\x00k\x00 \x00d\x00e\x00c\x00o\x00d\x00i\x00n\x00g\x00!\x00<\x00/\x00p\x00>\x00<\x00/\x00b\x00o\x00d\x00y\x00>\x00<\x00/\x00h\x00t\x00m\x00l\x00>\x00' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<\x00h\x00t\x00m\x00l\x00>\x00<\x00h\x00e\x00a\x00d\x00>\x00<\x00t\x00i\x00t\x00l\x00e\x00>\x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00 \x00E\x00n\x00c\x00o\x00d\x00e\x00d\x00 \x00P\x00a\x00g\x00e\x00<\x00/\x00t\x00i\x00t\x00l\x00e\x00>\x00<\x00/\x00h\x00e\x00a\x00d\x00>\x00<\x00b\x00o\x00d\x00y\x00>\x00<\x00h\x001\x00>\x00T\x00h\x00i\x00s\x00 \x00e\x00n\x00t\x00i\x00r\x00e\x00 \x00p\x00a\x00g\x00e\x00 \x00i\x00s\x00 \x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00<\x00/\x00h\x001\x00>\x00<\x00p\x00>\x00B\x00u\x00t\x00 \x00t\x00h\x00e\x00 \x00s\x00e\x00r\x00v\x00e\x00r\x00 \x00n\x00e\x00v\x00e\x00r\x00 \x00d\x00e\x00c\x00l\x00a\x00r\x00e\x00d\x00 \x00a\x00 \x00c\x00h\x00a\x00r\x00s\x00e\x00t\x00.\x00 \x00G\x00o\x00o\x00d\x00 \x00l\x00u\x00c\x00k\x00 \x00d\x00e\x00c\x00o\x00d\x00i\x00n\x00g\x00!\x00<\x00/\x00p\x00>\x00<\x00/\x00b\x00o\x00d\x00y\x00>\x00<\x00/\x00h\x00t\x00m\x00l\x00>\x00' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<\x00h\x00t\x00m\x00l\x00>\x00<\x00h\x00e\x00a\x00d\x00>\x00<\x00t\x00i\x00t\x00l\x00e\x00>\x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00 \x00E\x00n\x00c\x00o\x00d\x00e\x00d\x00 \x00P\x00a\x00g\x00e\x00<\x00/\x00t\x00i\x00t\x00l\x00e\x00>\x00<\x00/\x00h\x00e\x00a\x00d\x00>\x00<\x00b\x00o\x00d\x00y\x00>\x00<\x00h\x001\x00>\x00T\x00h\x00i\x00s\x00 \x00e\x00n\x00t\x00i\x00r\x00e\x00 \x00p\x00a\x00g\x00e\x00 \x00i\x00s\x00 \x00U\x00T\x00F\x00-\x001\x006\x00L\x00E\x00<\x00/\x00h\x001\x00>\x00<\x00p\x00>\x00B\x00u\x00t\x00 \x00t\x00h\x00e\x00 \x00s\x00e\x00r\x00v\x00e\x00r\x00 \x00n\x00e\x00v\x00e\x00r\x00 \x00d\x00e\x00c\x00l\x00a\x00r\x00e\x00d\x00 \x00a\x00 \x00c\x00h\x00a\x00r\x00s\x00e\x00t\x00.\x00 \x00G\x00o\x00o\x00d\x00 \x00l\x00u\x00c\x00k\x00 \x00d\x00e\x00c\x00o\x00d\x00i\x00n\x00g\x00!\x00<\x00/\x00p\x00>\x00<\x00/\x00b\x00o\x00d\x00y\x00>\x00<\x00/\x00h\x00t\x00m\x00l\x00>\x00' -------------------------------------------- ENDPOINT: /html-long-title TITLE: HTML title is 1000 characters [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

Check your tab title

</html>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<html><head></head>

Check your tab title

</html>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

Check your tab title

</html>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

Check your tab title

</html>' -------------------------------------------- ENDPOINT: /html-irc-title TITLE: Title with IRC injection [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

IRC Injection via HTML title

</html>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<html><head></head>

IRC Injection via HTML title

</html>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

IRC Injection via HTML title

</html>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

IRC Injection via HTML title

</html>' -------------------------------------------- ENDPOINT: /html-unicode TITLE: Random unicode title/body [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html; charset=utf-8'} Body: b'<html><head></head>

This page reloads every 0 seconds

Your browser tab is now stuck in an infinite reload loop.

</html>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<html><head></head>

This page reloads every 0 seconds

Your browser tab is now stuck in an infinite reload loop.

</html>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

This page reloads every 0 seconds

Your browser tab is now stuck in an infinite reload loop.

</html>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<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 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/plain'} Body: b'\x1b[2J\x1b[H\x1b]0;HACKED BY MALSERV\x07\x1b[?25l\x1b[2;92H\x1b[4;31m\xe2\x96\x93\x1b[0m\x1b[18;68H\x1b[3;32m\xe2\x99\xa5\x1b[0m\x1b[32;52H\x1b[4;34m\xf0\x9f\x92\x80\x1b[0m\x1b[41;8H\x1b[7;34m\xe2\x95\x90\x1b[0m\x1b[19;90H\x1b[1;36m\xe2\x96\x88\x1b[0m\x1b[6;97H\x1b[3;33m\xf0\x9f\x83\x8f\x1b[0m\x1b[28;11H\x1b[4;33m\xf0\x9f\x90\x9b\x1b[0m\x1b[13;51H\x1b[1;37m\xf0\x9f\x90\x9b\x1b[0m\x1b[12;33H\x1b[1;37m\xe2\x98\xa0\x1b[0m\x1b[37;110H\x1b[5;37m\xe2\x95\x97\x1b[0m\x1b[17;52H\x1b[3;34m\xe2\x95\x94\x1b[0m\x1b[6;11H\x1b[4;37m\xe2\x95\x9d\x1b[0m\x1b[5;114H\x1b[1;35m\xe2\x95\x91\x1b[0m\x1b[36;92H\x1b[1;36m\xe2\x96\x93\x1b[0m\x1b[28;39H\x1b[7;32m\xe2\x96\x91\x1b[0m\x1b[9;96H\x1b[7;37m\xe2\x95\x9a\x1b[0m\x1b[6;102H\x1b[4;33m\xe2\x9a\xa1\x1b[0m\x1b[16;65H\x1b[7;35m\xe2\x95\x9a\x1b[0m\x1b[17;84H\x1b[7;33m\xe2\x95\x9d\x1b[0m\x1b[1;41H\x1b[3;31m\xe2\x99\xa3\x1b[0m\x1b[36;15H\x1b[4;32m\xe2\x98\xa0\x1b[0m\x1b[25'... (6950 bytes total) [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/plain')] Body: b'\x1b[2J\x1b[H\x1b]0;HACKED BY MALSERV\x07\x1b[?25l\x1b[39;106H\x1b[7;32m\xf0\x9f\x92\x80\x1b[0m\x1b[4;120H\x1b[1;33m\xf0\x9f\x91\xbe\x1b[0m\x1b[44;18H\x1b[3;33m\xe2\x99\xa0\x1b[0m\x1b[10;63H\x1b[3;36m\xf0\x9f\x8e\xad\x1b[0m\x1b[36;58H\x1b[4;33m\xe2\x99\xa3\x1b[0m\x1b[29;59H\x1b[5;31m\xe2\x99\xa5\x1b[0m\x1b[7;113H\x1b[3;35m\xe2\x99\xa0\x1b[0m\x1b[45;14H\x1b[3;33m\xe2\x9a\xa1\x1b[0m\x1b[35;21H\x1b[4;37m\xf0\x9f\x94\xa5\x1b[0m\x1b[25;84H\x1b[3;34m\xf0\x9f\x92\x80\x1b[0m\x1b[23;114H\x1b[5;36m\xe2\x95\x9a\x1b[0m\x1b[47;28H\x1b[4;31m\xf0\x9f\x83\x8f\x1b[0m\x1b[17;35H\x1b[5;31m\xe2\x99\xa6\x1b[0m\x1b[48;42H\x1b[4;33m\xe2\x96\x93\x1b[0m\x1b[25;117H\x1b[3;33m\xf0\x9f\x94\xa5\x1b[0m\x1b[9;58H\x1b[1;32m\xe2\x96\x91\x1b[0m\x1b[22;90H\x1b[5;37m\xf0\x9f\x83\x8f\x1b[0m\x1b[33;54H\x1b[7;32m\xf0\x9f\x94\xa5\x1b[0m\x1b[32;111H\x1b[5;31m\xe2\x99\xa0\x1b[0m\x1b[19;46H\x1b[3;36m\xf0\x9f\x94\xa5\x1b[0m\x1b[39;75H\x1b[3;'... (6968 bytes total) [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/plain'} Body: b'\x1b[2J\x1b[H\x1b]0;HACKED BY MALSERV\x07\x1b[?25l\x1b[24;101H\x1b[5;33m\xe2\x9a\xa1\x1b[0m\x1b[31;71H\x1b[1;34m\xe2\x96\x88\x1b[0m\x1b[24;117H\x1b[1;37m\xe2\x96\x88\x1b[0m\x1b[27;1H\x1b[3;33m\xe2\x9a\xa1\x1b[0m\x1b[38;31H\x1b[3;33m\xe2\x95\x97\x1b[0m\x1b[8;91H\x1b[5;33m\xe2\x9a\xa1\x1b[0m\x1b[44;104H\x1b[5;34m\xe2\x99\xa6\x1b[0m\x1b[38;118H\x1b[3;34m\xe2\x96\x93\x1b[0m\x1b[4;20H\x1b[1;37m\xf0\x9f\x83\x8f\x1b[0m\x1b[3;89H\x1b[4;37m\xf0\x9f\x90\x9b\x1b[0m\x1b[39;18H\x1b[3;34m\xf0\x9f\x91\xbe\x1b[0m\x1b[20;7H\x1b[4;32m\xf0\x9f\x94\xa5\x1b[0m\x1b[3;82H\x1b[5;34m\xe2\x96\x91\x1b[0m\x1b[21;104H\x1b[3;31m\xe2\x98\xa0\x1b[0m\x1b[23;30H\x1b[3;35m\xe2\x98\xa0\x1b[0m\x1b[6;19H\x1b[5;37m\xe2\x99\xa6\x1b[0m\x1b[44;91H\x1b[1;33m\xf0\x9f\x91\xbe\x1b[0m\x1b[30;24H\x1b[3;35m\xe2\x96\x92\x1b[0m\x1b[44;54H\x1b[4;35m\xf0\x9f\x92\x80\x1b[0m\x1b[34;21H\x1b[7;33m\xe2\x96\x88\x1b[0m\x1b[2;108H\x1b[4;37m\xe2\x96\x93\x1b[0'... (6962 bytes total) [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/plain'} Body: b'\x1b[2J\x1b[H\x1b]0;HACKED BY MALSERV\x07\x1b[?25l\x1b[30;63H\x1b[4;32m\xf0\x9f\x8e\xad\x1b[0m\x1b[1;50H\x1b[7;36m\xf0\x9f\x83\x8f\x1b[0m\x1b[21;17H\x1b[1;32m\xe2\x95\x9d\x1b[0m\x1b[34;95H\x1b[3;36m\xe2\x9a\xa1\x1b[0m\x1b[14;27H\x1b[3;37m\xe2\x95\x97\x1b[0m\x1b[37;78H\x1b[5;35m\xe2\x96\x92\x1b[0m\x1b[27;67H\x1b[5;37m\xe2\x96\x92\x1b[0m\x1b[2;51H\x1b[5;31m\xf0\x9f\x90\x9b\x1b[0m\x1b[35;34H\x1b[4;32m\xe2\x95\x90\x1b[0m\x1b[49;78H\x1b[3;35m\xe2\x99\xa5\x1b[0m\x1b[32;23H\x1b[5;33m\xf0\x9f\x94\xa5\x1b[0m\x1b[47;117H\x1b[7;32m\xe2\x96\x93\x1b[0m\x1b[38;117H\x1b[5;35m\xe2\x99\xa0\x1b[0m\x1b[30;63H\x1b[1;37m\xe2\x96\x92\x1b[0m\x1b[23;25H\x1b[4;37m\xe2\x99\xa6\x1b[0m\x1b[41;54H\x1b[7;34m\xe2\x95\x91\x1b[0m\x1b[20;114H\x1b[3;31m\xe2\x95\x94\x1b[0m\x1b[20;84H\x1b[3;33m\xe2\x95\x9a\x1b[0m\x1b[28;49H\x1b[3;32m\xf0\x9f\x94\xa5\x1b[0m\x1b[49;47H\x1b[3;37m\xe2\x98\xa0\x1b[0m\x1b[22;87H\x1b[7;35m\xe2\x99\xa6\x1b'... (6966 bytes total) -------------------------------------------- ENDPOINT: /net-gzip-bomb TITLE: Gzip bomb (~10KB to 10MB) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'application/octet-stream', 'Content-Encoding': 'gzip', 'Content-Length': '9750'} Body: b'\x1f\x8b\x08\x00\x19\xeb\x8fi\x02\xff\xec\xc1\x01\x01\x00\x00\x00\x80\x90\xfe\xaf\xee\x08\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'... (8192 bytes total) [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'application/octet-stream'), ('Content-Encoding', 'gzip'), ('Content-Length', '9750')] Body: b'\x1f\x8b\x08\x00\x19\xeb\x8fi\x02\xff\xec\xc1\x01\x01\x00\x00\x00\x80\x90\xfe\xaf\xee\x08\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'... (8192 bytes total) [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'application/octet-stream', 'Content-Encoding': 'gzip', 'Content-Length': '9750'} Body: b'\x1f\x8b\x08\x00\x19\xeb\x8fi\x02\xff\xec\xc1\x01\x01\x00\x00\x00\x80\x90\xfe\xaf\xee\x08\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'... (8192 bytes total) [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'application/octet-stream', 'Content-Encoding': 'gzip', 'Content-Length': '9750'} Body: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'... (8192 bytes total) -------------------------------------------- ENDPOINT: /net-event-flood TITLE: SSE event flood (infinite) [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive'} Body: b'id: 0\nevent: flood\ndata: {"seq":0,"time":1771041760.932129,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'... (8192 bytes total) [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/event-stream'), ('Cache-Control', 'no-cache'), ('Connection', 'keep-alive')] Body: b'id: 0\nevent: flood\ndata: {"seq":0,"time":1771041760.9326968,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'... (8192 bytes total) [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive'} Body: b'id: 0\nevent: flood\ndata: {"seq":0,"time":1771041760.933709,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'... (8192 bytes total) [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive'} Body: b'id: 0\nevent: flood\ndata: {"seq":0,"time":1771041760.9344547,"garbage":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'... (8192 bytes total) -------------------------------------------- ENDPOINT: /net-mime-sniff TITLE: MIME type confusion [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>\n

MIME Sniffing Test

\n

This page includes a <script> tag pointing to /net-mime-sniff?payload=1,\nwhich serves JavaScript with Content-Type: image/jpeg.

\n

If your browser MIME-sniffs, the JS will execute and you\'ll see an alert.

\n

\n<script src="/net-mime-sniff?payload=1"></script>\n</html>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<html><head></head>\n

MIME Sniffing Test

\n

This page includes a <script> tag pointing to /net-mime-sniff?payload=1,\nwhich serves JavaScript with Content-Type: image/jpeg.

\n

If your browser MIME-sniffs, the JS will execute and you\'ll see an alert.

\n

\n<script src="/net-mime-sniff?payload=1"></script>\n</html>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>\n

MIME Sniffing Test

\n

This page includes a <script> tag pointing to /net-mime-sniff?payload=1,\nwhich serves JavaScript with Content-Type: image/jpeg.

\n

If your browser MIME-sniffs, the JS will execute and you\'ll see an alert.

\n

\n<script src="/net-mime-sniff?payload=1"></script>\n</html>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>\n

MIME Sniffing Test

\n

This page includes a <script> tag pointing to /net-mime-sniff?payload=1,\nwhich serves JavaScript with Content-Type: image/jpeg.

\n

If your browser MIME-sniffs, the JS will execute and you\'ll see an alert.

\n

\n<script src="/net-mime-sniff?payload=1"></script>\n</html>' -------------------------------------------- ENDPOINT: /net-cache-poison TITLE: Contradicting cache headers [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 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, ... (374 chars total) Body: b'<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>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 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-Modi... (394 chars total) Body: b'<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>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 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, ... (374 chars total) Body: b'<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>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 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, ... (374 chars total) Body: b'<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 [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html', 'Strict-Transport-Security': 'max-age=999999999; includeSubDomains; preload'} Body: b'<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>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html'), ('Strict-Transport-Security', 'max-age=999999999; includeSubDomains; preload')] Body: b'<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>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html', 'Strict-Transport-Security': 'max-age=999999999; includeSubDomains; preload'} Body: b'<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>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html', 'Strict-Transport-Security': 'max-age=999999999; includeSubDomains; preload'} Body: b'<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 IPv4 address [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

127.0.0.1

</html>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<html><head></head>

127.0.0.1

</html>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

127.0.0.1

</html>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

127.0.0.1

</html>' -------------------------------------------- ENDPOINT: /misc-ipv6 TITLE: Shows your IPv6 address [urllib.request] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

127.0.0.1

For true IPv6, connect to [::1]:60666

</html>' [http.client] Status: 200 OK Headers: [('Server', 'BaseHTTP/0.6 Python/3.12.3'), ('Date', 'Sat, 14 Feb 2026 04:02:40 GMT'), ('Content-Type', 'text/html')] Body: b'<html><head></head>

127.0.0.1

For true IPv6, connect to [::1]:60666

</html>' [requests] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

127.0.0.1

For true IPv6, connect to [::1]:60666

</html>' [aiohttp] Status: 200 Headers: {'Server': 'BaseHTTP/0.6 Python/3.12.3', 'Date': 'Sat, 14 Feb 2026 04:02:40 GMT', 'Content-Type': 'text/html'} Body: b'<html><head></head>

127.0.0.1

For true IPv6, connect to [::1]:60666

</html>' -------------------------------------------- ALL TESTS COMPLETE --------------------------------------------