Description
Estrattore enterprise specializzato per il pattern moderno di reverse-engineering web: parsing di variabili JavaScript inline embedded direttamente nei blocchi <script> del HTML server-rendered, senza eseguire il JS — pattern fondamentale per accedere ai dati strutturati che molte SPA, framework SSR (Next.js, Nuxt, SvelteKit, Remix), CMS embedded player (YouTube, Vimeo, Streammy, Twitch embeds), piattaforma sport (DAZN, Sky, ESPN) e similar mettono come state pre-popolato in window.X = {...} per consumo client-side, anziché esporre un'API REST/GraphQL pubblica documentata. Questi dati sono "pubblici" nel HTML response del server ma non in JSON proper, e parsarli con browser+JS execution (via Puppeteer/Playwright) sarebbe overkill e 100× più lento + più costoso. Esempio canonico di use case: pagina video player con il tag <script>window.player = { src: "https://cdn.example.com/segments/master.m3u8", expires: 1730000000, drm: false, region: "EU" }</script> → il nodo estrae programmatic src + expires + drm + region senza dover lanciare Chrome headless + parse di DOM events. Robust contro le varianti di sintassi JavaScript reale (codice JS scritto da developer veri ha format eterogenei tra publisher e a volte tra deploy del stesso publisher): quote singole o doppie intercambiabili (\"src\" vs \'src\'), chiavi object con o senza virgolette (var = { src: ... } vs var = { \"src\": ... }), valori numerici o stringa o boolean o null, trailing comma permessi (style JS modern), commenti inline ignorati safely, espressioni semplici tipo Date.now() o {a: b} nested object. Il parser è AST-style con context window per evitare false match. Critical security feature: NON esegue mai il JavaScript estratto (no eval, no Function(), no vm) — il parsing è puramente lexical/syntactic stile SAX parser, completamente safe per processing di HTML untrusted da source web arbitrari senza rischio di code injection o sandbox escape. Output: { extracted: { variableName1: { value, type (object|array|string|number|boolean|null), scriptIndex } }, totalExtracted, scriptsAnalyzed }. Use case: estrarre URL video reali da player embed di service streaming come Streammy/vixcloud/sweetpixel che mettono lo stream URL in window.config = {} prima di costruire il player visuale; ingest del state SSR (window.__INITIAL_STATE__ del Redux pre-popolato, window.__APOLLO_STATE__ di Apollo Client) di pagine React/Vue server-rendered per scraping di e-commerce moderni; recovery di dati config da landing pubbliche di company sites (es. <script>window.analyticsConfig = {apiKey:"...", endpoint:"..."}); reverse-engineering di payload Inertia.js (used dai siti Laravel modern) o Next.js __NEXT_DATA__ (il payload server-side che React idrata client-side — contiene tipicamente tutti i dati della pagina pronti per consumo); ingest dati da broadcaster sport che fanno embed di player con metadata evento/lineup/stat in window.payload.
