Description
Crawler enterprise specializzato per sitemap.xml — il file XML standard sitemaps.org che ogni sito web rispettabile espone (default /sitemap.xml o riferito da robots.txt) per dichiarare ai search engine tutto il proprio universo URL navigabili con metadata di update freshness, change frequency, priority. Scarica il sitemap dall'URL fornito e parsa l'XML estraendo l'elenco di tutte le URL dichiarate, con supporto completo allo standard plus extensions: sitemap-index ricorsivo (un singolo sitemap.xml padre che linka N child sitemap separati, pattern usato dai siti grossi con > 50k URL — il limite hard di un singolo sitemap file — come Amazon, Wikipedia, CNN, RAI, Mediaset), elementi <url> con <loc> obbligatorio + <lastmod> (timestamp ultimo aggiornamento del documento), <changefreq> hint (always/hourly/daily/weekly/monthly/yearly/never), <priority> da 0.0 a 1.0 (importance relativa nel ranking), estensioni xmlns Image (img:image), Video (video:video), News (news:news). Filtri rich applicati lato-client per ridurre traffico downstream e focus sui URL rilevanti: regex include (whitelist — "ritorna solo URL che matchano /products/", per scraping mirato), regex exclude (blacklist — "salta URL di /admin/ /login/ /search/" per evitare di hammer endpoint non utili), filtro lastmod minimo (date threshold — "solo URL aggiornati dopo 2026-01-01", pattern incrementale per evitare di riprocessare pagine immutate dalla last run del workflow). Sicurezza & resilienza: safeFetchWithRedirects (anti-SSRF su URL privati 192.168.* 127.* 10.*), timeout configurabile (default 30s — alcuni sitemap grossi di e-commerce italiani superano 5MB di XML), retry su 5xx con exponential backoff + jitter, decompressione automatica gzip se il server invia Content-Encoding: gzip (pratica comune per sitemap > 1MB), parsing streaming SAX-based per evitare memory bloat su sitemap monster. Cap default per safety: max 1000 URL ritornati per evitare di intasare il workflow downstream con risultati enormi, max recursion depth 3 livelli sitemap-index per evitare loop infiniti su sitemap malformati (un sitemap-index che si autorefferenzia, situazione rara ma capitata su CMS bugged). Output: { urls: [{ loc, lastmod?, changefreq?, priority?, sourceSitemap }], totalUrls, sitemapsTraversed, depth, truncated (true se cap raggiunto), timing }. Use case: audit SEO del proprio sito ("quante pagine ho indicizzate? mancano i nuovi prodotti?"); detection di nuove pagine pubblicate confrontando current vs last-run cached (pattern ETL incrementale: "oggi 1500 URL totali vs ieri 1485 → 15 nuovi URL → scrape immediato"); sync URL su crawler interno per indicizzazione search engine privato o RAG retrieval index aggiornato; bulk price-check pagine prodotto e-commerce competitor (catalogo URL → loop → action_web_fetch_advanced → estrazione prezzo); SEO compliance per agency che monitora 50 siti cliente in batch per detection di pagine 404 o orfane.
