Level 3 sites use Astro Islands to split each page across four independent framework components — React, Vue, Svelte, and Solid — each owning a different slice of the data. On top of that, each framework island uses a distinct data-obfuscation technique to frustrate scrapers. A scraper must hydrate all four runtimes, wait for four staggered async gates, and defeat four different anti-bot tricks to reconstruct a complete record.
Anti-Bot Techniques
Per-Framework Obfuscation
ReactCSS-assembled text — words split into spans, DOM order shuffled, CSS flex order restores visual order; textContent returns scrambled words
VuePseudo-element content — data rendered via ::before { content: attr(data-x) }; textContent returns empty string
SvelteDecoy overlay — real value at z-index 1, fake value at z-index 2 with color: transparent; DOM has both, scraper must resolve z-order
SolidCanvas-rendered text — numbers and IDs drawn via ctx.fillText(); not present in the DOM at all
Page-Level Defenses
DevTools DetectionOpening browser DevTools triggers a 404 page takeover — the entire document is replaced with a static "404 Not Found" response. Detection runs on an 800 ms polling interval.
Honeypot ButtonsHidden interactive elements (opacity: 0.001) with realistic class names and actions. Visible in the DOM but invisible to users. Scrapers that interact with these reveal themselves.
Shadow DOM EncapsulationEshop pages wrap <main> content inside a closed Shadow DOM after islands hydrate. document.querySelector() returns nothing — scrapers must locate the shadow host and pierce the closed shadow root to reach product data.
Press-and-Hold GateNews article pages require a 5-second press-and-hold interaction before content is revealed. A full-screen overlay with a circular progress ring blocks <main> until the hold completes. State is persisted in sessionStorage.
No Source CommentsAll L3 component source code is stripped of comments — no //, /* */, or <!-- --> hints about anti-bot techniques or implementation details.