Un robot è davvero quello che dice di essere? Reverse DNS e intervalli di IP pubblicati
Uno user-agent è una stringa di caratteri che qualsiasi client HTTP può dichiarare. Uno script che si presenta come «Googlebot» o «GPTBot» non è né l'uno né l'altro ai nostri occhi finché non lo abbiamo verificato. La domanda conta nei due sensi: per non bloccare un vero robot di ricerca credendo di bloccare un imitatore, e per non lasciar passare uno scraper che usurpa un nome rispettabile. I grandi editori di robot pubblicano tutti un metodo di verifica, e questi metodi differiscono.
Due famiglie di verifica
Il primo metodo è il reverse DNS: si prende l'indirizzo IP della richiesta, si chiede al DNS il nome host associato, si verifica che quel nome appartenga a un dominio annunciato dall'editore, poi si risolve quel nome in un indirizzo IP e si verifica di ritrovare l'indirizzo di partenza. Questa doppia risoluzione impedisce a un terzo di rivendicare un dominio che non controlla, anche se governa il reverse DNS del proprio indirizzo.
Il secondo metodo è l'elenco di indirizzi pubblicato: l'editore mantiene un file, in genere in JSON, con gli intervalli di IP da cui partono i suoi robot. Si verifica semplicemente che l'indirizzo della richiesta appartenga a uno di questi intervalli. È più rapido da automatizzare e non dipende dal DNS, ma l'elenco va aggiornato con regolarità.
Chi pubblica che cosa
| Operatore | Metodo | Fonte ufficiale |
|---|---|---|
| Reverse DNS (domini googlebot.com, google.com, googleusercontent.com) ed elenchi di IP in JSON | Verificare le richieste di Google | |
| OpenAI | Elenchi di IP in JSON, uno per robot | Documentazione dei robot di OpenAI, con searchbot.json, chatgpt-user.json e gptbot-ranges.txt |
| Anthropic | Elenco di IP in JSON | claude.com/crawling/bots.json |
| Perplexity | Elenco di IP in JSON | perplexitybot.json, descritto nella documentazione dei crawler |
| Bing | Reverse DNS (search.msn.com) e strumento di verifica | Come verificare Bingbot |
| Apple | Reverse DNS (applebot.apple.com) | Informazioni su Applebot |
Questi file seguono quasi tutti lo stesso schema, reso popolare da Google: un array di prefissi IPv4 e IPv6 con una data di creazione. Uno script che sa leggerne uno sa leggere gli altri. La data di creazione merita di essere letta: dice quando l'elenco è stato prodotto l'ultima volta. Un elenco datato di diversi mesi non è per questo falso (gli intervalli dei grandi editori evolvono lentamente), ma giustifica una verifica tramite reverse DNS in caso di dubbio su un indirizzo assente.
Le trappole incontrate nella pratica
- La URL giusta, la risposta sbagliata. Alcune pagine di documentazione rispondono 200 con HTML mentre ci si attendeva JSON, perché l'indirizzo è cambiato o perché un reindirizzamento porta a una home page. Uno script che testa soltanto il codice HTTP crederà di avere un elenco aggiornato. Occorre verificare il tipo di contenuto e la presenza dell'array di prefissi.
- Niente IPv6 dappertutto. Alcuni editori pubblicano soltanto intervalli IPv4. Una richiesta proveniente da un indirizzo IPv6 con lo user-agent giusto non può allora essere confermata dall'elenco, e questo non ne fa un'usurpazione. Bisogna prevedere questo caso invece di bloccare per impostazione predefinita.
- Il firewall a monte. Se un CDN o un firewall applicativo filtra il traffico prima del server, l'indirizzo visto nei log può essere quello del CDN e non quello del robot, a meno che un'intestazione non trasporti l'IP di origine. I grandi CDN ne mettono una per impostazione predefinita, ma uno strato intermedio può sovrascriverla. Vi torniamo nell'articolo sul punto cieco dei blocchi all'edge.
Il metodo, passo per passo
Per verificare a mano una richiesta sospetta:
- Rilevare l'indirizzo IP e lo user-agent nel log.
- Se l'editore pubblica un elenco, scaricare il JSON del giorno e testare l'appartenenza dell'indirizzo a uno dei prefissi. Un indirizzo fuori elenco con uno user-agent di editore è un'usurpazione, salvo il caso IPv6 non coperto.
- Se l'editore usa il reverse DNS, risolvere l'indirizzo in un nome host, verificare il dominio, poi risolvere quel nome in un indirizzo e confrontare. Le due risoluzioni devono concordare.
- Registrare il risultato. Un registro delle usurpazioni rilevate è utile per regolare il firewall e per giustificarsi, il giorno in cui chi gestisce un robot contesta un blocco.
Per automatizzare, è meglio aggiornare gli elenchi ogni giorno, conservare la versione precedente in caso di fallimento dello scaricamento, e non bloccare mai un indirizzo assente da un elenco senza averlo verificato tramite reverse DNS: gli intervalli evolvono, e un vero robot che arrivasse da un nuovo intervallo verrebbe preso per un impostore.
Che cosa dicono questi elenchi anche sui ruoli
OpenAI pubblica un elenco per robot: uno per OAI-SearchBot, uno per ChatGPT-User, uno per GPTBot. Questa separazione non è un dettaglio organizzativo. Permette di sapere, indirizzo per indirizzo, se una richiesta veniva dall'indicizzazione della ricerca, da una lettura chiesta da un utente in una conversazione, o da una raccolta per l'addestramento. Tre usi che un editore può voler trattare in modo diverso, e che un semplice filtro sulla parola «GPT» confonde. Anthropic raggruppa i suoi robot in un unico file, ma vi distingue i ruoli allo stesso modo. Un log di crawl che conserva soltanto il nome del robot perde questa informazione; un registro che conserva l'indirizzo permette di ricostruirla a posteriori.
Che fare con un impostore
Un client che si spaccia per Googlebot non è per forza malintenzionato: strumenti SEO, sonde di monitoraggio e script interni lo fanno per comodità. Ma consuma risorse e falsa le statistiche di crawl. Lo si può lasciar passare contandolo a parte nei rapporti, rallentarlo, oppure bloccarlo a livello di firewall. La scelta dipende da ciò che il sito pubblica e dal carico osservato. Una testata che vende informazione ha ragioni per bloccare; una testata che vive della propria visibilità ha ragioni per lasciar passare e misurare. Quello che non bisogna fare è bloccare un'intera firma, per esempio tutto ciò che contiene «bot», col rischio di escludere i veri robot che si voleva proprio accogliere.
Perché una testata deve occuparsene
Un sito vetrina può ignorare la questione. Una testata che punta alla citazione da parte dei motori generativi non può. Una prima ragione è difensiva: le usurpazioni di robot di IA sono frequenti, e un blocco mal regolato che le prende di mira colpisce spesso anche i veri robot. Una seconda ragione è analitica: misurare che cosa fanno davvero le IA con un sito presuppone di sapere, richiesta per richiesta, quale robot è passato, con quale ruolo, e se era autentico. Senza questa verifica, una curva di «visite di robot di IA» conta anche gli imitatori. La lettura dei log che permette questa misura è descritta in «Leggere un access log in 30 minuti», e l'elenco dei robot stessi in «robots.txt e IA».
Scritto da
Yann Léguillon
Presidente di Mazette, l'editore di Joornal. Accompagna le aziende che costruiscono la propria testata: strutturazione editoriale, visibilità nei motori di ricerca e nelle IA, produzione su larga scala.