Open service 151.101.2.132:443 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-pao-kpao1770043-PAO X-Cache: HIT, HIT X-Cache-Hits: 5, 1 X-Timer: S1768211497.592847,VS0,VE106 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.66.132:443 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 3 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-fra-eddf8230128-FRA X-Cache: HIT, HIT X-Cache-Hits: 2, 1 X-Timer: S1768211497.709339,VS0,VE230 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.194.132:443 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-fra-eddf8230091-FRA X-Cache: HIT, HIT X-Cache-Hits: 2, 1 X-Timer: S1768211496.226095,VS0,VE1 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.66.132:80 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-yyz4550-YYZ X-Cache: HIT, HIT X-Cache-Hits: 3, 1 X-Timer: S1768211496.307889,VS0,VE39 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.2.132:80 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-sin-wsss1830023-SIN X-Cache: HIT, HIT X-Cache-Hits: 4, 1 X-Timer: S1768211496.431849,VS0,VE55 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.130.132:443 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-sin-wsss1830054-SIN X-Cache: HIT, HIT X-Cache-Hits: 4, 1 X-Timer: S1768211496.439868,VS0,VE1 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.194.132:80 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-vie6320-VIE X-Cache: HIT, HIT X-Cache-Hits: 6, 1 X-Timer: S1768211496.219559,VS0,VE2 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.130.132:80 · test.swanfun.com
2026-01-12 09:51
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Mon, 12 Jan 2026 09:51:36 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-fra-eddf8230184-FRA X-Cache: HIT, HIT X-Cache-Hits: 2, 1 X-Timer: S1768211496.195595,VS0,VE1 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.66.132:443 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Age: 0 Date: Tue, 23 Dec 2025 10:45:31 GMT X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-sjc1000103-SJC X-Cache: HIT, MISS X-Cache-Hits: 5, 0 X-Timer: S1766486731.992811,VS0,VE274 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.2.132:80 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:31 GMT Age: 0 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-sin-wsss1830090-SIN X-Cache: HIT, HIT X-Cache-Hits: 3, 1 X-Timer: S1766486731.910935,VS0,VE104 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.2.132:443 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:30 GMT Age: 0 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-yyz4553-YYZ X-Cache: HIT, HIT X-Cache-Hits: 1, 1 X-Timer: S1766486731.703264,VS0,VE1 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.194.132:80 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:31 GMT Age: 1 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-fra-eddf8230020-FRA X-Cache: HIT, HIT X-Cache-Hits: 2, 1 X-Timer: S1766486731.125347,VS0,VE787 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.194.132:443 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:30 GMT Age: 0 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-fra-eddf8230072-FRA X-Cache: HIT, HIT X-Cache-Hits: 2, 1 X-Timer: S1766486731.635460,VS0,VE54 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.130.132:80 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:30 GMT Age: 0 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-yyz4528-YYZ X-Cache: HIT, HIT X-Cache-Hits: 1, 1 X-Timer: S1766486730.450527,VS0,VE483 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.130.132:443 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:30 GMT Age: 0 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-fra-eddf8230162-FRA X-Cache: HIT, HIT X-Cache-Hits: 2, 1 X-Timer: S1766486731.880697,VS0,VE49 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de
Open service 151.101.66.132:80 · test.swanfun.com
2025-12-23 10:45
HTTP/1.1 200 OK Connection: close Content-Length: 4333 content-type: text/html; charset=utf-8 Via: 1.1 varnish, 1.1 varnish Accept-Ranges: bytes Date: Tue, 23 Dec 2025 10:45:30 GMT Age: 2 X-Served-By: cache-iad-kjyo7100118-IAD, cache-iad-kjyo7100118-IAD, cache-rtm-ehrd2290046-RTM X-Cache: MISS, HIT X-Cache-Hits: 0, 1 X-Timer: S1766486730.374567,VS0,VE1 <h1>HTTP me!</h1> <p>HTTP me is an app initally designed to replicate the features of HTTPBin.org: being a convenient server that you can use to trigger a certain HTTP response behaviour.</p> <p>It was previously a JavaScript project on Glitch, but has since been migrated to a Rust application running on Fastly Compute.</p> <h2>Usage</h2> <p>Request any path you like, as long as it is not <code>/</code> (which produces this page). Most directives can be duplicated or combined, and can be specified in multiple ways. If directives are mutually exclusive, those specified later take priority, and path segments take priority over query args, which take priority over headers.</p> <h3>Path segments</h3> <p>Any directive can be specified as a path segment. This returns the current time:</p> <pre><code>/now </code></pre> <p>Or this returns a 500 status code:</p> <pre><code>/status=500 </code></pre> <h3>Query string</h3> <p>Directives can also be part of the query string. Stackable directives (see below) can be specified multiple times, such as <code>header</code>:</p> <pre><code>/now?wait=1000&header=Cache-Control:max-age=300&header=Content-Type:text/plain </code></pre> <h3>Headers</h3> <p>Add directives as request headers, prefixed with <code>HM-</code>:</p> <pre><code>HM-Wait: 2000 HM-Status: 500 </code></pre> <h2>Directives</h2> <p>The following stackable directives are available:</p> <ul> <li><code>wait=<number></code>: Sleep for <code><number></code> milliseconds before starting the response. Capped at 30 seconds.</li> <li><code>status=<number></code>: Set <code><number></code> as the HTTP Response status code</li> <li><code>header=<key>:<val></code>: Set the response's header for <code><key></code> to <code><val></code>, replacing any previously-specified value</li> <li><code>append-header=<key>:<val></code>: Add a response header of <code><key>: <val></code> to the response, allowing multiple headers with the same key</li> <li><code>cacheable</code>: Make the response cacheable for a short period (shorthand for <code>header=Cache-Control:max-age=300</code>)</li> <li><code>cache=<number></code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=<number></code>)</li> <li><code>no-cache</code>: Make the response uncacheable (shorthand for <code>header=Cache-Control:no-store,private</code>)</li> <li><code>redirect=<url></code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:<url></code>)</li> </ul> <p>The following content directives are mutually exclusive. Only one will be honoured.</p> <ul> <li><code>debug</code>: Output a JSON object describing the directives parsed from the request</li> <li><code>now</code> / <code>time</code>: Output the current time</li> <li><code>ip</code>: Output the IP address of the requesting client</li> <li><code>html</code>: Output a valid HTML page</li> <li><code>json</code>: Output a valid JSON document</li> <li><code>image-jpeg</code>: Output a JPEG image</li> <li><code>image-png</code>: Output a PNG image</li> <li><code>image-webp</code>: Output a WEBP image</li> <li><code>image-gif</code>: Output an animated GIF image</li> <li><code>image-svg</code>: Output an SVG image</li> <li><code>stream-sse=<duration></code>: Output a Server Sent Events stream for <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>drip=<duration></code>: Output a plain stream that sends a character every <code><duration></code> milliseconds. Capped at 30 seconds.</li> <li><code>body=<string></code>: Echo the input data</li> <li><code>base64=<data></code>: Echo the input data but base64-decode it first</li> <li><code>esi</code>: Returns an HTML containing an ESI request to /time, which returns the local server date and time.</li> <li><code>gzip</code>: Returns a gzipped JSON response</li> <li><code>anything</code>: Returns a JSON response de