Scopri quali crawler AI visitano davvero il tuo sito

Il tuo robots.txt dice quali crawler AI possono leggere il tuo sito. Il tuo log di accesso dice quali l’hanno fatto, con che frequenza e cosa hanno ricevuto in risposta. Questa guida mostra dove trovare quel log, come contare le visite dei crawler AI con pochi comandi di shell e come distinguere un crawler vero da uno che ne prende solo in prestito il nome.

Tipo di sito

Perché conta chi visita davvero

Un assistente AI può citare solo una pagina che uno dei suoi crawler ha letto. Se nessuno di loro ha scaricato la tua pagina dei prezzi, nessuna risposta la citerà, per quanto sia scritta bene.

Il tuo robots.txt, e la tabella dei bot AI in un report SagBot, dicono quali crawler possono leggere il tuo sito. Non dicono quali sono passati. Il log di accesso del tuo server sì: ogni richiesta, con l’indirizzo da cui proviene, la pagina, il codice di stato e lo user agent che identifica il crawler.

Quali crawler AI esistono e perché arrivano

I crawler AI arrivano per uno di tre motivi. I crawler di addestramento raccolgono pagine per addestrare i modelli. I crawler di ricerca costruiscono l’indice in cui un assistente cerca quando risponde. Gli agenti su richiesta dell’utente scaricano una pagina in tempo reale perché qualcuno ha appena chiesto all’assistente qualcosa al riguardo. Le visite degli ultimi due tipi sono quelle che possono portare a una citazione.

OpenAI invia GPTBot per l’addestramento, OAI-SearchBot per la ricerca e ChatGPT-User per le richieste in tempo reale. Anthropic invia ClaudeBot, Claude-SearchBot e Claude-User; Perplexity invia PerplexityBot e Perplexity-User. Meta usa meta-externalagent, meta-webindexer e meta-externalfetcher, Amazon usa Amazonbot, Amzn-SearchBot e Amzn-User, e Mistral e DuckDuckGo inviano MistralAI-User e DuckAssistBot. Bytespider (ByteDance) e CCBot (Common Crawl, un archivio aperto su cui sono addestrati molti modelli) raccolgono dati di addestramento.

Due nomi che non troverai in un log: Google-Extended e Applebot-Extended sono regole del robots.txt, non crawler. Google scarica le pagine con Googlebot e Apple con Applebot; le regole Extended decidono solo se ciò che hanno scaricato può essere usato per l’AI. L’agente di Google per le richieste in tempo reale degli utenti, Google-Agent, compare invece con il suo nome.

1. Trova il tuo log di accesso

Sul tuo server il log è un semplice file di testo. nginx scrive /var/log/nginx/access.log. Apache scrive /var/log/apache2/access.log su Debian e Ubuntu, e /var/log/httpd/access_log su Red Hat, Rocky e Alma. I giorni precedenti vengono ruotati in file numerati o datati accanto a esso, i più vecchi compressi come .gz.

Su un hosting condiviso o gestito, cerca nel pannello di hosting i log di accesso grezzi e scaricali. Alcuni hosting conservano solo pochi giorni, quindi salvali regolarmente se vuoi una visione più lunga.

Dietro Cloudflare, apri AI Crawl Control per il tuo dominio nella dashboard. È disponibile su tutti i piani e mostra le richieste per crawler AI, i loro codici di stato e i percorsi più richiesti, senza alcun file di log; sul piano gratuito le metriche coprono le ultime 24 ore. Per le righe di richiesta grezze, Logpush le esporta in uno storage a tua scelta. Cloudflare vede solo gli hostname in proxy (la nuvola arancione); i record solo DNS vanno direttamente al tuo server.

Su Vercel, la pagina Logs del progetto mostra le richieste recenti con il loro user agent, per un’ora su Hobby e per un giorno su Pro. Un log drain (Pro ed Enterprise) invia ogni richiesta, compresi i file statici, a uno storage a tua scelta.

2. Verifica che il log registri lo user agent

È lo user agent a identificare il crawler, quindi ogni riga deve contenerlo. nginx e Apache hanno entrambi un formato chiamato combined che chiude ogni riga con il referrer e lo user agent tra virgolette. nginx lo usa a meno che tu non ne scelga un altro; Apache lo definisce, e la tua riga CustomLog decide se viene usato.

Guarda le ultime righe del log con il primo comando qui sotto. Se ognuna termina con il nome di un browser o di un bot tra virgolette, sei a posto. Se le righe terminano con lo stato e un numero di byte, il server scrive nel Common Log Format, che non contiene lo user agent: imposta combined sulla riga access_log (nginx) o sulla riga CustomLog (Apache), come qui sotto, e ricarica il server.

I comandi dei passaggi successivi presuppongono il layout combined. Se usi un tuo log_format o LogFormat, mantieni $http_user_agent o %{User-Agent}i come ultimo campo tra virgolette, oppure adatta i comandi.

tail -n 3 /var/log/nginx/access.log
access_log /var/log/nginx/access.log combined;
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined

3. Conta le visite per crawler AI

Incolla il primo blocco in una shell sul server. Imposta BOTS con i nomi dei crawler AI della tabella dei bot AI di SagBot e conta le richieste per crawler nel log corrente. Cambia il percorso se il tuo è diverso, per esempio /var/log/apache2/access.log.

Il secondo blocco fa lo stesso sui file ruotati, compressi o no; eseguilo nella stessa shell, così BOTS resta impostata. Spesso in cima alla lista ci sono i crawler di addestramento. Le visite dei crawler di ricerca e degli agenti su richiesta dell’utente sono quelle legate alle risposte, quindi vale la pena accorgersi quando mancano.

BOTS='GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User'
BOTS="$BOTS|PerplexityBot|Perplexity-User|Google-Agent|Applebot|Bytespider|CCBot"
BOTS="$BOTS|meta-externalagent|meta-webindexer|meta-externalfetcher|Amazonbot"
BOTS="$BOTS|Amzn-SearchBot|Amzn-User|MistralAI-Training|MistralAI-Index"
BOTS="$BOTS|MistralAI-User|DuckAssistBot"
awk -F'"' '{print $6}' /var/log/nginx/access.log \
  | grep -Eo "$BOTS" | sort | uniq -c | sort -rn
zgrep -hE "${BOTS:?}" /var/log/nginx/access.log* \
  | awk -F'"' '{print $6}' | grep -Eo "$BOTS" | sort | uniq -c | sort -rn

4. Verifica che un crawler sia autentico

Chiunque può inviare una richiesta il cui user agent dice GPTBot, e gli scraper lo fanno. Per fidarti di una visita, confronta l’indirizzo da cui proviene con l’elenco pubblicato dal gestore stesso. Il primo comando qui sotto elenca gli indirizzi che si sono presentati come GPTBot; sostituiscilo con qualsiasi altro nome.

OpenAI, Anthropic, Perplexity, Amazon, Apple e Common Crawl pubblicano gli intervalli IP dei loro crawler nella documentazione dei loro bot. Google e Bing si possono verificare anche con il DNS inverso: l’indirizzo deve risolversi in un nome googlebot.com, google.com o googleusercontent.com per Google, o search.msn.com per Bing, e quel nome deve risolversi di nuovo nello stesso indirizzo. Il secondo blocco mostra il controllo con l’indirizzo di esempio fornito da Google. Apple (applebot.apple.com) e Common Crawl (crawl.commoncrawl.org) superano lo stesso test.

Meta e ByteDance non pubblicano alcun elenco di indirizzi al momento in cui scriviamo, quindi le loro visite si possono contare ma non verificare.

awk '/GPTBot/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
host 66.249.66.1
host crawl-66-249-66-1.googlebot.com

5. Trova le pagine che falliscono con i crawler AI

Un crawler che riceve un 404 o un 500 se ne va senza niente da citare, e una pagina che continua a fallire può uscire dal suo indice.

Il blocco qui sotto elenca i percorsi che hanno risposto ai crawler AI con 404 o con un qualsiasi 5xx, dai più frequenti; richiede BOTS dal passaggio di conteggio nella stessa shell. Reindirizza le pagine spostate al loro nuovo indirizzo, correggi gli errori e togli i link morti dalla sitemap e dai link interni.

awk -F'"' -v bots="${BOTS:?}" '$6 ~ bots {
  split($3, f, " "); split($2, r, " ")
  if (f[1] == 404 || f[1] >= 500) print f[1], r[2]
}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Cosa i log non possono mostrarti

Una pagina servita dalla cache di una CDN non raggiunge mai il tuo server, quindi il tuo log conta meno visite di quelle reali. Usa i log della CDN o la sua vista sui crawler per il quadro completo.

Cloudflare vede solo gli hostname in proxy. Un hostname impostato su solo DNS non mostra visite in AI Crawl Control, per quanti crawler lo raggiungano.

Il solo user agent può essere falsificato, e il Common Log Format non lo registra affatto.

I log mostrano visite, non citazioni. Che un crawler legga una pagina non significa che un assistente la citerà; quanto spesso vieni citato è una misura a parte.

Controlla chi può leggere il tuo sito

Una scansione gratuita legge il tuo robots.txt e mostra quali crawler AI lascia entrare e quali blocca, accanto al resto della preparazione del tuo sito per l’AI.

Tipo di sito

Leggi anche