Tu sei qui

Recuperare uno o più siti web dall'Internet Archive Wayback Machine

Ultimo aggiornamento: 9 Luglio 2014

Premessa

La Wayback Machine è l'interfaccia web utilizzata da Internet Archive per l'estrapolazione dagli archivi dei dati riguardanti siti web. I siti archiviati rappresentano una sorta di "fermi immagine" raccolti al momento dell'acquisizione delle pagine tramite il software di indicizzazione di Internet Archive. Il nome "Wayback Machine" deriva dal termine "WABAC Machine" utilizzato in una delle storie della serie animata Rocky e Bullwinkle. Il servizio, grazie allo spider di Alexa, memorizza nel tempo i cambiamenti e le evoluzioni dei diversi siti web. Per i siti minori non ha un frequente caching, ovvero le pagine vengono memorizzate solo raramente.

Si rivela un servizio utile nei seguenti casi:

  • studio dell'evoluzione dei siti Web;
  • recupero di pagine e siti andati persi;
  • ricerca di prove una volta pubblicate e quindi cancellate.

Il servizio permette a chi ne fa uso di accedere a versioni archiviate di pagine web del passato, quello che Internet Archive chiama "un archivio tridimensionale". Milioni di siti web con i rispettivi dati (immagini, testo, documenti collegati, ecc.) sono archiviati in un gigantesco database. Non tutti i siti web sono disponibili perché molti proprietari di siti web scelgono di escludere i loro siti. Come per tutti i siti basati su dati provenienti da web crawler, nell'Internet Archive mancano vaste aree del web per una serie di ragioni tecniche. Inoltre problematiche legali varie riguardanti l'archiviazione e la copertura o meno di siti sono state riscontrate negli anni sebbene queste non siano il risultato di azioni deliberate.

L'uso del termine "Wayback Machine" nel contesto di Internet Archive è diventato così comune che "Wayback Machine" e "Internet Archive" sono quasi sinonimi nella cultura popolare; ad esempio, nella serie televisiva Law and Order: Criminal Intent (nell'episodio "Legacy", andato in onda per la prima volta il 3 agosto 2008, intitolato Amore virtuale nella controparte in italiano), uno dei protagonisti dell'episodio utilizza la "Wayback Machine" per scovare la copia archiviata di un sito web. Le "istantanee" dei siti archiviate durante i vari passaggi del crawler diventano accessibili pubblicamente di solito dopo 6-18 mesi.

(fonte: http://it.wikipedia.org/wiki/Internet_Archive#Wayback_Machine)

Alcune considerazioni prima di iniziare

Per prima cosa, l'effettiva possibilità di recuperare un sito dalla Wayback Machine dipende dal fatto se tale "macchina del tempo" ha o meno memorizzato il sito che ci interessa, nella data che ci interessa e facendone una copia completa (quindi di tutte le pagine linkate, di tutti i fogli di stile, le immagini, i javascript, le applet, e quant'altro occorra). Secondariamente, se il sito in questione era un sito "statico", cioè composto di file html scritti a mano o con un editor, il recupero può effettivamente restituirci il sito "così come era", se invece il sito era "dinamico", ad esempio creato con un cms collegato a un database, tutto quello che potremo ottenere sarà un copia "statica" di tale sito, ovvero un insieme di file html a prescindere dalle pagine php o asp che li hanno generati.

Detto ciò, avendo già recuperato alcuni siti per me importanti dalla Wayback Machine, posso assicurarvi che salvare nel proprio computer e rimettere online un sito preso dalla Wayback Machine non è un lavoro né semplice né breve, ma può richiedere anche qualche giorno di lavoro e non c'è alcuna garanzia che il risultato finale sia quello desiderato. Ad esempio, i siti http://www.storia-matematica.net/ e http://www.massamarittima-toscana.net/ sono stati da me interamente recuperati dalla Wayback Machine, che originariamente si trovavano, fino a inizio 2009, all'interno del sito www.galgani.it. Aver potuto recuperare questi e altri miei lavori, ad anni di distanza dalla loro pubblicazione, dalla Wayback Machine è stata una fortuna (e anche una prova delle mie abilità tecniche).

Come salvare in locale un sito presente nella Wayback Machine

Non esiste un metodo universale per recuperare i siti dalla Wayback Machine.

In linea generale, secondo la mia esperienza, i passaggi da seguire sono:

  1. Iniziale salvataggio con wget di tutti i files del sito web che ci interessa, tramite apposite opzioni studiate appositamente per la Wayback Machine.
  2. Controllo manuale di tutte le pagine html salvate da wget
  3. Rimozione tramite regex (regular expression, espressione regolare) della Wayback Machine Toolbar da tutte le pagine
  4. Analisi del codice html di tutte le pagine salvate, per verificare quali correzioni dovranno essere apportate (con particolare attenzione a tutti i link).
  5. Creazione e applicazione di tutti i regex necessari per fare quanto deciso al punto precedente
  6. Controllo della correttezza di tutti i collegamenti interni ed esterni tramite LinkChecker
  7. Ripetizione dei punti 4, 5 e 6 finché il sito non è correttamente ripristinato
  8. Modifiche varie ed eventuali a propria discrezione, in base a quel che faremo del sito salvato

Un esempio concreto?

Dalla Wayback Machine ho recuperato il sito: https://web.archive.org/web/20080603013541/https://www.galgani.it/massamarittima/index.asp

Il comando wget che ho eseguito è stato:

wget -e robots=off -r -nH --cut-dirs=3 --page-requisites --convert-links --adjust-extension --user-agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" --timestamping --accept-regex=/massamarittima/ https://web.archive.org/web/20080603013541/https://www.galgani.it/massamarittima/index.asp

Sul mio computer, e con la connessione ADSL 20Mega di cui dispongo, il tempo di esecuzione è stato di ben 8h 39m 24s!

Per ogni file scaricato, ho rimosso le stringhe seguenti usando sed:

<script type="text/javascript" src="https://web.archive.org/static/js/analytics.js" ></script>
<link type="text/css" rel="stylesheet" href="https://web.archive.org/static/css/banner-styles.css"/>

Ho rimosso tutto ciò che seguiva il tag </html>, ovvero informazioni del tipo:

<!--
     FILE ARCHIVED ON 4:47:54 Feb 12, 2008 AND RETRIEVED FROM THE
     INTERNET ARCHIVE ON 21:44:54 Apr 2, 2014.
     JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.

     ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
     SECTION 108(a)(3)).
-->

Ho rimosso il codice della WAYBACK TOOLBAR, ovvero quello compreso tra le stringhe:

<!-- BEGIN WAYBACK TOOLBAR INSERT -->
...
<!-- END WAYBACK TOOLBAR INSERT -->

Ho rimosso vari script indesiderati, ad esempio:

<script language="JavaScript" src="https://web.archive.org/web/20080212044754js_/https://www.galgani.it/public/counter_massa_marittima.asp" type="text/JavaScript"></script>
<script language="JavaScript" src="https://web.archive.org/web/20080212044754js_/https://www.galgani.it/public/counter_complessivo.asp" type="text/JavaScript"></script>
<script language="JavaScript" src="https://web.archive.org/web/20080212044754js_/http://lnx.galgani.it/stats/php-stats.js.php" type="text/JavaScript"></script>

Ho poi trasformato tutti i link assoluti in relativi usando substitution permesse da Perl (con un approccio lazy anziché greedy):

perl -pe 's/http.*?massamarittima\///' temp.html > temp.html.new

Ho fatto in modo che tutti i collegamenti interni puntassero a file .html anziché .asp:

perl -pe 's/\.asp/\.html/' temp.html > temp.html.new

e infine ho rinominato tutti i file da .asp a .html.

Riassumendo...

Ho rinominato tutti i files con un comando Bash del tipo:

for file in *.asp.html; do
    mv "$file" "`basename $file .asp.html`.html"
done

Ho poi creato (e reso eseguibile) un file pulisci.sh così:

#!/bin/bash
sed -i '/<script type="text\/javascript" src="https:\/\/web.archive.org\/static\/js\/analytics.js" ><\/script>/d' $1
sed -i '/<link type="text\/css" rel="stylesheet" href="https:\/\/web.archive.org\/static\/css\/banner-styles.css"\/>/d' $1
sed -i '/<\/html>/q' $1
sed -i '/<!-- BEGIN WAYBACK TOOLBAR INSERT -->/,/<!-- END WAYBACK TOOLBAR INSERT -->/d' $1
sed -i '/<script.*counter_massa_marittima\.asp.*\/script>/d' $1
sed -i '/<script.*counter_complessivo\.asp.*\/script>/d' $1
sed -i '/<script.*php-stats\.js\.php.*\/script>/d' $1
perl -pe 's/http.*?massamarittima\///' $1 > $1.new
mv $1.new $1
perl -pe 's/\.asp/\.html/' $1 > $1.new
mv $1.new $1

ed ho eseguito:

for file in *.html; do
    ./pulisci.sh "$file";
    echo "$file fatto";
done

Fin qui ho dato per scontato che tutti i files html fossero in un'unica cartella, ma così non è stato: il procedimento va ripetuto per ogni cartella oppure bisogna usare una procedura ricorsiva con il comando find.

FINE DEGLI SCRIPT, ho poi dovuto controllare manualmente tutti i files.

Ulteriori correzioni successive:
* correzione manuale di diversi link
* cambio della codifica, con:

for file in *.html; do
    perl -pe 's/charset=iso-8859-1/charset=utf-8/' $file > $file.new
    mv $file.new $file
    echo "$file fatto"
done

* controllo di tutti i links con linkchecker: http://wummel.github.io/linkchecker/

Buon recupero dei vostri siti... e soprattutto buono studio e buona fortuna per riuscirvi ;)

Francesco Galgani,
9 luglio 2014

Classificazione: