robots.txt per il Web Scraping: Cosa Vincola, Cosa No

robots.txt è una convenzione, non un contratto - e non un blocco. Ecco cosa chiede effettivamente a uno scraper, cosa non può imporre e come rispettarlo pur ottenendo dati.

Ogni conversazione sull'etica dello scraping inizia con robots.txt, e la maggior parte di esse sbaglia in una delle due direzioni - trattandolo come una legge per cui verrai arrestato se la infrangi, o come un rumore che puoi ignorare completamente. Non è né l'una né l'altra. robots.txt è una convenzione volontaria che indica ai bot ben educati quali percorsi un sito preferirebbe che lasciassero in pace. Sapere esattamente cosa vincola e cosa no è ciò che separa un'operazione di dati professionale da una sconsiderata. Questa è una guida per i praticanti, e una nota iniziale: questa è informativa, non un consiglio legale.

Cos'è effettivamente robots.txt

robots.txt implementa il Robots Exclusion Protocol, standardizzato nel 2022 come RFC 9309. È un file di testo semplice che si trova alla radice di un dominio - https://example.com/robots.txt - con un file per dominio o sottodominio. È opzionale: un 404 significa semplicemente che il sito non ha file e non ha espresso preferenze. Fondamentalmente, è una richiesta, non una barriera. Nulla nel servire un robots.txt impedisce tecnicamente l'accesso; si basa sulla buona fede dei bot che lo leggono.

Leggerlo è una singola richiesta - fallo prima di eseguire qualsiasi crawling, ogni volta:

# Just read it
curl -s https://example.com/robots.txt

# Through a proxy, as your scraper would see it
curl -s -x http://USER:PASS@gate.quantumproxies.io:8000 https://example.com/robots.txt

Le direttive che contano

Il vocabolario è ridotto. Impara queste e potrai leggere qualsiasi robots.txt a colpo d'occhio:

Un avvertimento sulla sintassi: i caratteri jolly * e $ nei modelli di percorso non sono nello standard originale, ma ogni motore principale li rispetta, quindi Disallow: /*.pdf$ è comune ed efficace nella pratica.

import urllib.robotparser as rp

# Parse robots.txt and check a URL for your user agent
robots = rp.RobotFileParser()
robots.set_url("https://example.com/robots.txt")
robots.read()

UA = "MyResearchBot/1.0"
print(robots.can_fetch(UA, "https://example.com/products"))  # True / False
print(robots.crawl_delay(UA))                                 # seconds, or None
Diagramma a due colonne che contrasta cosa è robots.txt (una convenzione, un segnale di frequenza) rispetto a cosa non è (un contratto, un controllo di accesso)
robots.txt è un segnale da rispettare, non un blocco che ti ferma o un contratto che ti vincola da solo.

Cosa vincola - e cosa no

Questa è la parte che le persone hanno più bisogno di chiarire. robots.txt non è, di per sé, legalmente vincolante, e non è un meccanismo tecnico di controllo degli accessi - non blocca nulla. I tribunali hanno generalmente trattato i dati pubblici ben noti come pubblici. Ma 'non una legge di per sé' non è lo stesso di 'nessuna conseguenza'. Ignorare i desideri dichiarati di un sito può diventare un fattore in termini di servizio, argomenti di violazione o uso improprio del computer, invita blocchi e maggiore attenzione, ed è semplicemente una cattiva cittadinanza. La posizione pragmatica: trattare robots.txt come un minimo etico che onori, e trattare le vere questioni legali - dati personali, contratti, giurisdizione - come una questione separata da risolvere correttamente. La nostra panoramica su legalità del web scraping nel 2026 copre queste separatamente.

Il cambiamento del crawler AI

robots.txt ha assunto una seconda vita come canale di opt-out per l'addestramento AI. I siti ora aggiungono regole esplicite per gli user agent AI - GPTBot, Google-Extended, CCBot, ClaudeBot, PerplexityBot e altri - per dire 'indicizzami, ma non addestrarti su di me'. Questo è il motivo per cui i ricercatori ora sostengono che robots.txt non è più sufficiente da solo per tenere i dati pubblici fuori dai modelli: dipende interamente da ciascun crawler scegliere di obbedire, e parla solo agli agenti dichiarati e ben educati. Se operi un crawler, dichiarare un User-Agent onesto e rispettare questi opt-out è il minimo. Il file compagno emergente per l'intento opposto - invitare gli strumenti AI - è llms.txt, che trattiamo nella nostra guida a llms.txt.

# A modern robots.txt often carries AI-specific opt-outs:
#   User-agent: GPTBot
#   Disallow: /
#
#   User-agent: Google-Extended
#   Disallow: /
#
#   User-agent: *
#   Crawl-delay: 5
#   Sitemap: https://example.com/sitemap.xml
Diagramma di flusso di un crawl conforme: recupera robots.txt, abbina l'user agent, rispetta il crawl-delay, esegui lo scraping dei percorsi pubblici consentiti
Un crawl conforme legge prima il file, rispetta le direttive di frequenza e tocca solo i percorsi pubblici consentiti.

Essere un buon cittadino pur ottenendo dati

Rispettare robots.txt e raccogliere i dati pubblici di cui hai bisogno non sono in conflitto. Le discipline che ti mantengono ben accetto sono le stesse che ti mantengono non bloccato: onora Crawl-delay e dosa le tue richieste, identifica onestamente il tuo bot, cache in modo aggressivo per non ri-recuperare mai la stessa pagina e evita gli endpoint costosi che un sito sta cercando di proteggere. La norma della comunità, ben espressa nei forum, è che robots.txt esiste principalmente per scoraggiare i bot che generano traffico schiacciante - quindi non essere quel bot. La nostra guida allo scraping educato trasforma questo in regole concrete di dosaggio.

Per i team che vogliono che la conformità sia gestita di default, un Scraper API può leggere e rispettare robots.txt come parte della richiesta, insieme a un ragionevole rate limiting - quindi la buona cittadinanza è il comportamento predefinito dello strumento, non una casella di controllo che potresti dimenticare. Mantiene anche un'impronta pulita e dichiarata piuttosto che uno script grezzo che martella da un IP.

Raccogli dati pubblici nel modo conforme

Domande frequenti

robots.txt si applica legalmente al web scraping?

Non da solo. robots.txt è una convenzione volontaria (RFC 9309), non una legge o un contratto, e non blocca tecnicamente l'accesso. Ma ignorarlo può alimentare rivendicazioni di termini di servizio, violazione o uso improprio del computer e invita blocchi e controlli. Trattalo come un minimo etico da onorare e gestisci le vere questioni legali - dati personali, contratti - separatamente. Questo non è un consiglio legale.

Come leggo il robots.txt di un sito web?

Invia un HTTP GET alla radice del dominio con /robots.txt aggiunto, ad esempio https://example.com/robots.txt. cURL o qualsiasi client HTTP funziona; in Python, urllib.robotparser lo analizza e risponde can_fetch() per un dato user agent e URL. Un 404 significa che il sito non ha robots.txt e non ha dichiarato preferenze di crawling.

Cosa significa Disallow: /?

Chiede a tutti i bot corrispondenti di non eseguire il crawling di alcun percorso sul sito - l'intero dominio è off-limits su richiesta. Un Disallow: vuoto significa il contrario: tutto è consentito. Ricorda che queste sono richieste per i crawler ben educati, non barriere imposte, e che i valori dei percorsi sono sensibili alle maiuscole mentre i nomi delle direttive non lo sono.

Posso ignorare robots.txt se i dati sono pubblici?

Tecnicamente puoi, poiché non è imposto, ma generalmente non dovresti. Ignorarlo è una cattiva cittadinanza, ti fa bloccare più velocemente e può rafforzare l'argomento di un sito contro di te in una disputa. L'approccio professionale è rispettarlo, eseguire lo scraping solo dei percorsi pubblici consentiti, dosare le tue richieste e tenere i dati personali completamente fuori dall'ambito.

robots.txt è un piccolo file che porta un grande segnale: ecco come questo sito vuole essere esplorato. Leggilo prima, rispetta i percorsi e il dosaggio, dichiara chi sei, e puoi raccogliere i dati pubblici di cui hai bisogno rimanendo fermamente dalla parte giusta sia dell'etichetta che del rischio.

Prova lo Scraper API con crawling consapevole di robots