Protocollo di esclusione robot

Il protocollo di esclusione robot (in inglese Robots Exclusion Standard) indica, nel gergo di internet e più in generale del web, le regole indicate dai gestori di un sito web ai crawler che lo visitano, chiedendo di applicare restrizioni di analisi sulle pagine del sito. Esse sono contenute nel file robots.txt, ideato nel giugno 1994 con il consenso dei membri della robots mailing list (robots-request@nexor.co.uk). In questo momento non esiste un vero e proprio standard per il protocollo robots.

Il ruolo dei crawler

modifica

I web crawler sono dei software automatici programmati per effettuare ricerche ed indicizzazioni periodiche. Nella prima fase di analisi di un sito web dovrebbero controllare l'esistenza del file robots.txt ed applicare eventuali restrizioni richieste dal webmaster del sito. Non tutti i robot però ottemperano alle richieste contenute nel file robot.txt.

Standard

modifica

Quando il proprietario di un sito desidera fornire istruzioni ai robot Web, inserisce un file di testo denominato robots.txt nella radice della gerarchia del sito Web (ad es. https://www.example.com/robots.txt). Questo file di testo contiene le istruzioni in un formato specifico (vedere gli esempi di seguito). I robot che scelgono di seguire le istruzioni provano a recuperare questo file e leggono le istruzioni prima di recuperare qualsiasi altro file dal sito web. Se questo file non esiste, i robot web presumono che il proprietario del sito web non desideri porre alcuna limitazione alla scansione dell'intero sito.

Un file robots.txt su un sito web funzionerà come una richiesta che i robot indicati ignorino i file o le directory specificati durante la scansione di un sito. Ciò potrebbe derivare, ad esempio, da una preferenza per la privacy dai risultati dei motori di ricerca o dalla convinzione che il contenuto delle directory selezionate potrebbe essere fuorviante o irrilevante per la categorizzazione del sito nel suo insieme, o dal desiderio che un'applicazione funzioni solo su determinati dati. I collegamenti alle pagine elencate in robots.txt possono ancora essere visualizzati nei risultati di ricerca se sono collegati a una pagina sottoposta a scansione[1].

Un file robots.txt copre un'origine. Per i siti web con più sottodomini, ogni sottodominio deve avere il proprio file robots.txt. Se example.com avesse un file robots.txt ma a.example.com no, le regole che si applicherebbero per example.com non si applicherebbero a a.example.com. Inoltre, ogni protocollo e porta necessita del proprio file robots.txt; http://example.com/robots.txt non si applica alle pagine in http://example.com:8080/ o https://example.com/.

Alcuni dei principali motori di ricerca che seguono questo standard includono Ask[2], AOL[3], Baidu[4], DuckDuckGo[5], Google[6], Yahoo![7], e Yandex[8]. Bing non è completamente compatibile con lo standard in quanto non può ereditare le impostazioni dal carattere jolly (*)[9].

Il gruppo di volontari Archive Team ignora esplicitamente e abitualmente il file robots.txt, considerandolo uno standard obsoleto che ostacola gli sforzi di archiviazione web. Secondo il responsabile del progetto Jason Scott, "deselezionato e lasciato da solo, il file robots.txt non garantisce il mirroring o il riferimento per elementi che potrebbero avere un uso generale e un significato al di fuori del contesto del sito web"[10].

Per alcuni anni Internet Archive non ha eseguito la scansione dei siti con robots.txt, ma nell'aprile 2017 ha annunciato che non avrebbe più rispettato le direttive nei file robots.txt[11]. "Nel tempo abbiamo osservato che i file robots.txt destinati ai crawler dei motori di ricerca non servono necessariamente ai nostri scopi di archiviazione". Ciò era in risposta agli interi domini che venivano taggati con robots.txt quando il loro contenuto è diventato obsoleto[12].

Sicurezza

modifica

Nonostante l'uso dei termini "allow" e "disallow", il protocollo è puramente consultivo e si basa sulla conformità del web robot[13]. È improbabile che i robot web dannosi rispettino il file robots.txt; alcuni potrebbero persino utilizzare il file robots.txt come guida per trovare link non consentiti e accedervi direttamente. Anche se a volte si afferma che questo sia un rischio per la sicurezza[14], questo tipo di sicurezza attraverso l'oscurità è scoraggiato dagli organismi di normalizzazione. Il National Institute of Standards and Technology (NIST) negli Stati Uniti si è espresso specificamente contro questa pratica: "La sicurezza del sistema non dovrebbe dipendere dalla segretezza dell'implementazione o dei suoi componenti"[15]. Nel contesto dei file robots.txt, la sicurezza attraverso l'oscurità non è consigliata come tecnica di sicurezza[16].

Alternative

modifica

Molti robot trasmettono anche uno speciale user-agent al server web durante il recupero del contenuto[17]. Un amministratore web potrebbe anche configurare il server in modo che restituisca automaticamente un errore (o trasmetta contenuto alternativo) quando rileva una connessione utilizzando uno dei robot[18][19].

Alcuni siti, come Google, ospitano un file humans.txt che mostra informazioni destinate alla lettura da parte degli esseri umani[20]. Alcuni siti come GitHub reindirizzano human.txt a una pagina di informazioni[21].

In precedenza Google aveva ospitato un file di scherzo su /killer-robots.txt per istruire il Terminator a non uccidere i fondatori dell'azienda Larry Page e Sergey Brin[22][23].

Formato del file robots.txt

modifica

Il file utilizza un protocollo molto semplice che permette di definire il robot al quale applicare la regola e le pagine e directory da non indicizzare.

Ogni riga del file contiene un record. Ogni record ha la seguente sintassi:

<campo> : <valore>

I campi disponibili sono:

User-Agent
il valore di questo campo contiene il nome del robot che si deve attenere alle restrizioni. Con il carattere * la regola viene applicata a qualsiasi robot.
Disallow
il valore di questo campo contiene le pagine del sito che devono essere escluse dai robot durante l'indicizzazione. Si può indicare un URL specifico o una serie di URL appartenenti ad un pattern.

Per ogni User-Agent è possibile specificare una o più restrizioni tramite Disallow.

Ecco alcuni esempi[6] classici dell'utilizzo del file robots.txt.

Per permettere l'accesso a tutto il sito web, non indicare nulla nella direttiva Disallow. Alcuni crawler supportano anche la direttiva Allow.

User-agent: *
Disallow:

Per bloccare un intero sito, utilizza una barra.

User-agent: *
Disallow: /

Per bloccare una directory e il relativo contenuto, fai seguire il nome della directory da una barra.

User-agent: *
Disallow: /private_directory/

Per bloccare una pagina, indica tale pagina.

User-agent: *
Disallow: /private_file.html

Per segnalare il file sitemap del sito.

Sitemap: http://www.example.com/sitemap.xml

Esiste inoltre la direttiva Crawl-Delay, che permette di limitare la velocità di accesso al server da parte dei crawler che la supportano, indicando il minimo tempo di attesa, in secondi, tra due richieste consecutive.

Se, al posto dell'asterisco, si inserisce una stringa user-agent, nella direttiva User-Agent, le regole verranno limitate al crawler identificato da tale user-agent.

Estensione Standard

modifica

Su Extended Standard for Robot Exclusion sono stati proposti due nuovi parametri: Request-rate e Visit-time:

User-agent: *
Disallow: /private_directory/  # Blocca la directory /private_directory/
Request-rate: 1/5              # Visita al massimo una pagina ogni 5 secondi
Visit-time: 0600-0845          # Visita soltanto tra le 6:00 AM e le 8:45 AM UT (GMT)

Estensioni non Standard

modifica

Direttiva sul ritardo della scansione

modifica

Il valore del ritardo della ricerca per indicizzazione è supportato da alcuni crawler per limitare le loro visite all'host. Poiché questo valore non fa parte dello standard, la sua interpretazione dipende dal crawler che lo legge. Viene utilizzato quando il burst multiplo di visite da parte dei bot sta rallentando l'host. Yandex interpreta il valore come il numero di secondi da attendere tra le visite successive[8]. Bing definisce il ritardo della scansione come la dimensione di una finestra temporale (da 1 a 30 secondi) durante la quale BingBot accederà a un sito web solo una volta. Google fornisce un'interfaccia nella sua console di ricerca per i webmaster, per controllare le visite successive di GoogleBot[24].

User-agent: bingbot
Allow : /
Crawl-delay: 10

Direttiva Allow

modifica

Alcuni dei principali crawler supportano una direttiva Allow, che può contrastare una direttiva Disallow[25][26] successiva. Ciò è utile quando si dice ai robot di evitare un'intera directory ma si desidera comunque che alcuni documenti HTML in quella directory vengano sottoposti a scansione e indicizzati. Mentre per l'implementazione standard vince sempre il primo pattern robots.txt corrispondente, l'implementazione di Google differisce in quanto Allow, ai pattern con caratteri uguali o superiori nel percorso della direttiva, vince su un pattern Disallow corrispondente[27]. Bing utilizza la direttiva Allow o Disallow, a seconda di quale sia più specifica, in base alla lunghezza, come Google[9].

Per essere compatibile con tutti i robot, se si desidera consentire singoli file all'interno di una directory altrimenti non consentita, è necessario inserire prima le direttive Allow, seguite da Disallow, ad esempio:

Allow: /directory1/myfile.html
Disallow: /directory1/

Questo esempio disabiliterà qualsiasi cosa in /directory1/ eccetto /directory1/myfile.html, poiché quest'ultimo corrisponderà per primo. L'ordine è importante solo per i robot che seguono lo standard; nel caso dei bot Google o Bing, l'ordine non è importante.

Sitemap

modifica

Alcuni crawler supportano una direttiva Sitemap, che consente più Sitemap nello stesso robots.txt nella forma[28] Sitemap: full-url

Per esempio:

Sitemap: http://www.example.com/sitemap.xml

Alcuni crawler (Yandex) supportano una direttiva Host, che consente ai siti web con più mirror di specificare il proprio dominio preferito[29]:

Host: hosting.example.com

Questo non è supportato da tutti i crawler.

Corrispondenza "*" universale

modifica

Lo standard di esclusione dei robot non menziona il carattere "*" nella dichiarazione[30] Disallow:

Meta tag e intestazioni

modifica

Oltre ai file robots.txt a livello di root, le direttive di esclusione dei robot possono essere applicate a un livello più granulare tramite l'uso di meta tag Robots e intestazioni HTTP X-Robots-Tag. Il meta tag robots non può essere utilizzato per file non HTML come immagini, file di testo o documenti PDF. D'altra parte, l'X-Robots-Tag può essere aggiunto a file non HTML utilizzando file.htaccess e httpd.conf[31].

Un meta tag "noindex"
<meta name="robots" content="noindex" />
Un'intestazione di risposta HTTP "noindex"
X-Robots-Tag: noindex

X-Robots-Tag è efficace solo dopo che la pagina è stata richiesta e il server ha risposto, e il meta tag robots è efficace solo dopo che la pagina è stata caricata, mentre robots.txt è efficace prima che la pagina venga richiesta. Pertanto, se una pagina viene esclusa da un file robots.txt, tutti i meta tag robots o le intestazioni X-Robots-Tag vengono effettivamente ignorati perché il robot non li vedrà in primo luogo[31].

Utilizzo

modifica

Una volta che il file robots.txt è stato creato deve essere inserito nella directory principale del dominio ed avere il nome esatto "robots.txt". Se viene memorizzato in una directory diversa, i robot non lo troveranno in quanto di default effettuano la ricerca nella directory principale del dominio.

Se non si ha accesso alla directory principale di un dominio, è possibile limitare l'accesso utilizzando il meta tag Robots.

  1. ^ Uncrawled URLs in search results, su youtube.com, YouTube, Oct 5, 2009. URL consultato il 29 dicembre 2013 (archiviato il 6 gennaio 2014).
  2. ^ About Ask.com: Webmasters, su About.ask.com. URL consultato il 16 febbraio 2013.
  3. ^ About AOL Search, su Search.aol.com. URL consultato il 16 febbraio 2013 (archiviato dall'url originale il 13 dicembre 2012).
  4. ^ Baiduspider, su Baidu.com. URL consultato il 16 febbraio 2013.
  5. ^ DuckDuckGo Bot, su DuckDuckGo.com. URL consultato il 25 aprile 2017.
  6. ^ a b Webmasters: Robots.txt Specifications, in Google Developers. URL consultato il 16 febbraio 2013 (archiviato il 15 gennaio 2013).
  7. ^ Submitting your website to Yahoo! Search, su help.yahoo.com. URL consultato il 16 febbraio 2013 (archiviato il 21 gennaio 2013).
  8. ^ a b Using robots.txt, su Help.yandex.com. URL consultato il 16 febbraio 2013 (archiviato il 25 gennaio 2013).
  9. ^ a b Robots Exclusion Protocol: joining together to provide better documentation, su Blogs.bing.com. URL consultato il 16 febbraio 2013 (archiviato il 18 agosto 2014).
  10. ^ Jason Scott, Robots.txt is a suicide note (TXT), su archiveteam.org, Archive Team. URL consultato il 18 febbraio 2017 (archiviato il 18 febbraio 2017).
  11. ^ (EN) Robots.txt meant for search engines don't work well for web archives | Internet Archive Blogs, su blog.archive.org. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 4 dicembre 2018).
  12. ^ (EN) Brad Jones, The Internet Archive Will Ignore Robots.txt Files to Maintain Accuracy, in Digital Trends, 24 aprile 2017. URL consultato l'8 maggio 2017 (archiviato il 16 maggio 2017).
  13. ^ Block URLs with robots.txt: Learn about robots.txt files, su support.google.com. URL consultato il 10 agosto 2015 (archiviato il 14 agosto 2015).
  14. ^ Robots.txt tells hackers the places you don't want them to look, in The Register. URL consultato il 12 agosto 2015 (archiviato il 21 agosto 2015).
  15. ^ Guide to General Server Security (PDF), su csrc.nist.gov, National Institute of Standards and Technology, luglio 2008. URL consultato il 12 agosto 2015 (archiviato l'8 ottobre 2011).
  16. ^ Sverre H. Huseby, Innocent Code: A Security Wake-Up Call for Web Programmers, John Wiley & Sons, 2004, pp. 91–92, ISBN 9780470857472. URL consultato il 12 agosto 2015 (archiviato il 1º aprile 2016).
  17. ^ List of User-Agents (Spiders, Robots, Browser), su user-agents.org. URL consultato il 29 dicembre 2013 (archiviato il 7 gennaio 2014).
  18. ^ Access Control - Apache HTTP Server, su httpd.apache.org. URL consultato il 29 dicembre 2013 (archiviato il 29 dicembre 2013).
  19. ^ Deny Strings for Filtering Rules : The Official Microsoft IIS Site, su iis.net, 6 novembre 2013. URL consultato il 29 dicembre 2013 (archiviato il 1º gennaio 2014).
  20. ^ Google humans.txt (TXT), su google.com. URL consultato il 3 ottobre 2019.
  21. ^ Github humans.txt (TXT), su github.com. URL consultato il 3 ottobre 2019.
  22. ^ (EN) Lily Hay Newman, Is This a Google Easter Egg or Proof That Skynet Is Actually Plotting World Domination?, su Slate Magazine, 3 luglio 2014. URL consultato il 3 ottobre 2019.
  23. ^ /killer-robots.txt (TXT), su google.com, 10 gennaio 2018. URL consultato il 25 maggio 2018 (archiviato il 10 gennaio 2018).
  24. ^ (EN) Change Googlebot crawl rate - Search Console Help, su support.google.com. URL consultato il 22 ottobre 2018 (archiviato il 18 novembre 2018).
  25. ^ Webmaster Help Center - How do I block Googlebot?, su google.com. URL consultato il 20 novembre 2007 (archiviato il 1º agosto 2010).
  26. ^ How do I prevent my site or certain subdirectories from being crawled? - Yahoo Search Help, su help.yahoo.com. URL consultato il 20 novembre 2007 (archiviato il 13 ottobre 2007).
  27. ^ Google's Hidden Interpretation of Robots.txt, su blog.semetrical.com. URL consultato il 15 novembre 2010 (archiviato il 20 novembre 2010).
  28. ^ Yahoo! Search Blog - Webmasters can now auto-discover with Sitemaps, su ysearchblog.com. URL consultato il 23 marzo 2009 (archiviato dall'url originale il 5 marzo 2009).
  29. ^ Yandex - Using robots.txt, su help.yandex.com. URL consultato il 13 maggio 2013 (archiviato il 9 maggio 2013).
  30. ^ Robots.txt Specifications, su Google Developers. URL consultato il 15 febbraio 2020.
  31. ^ a b Robots meta tag and X-Robots-Tag HTTP header specifications - Webmasters — Google Developers, su developers.google.com. URL consultato il 17 agosto 2013 (archiviato l'8 agosto 2013).

Voci correlate

modifica

Altri progetti

modifica

Collegamenti esterni

modifica