Cosa fa effettivamente un simulatore di crawler Google
Un simulatore di crawler invia una richiesta HTTP al tuo URL con una stringa user-agent che corrisponde al bot che selezioni, recupera la risposta, e registra il codice di stato, gli header, e l'HTML grezzo. Poi carica la pagina in un browser headless—Chrome con JavaScript abilitato—attende la stabilizzazione del DOM, cattura l'HTML renderizzato finale, e lo confronta con l'HTML iniziale per mostrare cosa JavaScript ha cambiato.
Estrae il testo visibile—quello che un bot vede dopo aver rimosso i tag HTML, CSS, e script—perché è il contenuto che Google indicizza. Segnala le risorse che non hanno caricato: immagini, font, file CSS, o bundle JavaScript bloccati da CORS, 404, o errori del server. Verifica i tag meta robots, gli header X-Robots-Tag, e i tag canonical che potrebbero impedire l'indicizzazione anche se la pagina ha caricato con successo.
Tre categorie di problemi appaiono in ogni test di crawl. La prima è il contenuto mancante dall'HTML grezzo che appare solo dopo l'esecuzione di JavaScript. Se il tuo headline hero o la descrizione del prodotto sono renderizzati lato client, Googlebot potrebbe non vederli durante il fetch iniziale. La seconda è il timeout di rendering. Se JavaScript impiega più di cinque secondi per finire, Googlebot potrebbe indicizzare la pagina incompleta. La terza è le risorse bloccate. Se i tuoi file CSS o JavaScript critici ritornano 403 o 404, la pagina si renderizza rotta, e Googlebot vede un layout rotto.
Come usare questo simulatore di crawler Google
- Incolla l'URL della pagina in Page URL. Usa la versione canonica—https, www se applicabile, nessun parametro UTM a meno che tu non stia testando come i parametri influenzano il rendering.
- Scegli un User-agent dal dropdown. Googlebot Desktop è l'impostazione predefinita. Googlebot Mobile simula l'indicizzazione mobile-first con un viewport mobile. Googlebot-Image testa il crawling specifico per immagini. Bingbot testa il crawler di Bing. GPTBot simula il crawler di training di OpenAI.
- Premi Simulate crawler. Ottieni quattro sezioni: HTML grezzo, HTML renderizzato, testo visibile, e un log delle risorse che mostra quali file hanno caricato o fallito.
- Confronta le schede Raw HTML e Rendered HTML. Se la versione renderizzata ha contenuto mancante dal grezzo, quel contenuto è iniettato da JavaScript. Se il tempo di rendering supera i cinque secondi, mostriamo un avviso.
- Controlla la lista Blocked resources. Qualsiasi risorsa che ha ritornato uno status non-200 viene segnalata. Se CSS o JavaScript critico è bloccato, la pagina probabilmente si renderizza in modo rotto per Googlebot.
- Scorri verso il basso a Visible text. Questo è quello che Google indicizza. Se la tua parola chiave target appare qui, Google può classificare la pagina per essa. Se non appare, la parola chiave è invisibile.
Prova a simulare un'app a pagina singola creata con React o Vue. L'HTML grezzo spesso contiene un <div id="root"></div> vuoto e un tag script. L'HTML renderizzato mostra la pagina completa dopo l'esecuzione di JavaScript. Se il rendering impiega otto secondi a causa di chiamate API lente, avvertiamo che Googlebot potrebbe andare in timeout e indicizzare il guscio vuoto.
Perché l'HTML grezzo versus l'HTML renderizzato è importante
La pipeline di indicizzazione di Google ha due fasi. La prima è il fetch iniziale, dove Googlebot scarica l'HTML grezzo. La seconda è il rendering, dove Googlebot esegue JavaScript in un'istanza headless Chrome e cattura il DOM finale. Il rendering avviene ore o giorni dopo il fetch iniziale, e non ogni pagina viene renderizzata. Le pagine con tempi di caricamento veloci, link interni forti, e nessun errore JavaScript sono prioritarie.
Tre conseguenze pratiche.
Il contenuto nell'HTML grezzo si indicizza più velocemente. Se il tuo H1, meta description, e primo paragrafo sono nell'HTML iniziale, Googlebot può indicizzarli immediatamente. Se appaiono solo dopo l'esecuzione di JavaScript, l'indicizzazione attende la coda di rendering. Su un sito con 10.000 pagine, quel ritardo può essere di giorni o settimane.
Gli errori JavaScript bloccano l'indicizzazione. Se la tua pagina genera un errore di console durante il rendering, Googlebot potrebbe vedere una pagina bianca. Il nostro simulatore esegue la pagina e cattura i log della console. Un errore come "Uncaught TypeError: Cannot read property 'map' of undefined" può impedire a l'intera pagina di renderizzarsi.
Il budget di rendering è finito. Google alloca un budget di crawl e un budget di rendering per sito. Se il rendering della tua homepage impiega 10 secondi, Google potrebbe renderizzarla meno spesso rispetto ai competitor le cui pagine si renderizzano in due secondi. Riportiamo il tempo di rendering così sai se sei sopra budget.
Risorse bloccate e impatto sull'indicizzazione
Una risorsa bloccata è qualsiasi file—CSS, JavaScript, immagine, font—che la pagina ha provato a caricare ma ha ricevuto uno status code 4xx o 5xx, o che è stata bloccata da robots.txt o dalla politica CORS. Googlebot ignora il file e continua il rendering, ma il file mancante può rompere il layout o la funzionalità.
I file CSS critici controllano il layout. Se styles.css è bloccato da robots.txt, Googlebot renderizza la pagina senza stili, il che significa che il contenuto potrebbe essere nascosto da stati CSS predefiniti—accordion collassati, tab nascosti, modal fuori schermo. Il contenuto esiste nel DOM ma non è visibile, quindi Google potrebbe non indicizzarlo.
I file JavaScript critici controllano l'interattività e il fetching dei dati. Se app.js è bloccato, il routing lato client si rompe, e i link dentro l'app non funzionano. Se api-client.js è bloccato, la tua pagina di prodotto non può recuperare i dati di prodotto, quindi Googlebot vede uno spinner di caricamento invece dei dettagli del prodotto.
Le immagini e i font sono meno critici. Un'immagine mancante non rompe l'indicizzazione, ma potrebbe danneggiare i segnali di esperienza dell'utente se il layout della pagina si sposta o appaiono placeholder. Un font mancante cade indietro ai font di sistema, che va solitamente bene per l'indicizzazione.
Il nostro simulatore elenca ogni risorsa, il suo URL, il codice di stato, e il tipo. Se una risorsa ha fallito, mostriamo l'errore. Se è stata bloccata da robots.txt, la segnaliamo. Usa questa lista per correggere i blocchi a livello di server o nel tuo file robots.txt.
Indicizzazione mobile-first e viewport
Nel 2026, Google usa l'indicizzazione mobile-first per tutti i siti. Questo significa che Googlebot Mobile è il crawler primario, e la versione mobile della tua pagina determina le classifiche anche per le ricerche desktop. Se la tua pagina mobile nasconde il contenuto dietro un toggle "Leggi di più" o rimuove i widget della barra laterale, Googlebot non vede quel contenuto, e non conta verso le classifiche.
Testare con Googlebot Mobile come user-agent mostra quello che il crawler mobile vede. Renderizziamo la pagina con un viewport 375px—larghezza iPhone SE—così vedi il layout mobile. Se il tuo CSS nasconde elementi con larghezza mobile, mancano dall'HTML renderizzato. Se il tuo JavaScript carica pigrizia le immagini o il testo mentre l'utente scorre, e Googlebot non scorre, quel contenuto è invisibile.
Due fix sono comuni. Il primo è il rendering lato server o la generazione di sito statico, dove il contenuto completo è nell'HTML grezzo indipendentemente dal viewport. Il secondo è assicurare che il CSS mobile non imposti display: none su contenuto importante. Usa opacity: 0 o position: absolute; left: -9999px per l'accessibilità, ma anche quelli possono danneggiare l'indicizzazione se usati eccessivamente.
Tag meta robots e header X-Robots-Tag
Anche se una pagina carica con successo, un tag <meta name="robots" content="noindex"> o un header HTTP X-Robots-Tag: noindex dice a Googlebot di non indicizzarla. Il nostro simulatore verifica entrambi e li riporta nel riepilogo.
I valori comuni sono noindex (non aggiungere ai risultati di ricerca), nofollow (non seguire i link su questa pagina), noarchive (non memorizzare in cache), nosnippet (non mostrare uno snippet nei risultati), e none (equivalente a noindex, nofollow). Se il tuo sito di staging accidentalmente va live con i tag noindex ancora presenti, perdi tutto il traffico di ricerca. Verificare prima del lancio cattura questo.
L'header HTTP ha precedenza sul tag HTML se entrambi sono presenti e differiscono. Una pagina con <meta name="robots" content="index"> ma X-Robots-Tag: noindex non sarà indicizzata. Il nostro simulatore mostra entrambi così puoi individuare i conflitti.
Errori comuni
- Renderizzare l'intera pagina lato client. Se l'HTML grezzo è vuoto e tutto appare dopo JavaScript, l'indicizzazione è lenta e fragile. Sposta il contenuto critico nell'HTML iniziale via rendering lato server o pre-rendering.
- Bloccare JavaScript o CSS in robots.txt. Google ha bisogno di questi file per renderizzare la pagina.
Disallow: *.jsoDisallow: *.cssrompe il rendering. Blocca questi solo se hai un buon motivo, e verifica di nuovo con il simulatore dopo. - Ignorare errori di console. Una singola eccezione non catturata può arrestare il rendering. Controlla il log della console nell'output del simulatore e correggi gli errori prima di fare il deploy.
- Testare solo con un browser, non con Googlebot. I browser sono più indulgenti di Googlebot. Una pagina che funziona in Chrome potrebbe fallire in headless Chrome a causa di polyfill mancanti o controlli user-agent. Simula Googlebot per vedere l'esperienza reale.
- Assumere che Googlebot scorri. Non lo fa. Il contenuto caricato pigrizia attivato da eventi scroll è invisibile a meno che tu non implementi Intersection Observer o carichi tutto sul rendering iniziale.
- Non testare dopo gli aggiornamenti del framework. Un aggiornamento di versione di Next.js o Gatsby può cambiare il modo in cui la generazione statica funziona. Verificare di nuovo il rendering dopo gli aggiornamenti per confermare che il contenuto è ancora nell'HTML grezzo.
Suggerimenti avanzati
- Testa lo stesso URL con Googlebot Desktop e Googlebot Mobile. Se il contenuto differisce, l'indicizzazione mobile-first potrebbe classificare la pagina diversamente da quanto ti aspetti.
- Confronta il tempo di rendering su più pagine. Se la tua homepage si renderizza in 2 secondi ma le pagine di prodotto impiegano 8 secondi, identifica la chiamata API lenta o lo script pesante e ottimizzalo.
- Controlla la sezione Visible text per la presenza di parole chiave. Se la tua parola chiave target è nella fonte HTML ma non nel testo visibile, potrebbe essere nascosta da CSS o JavaScript, il che significa che non conta verso le classifiche.
- Usa il simulatore dopo aver deployato una nuova feature. Un flusso di checkout, widget di live chat, o script di analytics può rompere il rendering se genera errori. Catturarlo post-deploy previene cali di indicizzazione.
- Se sono trovate risorse bloccate, fai un controllo incrociato con il robots.txt checker per confermare se robots.txt è la causa. Se no, controlla i log del server per errori 403 o CORS.
- Combina questo strumento con il website metadata checker per confermare che title, meta, e schema sono presenti nell'HTML renderizzato, non solo nella fonte grezza.
Dopo la simulazione, se scopri che JavaScript è richiesto per il contenuto critico, considera il passaggio al rendering lato server o alla generazione statica. Se le risorse bloccate sono il problema, aggiorna il tuo robots.txt con il robots.txt file generator. Se vuoi vedere come tutti i fattori SEO on-page—rendering, metadata, canonical, link interni—si sommano, usa il SEO checklist per un audit di 20 punti.