One origin HTML file. Live Wasmtime scrambling on the wire.
Every request to guard.iscopesolutions.net flows through a live publisher-guard serve Rust daemon and sandboxed Wasmtime component (publisher_guard_guest.wasm) sitting in front of a single upstream HTML file (article.html).
Point curl, defuddle, trafilatura, Readability.js, or an AI browsing agent at /unprotected vs. /protected—or hit /unprotected with User-Agent: GPTBot/1.0 to watch the live proxy switch from allow to scramble on the exact same URL.
Side-by-side live browser rendering.
Both frames below fetch the exact same upstream article.html file through the live publisher-guard daemon. The left frame matches allow; the right frame streams through Wasmtime lol_html + keyed BLAKE3 XOF on the fly (scramble), preserving tag hierarchy, CSS classes, <table> geometry, and character-class word lengths while stripping all 16 metadata and hydration channels.
Scrape the live daemon from your terminal.
Run any of the four checks below against https://guard.iscopesolutions.net to test live User-Agent classification, metadata stripping, and article extraction.
1. Same URL (/unprotected), different User-Agent
Hit /unprotected with a normal UA vs. GPTBot/1.0 or ClaudeBot/1.0. The live Wasmtime classifier switches from allow to scramble on the exact same URL:
# Normal client on /unprotected -> real English prose (allow)
curl -sL https://guard.iscopesolutions.net/unprotected | grep -m1 '<p>'
# AI crawler UA on the SAME /unprotected URL -> live BLAKE3 scramble
curl -sL -A "GPTBot/1.0" https://guard.iscopesolutions.net/unprotected | grep -m1 '<p>'
2. Verify JSON-LD, Open Graph & #__NEXT_DATA__ stripping
Scrapers fall back to application/ld+json, og:description, or #__NEXT_DATA__ when body text looks noisy. Compare both live responses:
# /unprotected: prints description, ld+json articleBody, and __NEXT_DATA__
curl -sL https://guard.iscopesolutions.net/unprotected \
| grep -E 'og:description|ld\+json|articleBody|__NEXT_DATA__'
# /protected: returns 0 matches (all 16 secondary copy channels stripped live)
curl -sL https://guard.iscopesolutions.net/protected \
| grep -E 'og:description|ld\+json|articleBody|__NEXT_DATA__'
3. Extract Markdown with defuddle or trafilatura
Point standard CLI article extractors at both URLs. Both get 200 OK and extract a 301-word Markdown article and 5-column table:
# With defuddle:
npx defuddle parse https://guard.iscopesolutions.net/unprotected --markdown
npx defuddle parse https://guard.iscopesolutions.net/protected --markdown
# With Python trafilatura:
trafilatura -u https://guard.iscopesolutions.net/unprotected --markdown
trafilatura -u https://guard.iscopesolutions.net/protected --markdown
4. Paste into an AI Web-Browsing Agent
Ask ChatGPT, Claude, or Perplexity to fetch and summarize both URLs:
Fetch both of these live URLs and summarize the Q3 p99 latency numbers and regional throughput table from each page:
1. https://guard.iscopesolutions.net/unprotected
2. https://guard.iscopesolutions.net/protected
Extracted Markdown comparison (301 words vs. 301 pseudowords).
Below is the exact Markdown output extracted from /unprotected and /protected. The Markdown heading hierarchy, 5-column telemetry table, code block structure, and blockquote are preserved while 0 / 301 original prose words survive in the protected output.
/unprotected (allow)
301 words · Description present
Title: Q3 Systems Architecture & Latency Report — Acme Engineering
Description: Quarterly systems architecture report covering tail-latency reductions...
Words: 301
# Q3 Systems Architecture & Tail-Latency Report
During the third quarter, our core infrastructure team replaced the legacy
buffered proxy tier with a single-pass streaming HTML state machine. Across
all twelve North American and European points of presence, 99th-percentile
response latency dropped from 18.4 milliseconds to 10.8 milliseconds while
sustaining 140,000 concurrent requests per node.
## Regional Throughput & Latency Breakdown
| Cluster Region | Peak Requests / Sec | Median Latency (p50) | Tail Latency (p99) | Memory Footprint |
| --- | --- | --- | --- | --- |
| US-East (Virginia) | 142,800 req/s | 1.9 ms | 10.4 ms | 48 MiB |
| US-West (Oregon) | 118,500 req/s | 2.1 ms | 11.1 ms | 44 MiB |
| EU-Central (Frankfurt) | 134,200 req/s | 2.0 ms | 10.8 ms | 46 MiB |
| AP-Northeast (Tokyo) | 96,400 req/s | 2.3 ms | 11.6 ms | 41 MiB |
```
[proxy]
listen = "0.0.0.0:8443"
max_concurrent_streams = 4096
wasm_fuel_budget = 50_000_000
wasm_memory_limit_bytes = 16_777_216
```
> "Eliminating full-document heap allocations reduced our edge memory
> footprint by 78% while preventing automated extraction pipelines from
> harvesting raw article prose or embedded hydration state."
/protected (scramble)
301 words · Description: None · 0.00% prose retained
Title: G1 Rexpxge Ejvbbqjmdwor & Jfckuhb Iskbav — Rxbt Rbwfsiesmss
Description: None
Words: 301
# Q5 Eucvcuk Oilhlkxlojxb & Noml-Jnacmyp Orryap
Vgeqhq exa lvofy cvikwoh, jtm emaf ccfhefhqccghti uwyd wliipwsi qze nknajj
vlwgcjrv tuxwk nhvm rtkq x ybpvwz-nqqr xaxcrdkbi FXWF hagre rnbzbxz. Ehcfcw
qsc jkdkrj Rrjqx Yjtocxag oju Qmytteaf pjqaik bh rezfdngh, 40cm-ytlqbnenyx
spcibvwc nbmvthw fxmmzcr nsng 50.4 hmeaspgwgfov ig 32.8 ehcpwommvwbg zprnw
spfcfenta 304,385 ihvuzadkrp ocvvsrwz aaz aqsp.
## Bhihxpaj Boqmtdqwxi & Vbpcugf Stribzomo
| Silskdl Inunrs | Vazr Qjgdazgq / Wmd | Jjxkmc Kdyikpj (q59) | Rnif Qlbwzwk (u08) | Hxzwwy Ovxorsrak |
| --- | --- | --- | --- | --- |
| QQ-Gnjt (Vsxuhsyz) | 521,309 zfh/j | 8.9 jv | 97.4 gv | 66 LmL |
| KL-Wroo (Exmzgr) | 237,959 vje/h | 5.0 qc | 44.4 ce | 49 OpY |
| HY-Zdzspko (Egqwzletp) | 501,794 afg/m | 6.1 ve | 57.9 ku | 13 DlF |
| BU-Nosdkntjq (Axpep) | 77,906 hgc/l | 3.6 ck | 64.8 ga | 21 AfB |
```
[ptukx]
pfhlpc = "9.1.2.0:7547"
ypz_bageqebljr_dorxmlt = 1651
ghel_oxxp_emmpws = 67_230_618
avay_wrhtne_habdc_leron = 25_238_109
```
> "Hcqsdmctntr qfew-hkgvjgeu fgfm icbfspfjsrs qxmixfn kjy yafr xqkcnk
> iaedzoepl aj 16% iwgvs iqkkrhtwlq bmloaufhi ftipgizasq akcpvwige gbet
> glnbwseksq jgr bqchgfr auimn by ulkthisi khxqlusgi fgiom."
Every secondary extraction channel stripped in one streaming pass.
Scrambled body text is useless if the scraper falls back to <script type="application/ld+json">, Open Graph tags, or SSR hydration state. Publisher Guard's streaming lol_html pass rewrites or removes all 16 secondary copy channels simultaneously:
Copy Channel in article.html |
/unprotected Response (allow) |
/protected Response (scramble) |
|---|---|---|
<title> |
Q3 Systems Architecture & Latency Report — Acme Engineering |
G1 Rexpxge Ejvbbqjmdwor & Jfckuhb Iskbav — Rxbt Rbwfsiesmss (scrambled in-place) |
<meta name="description"> |
Quarterly systems architecture report covering tail-latency reductions... |
Removed |
<meta property="og:title"> & og:description |
Production tail latency dropped 41% in Q3 after migrating edge ingestion... |
Removed |
<meta name="twitter:title"> & twitter:description |
Production tail latency dropped 41% in Q3 after migrating edge ingestion... |
Removed |
<script type="application/ld+json"> |
{"@type":"TechArticle","articleBody":"During the third quarter..."} |
Removed |
<script id="__NEXT_DATA__"> |
{"props":{"pageProps":{"article":{"summary":"Production tail latency..."}}}} |
Removed |
article.post-content DOM nodes |
301 words of English prose + telemetry table |
301 length- & case-matched BLAKE3 pseudowords (0.00% prose retained) |