Domain test.swanfun.com
United States
FASTLY
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2 days ago by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
  • 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&amp;header=Cache-Control:max-age=300&amp;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=&lt;number&gt;</code>: Sleep for <code>&lt;number&gt;</code> milliseconds before starting the response. Capped at 30 seconds.</li>
    <li><code>status=&lt;number&gt;</code>: Set <code>&lt;number&gt;</code> as the HTTP Response status code</li>
    <li><code>header=&lt;key&gt;:&lt;val&gt;</code>: Set the response's header for <code>&lt;key&gt;</code> to <code>&lt;val&gt;</code>, replacing any previously-specified value</li>
    <li><code>append-header=&lt;key&gt;:&lt;val&gt;</code>: Add a response header of <code>&lt;key&gt;: &lt;val&gt;</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=&lt;number&gt;</code>: Make the response cacheable for a custom period (shorthand for <code>header=Cache-Control:max-age=&lt;number&gt;</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=&lt;url&gt;</code>: Redirect to the specified URL with a 308 status code (shorthand for <code>status=308</code> and <code>header=Location:&lt;url&gt;</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=&lt;duration&gt;</code>: Output a Server Sent Events stream for <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>drip=&lt;duration&gt;</code>: Output a plain stream that sends a character every <code>&lt;duration&gt;</code> milliseconds. Capped at 30 seconds.</li>
    <li><code>body=&lt;string&gt;</code>: Echo the input data</li>
    <li><code>base64=&lt;data&gt;</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
    Found 2025-12-23 by HttpPlugin
    Create report
test.swanfun.com
CN:
test.swanfun.com
Key:
RSA-2048
Issuer:
Not before:
2025-12-23 09:46
Not after:
2026-01-22 09:46
test.swanfun.com
CN:
test.swanfun.com
Key:
RSA-2048
Issuer:
Not before:
2025-12-03 10:42
Not after:
2026-01-02 10:42