Copiare pagine Web nella PirateBox – #loptis

Clicca qui per scaricare la versione in PDF (238 KB – 6 pagine)


L’operazione sembrerebbe a prima vista semplice: prima salvo sul mio computer la pagina web che m’interessa e poi la carico sulla penna USB della PirateBox, nella cartella opportuna. Ma, “salvare una pagina web”, non è come salvare un documento tipo Office (LibreOffice, OpenOffice, Microsoft ecc.), a meno che non si tratti di semplici pagine HTML, cosa abbastanza rara oggi.

Molti sanno che i programmi di navigazione hanno un comando di salvataggio delle pagine Web. In Firefox per esempio si trova nel menu File (il primo a destra in alto), e poi Salva pagina con nome…. D’altro canto, in realtà i siti più visitati sono quasi sempre servizi web, qualcosa di molto più complicato di una pagina HTML. Sono sistemi che consentono di elaborare le informazioni tratte da repositori sterminati: consultazione di orari ferroviari, prenotazione di viaggi, ricerca di risorse bibliografiche, servizi didattici di calcolo scientifico, giochi online di massa, social network, e via dicendo. Che cosa combina allora quel semplice comando, Salva pagina con nome…?

Un servizio web è composto da uno o più database, una moltitudine di file scritti in HTML, parti di software che girano sul computer che lo ospita (server) e parti di software che vengono caricate sul mio computer (client) insieme alle pagine stesse (spiegazione divulgativa in Due o tre cose sulle pagine Web). Quando clicco qualcosa, il software sul server esegue varie operazioni e, in maniera dipendente dalle circostanze prima compone la pagina che ho richiesto e poi me la invia, non già perfettamente confezionata ma in una forma ancora non finita, diciamo una sorta di kit, come un pacco Ikea, che contiene i pezzi dell’oggetto e gli attrezzi per farlo funzionare. Solo che qui la faccenda è un po’ più complicata, e il mio computer, una volta diligentemente montata la pagina, continua a comunicare con il server per rendere la pagina bella dinamica e interattiva ai miei occhi. Insomma, una gran lavorio, anche solo per cercare l’orario di un treno.

Supponiamo ora di avere visualizzato http://iamarf.org e di applicare il comando Salva pagina con nome… – così facendo è sicuro che salverò un file sul mio disco rigido, e sarà un file HTML, che potrò caricare nel navigatore con il comando File -> Apri file… certamente. Ma non potrò certo pensare che l’operazione di caricamento e visualizzazione di un file, come fosse un documento qualsiasi, possa dar vita a tutto quel processo!

La questione è quindi complessa. Per cercare di rispondere adeguatamente occorre specificare meglio la domanda, distinguendo almeno quattro casi.

1. Salvare l’intero sito, con tutte le sue funzionalità. Esempio: ho un blog in WordPress e lo voglio “portare” nella PirateBox, o altrove, così com’è, con tutte le sue funzionalità – scrivere post, commenti ecc.

L’essenziale

La domanda è legittima, perché la PirateBox è un web server, seppur di dimensioni minime, ma la risposta è no, non si può fare. La PirateBox fatta con il router MR3020 è troppo piccola per sostenere l’elaborazione richiesta da un blog. Se non ti interessano i dettagli puoi saltare al punto successivo.

L’approfondimento

Capita per esempio che qualcuno chieda: posso trasferire il mio blog nella PirateBox? In primo luogo è chiaro che, anche qualora riuscissi a riprodurre in toto la funzionalità del blog, il trasferimento rappresenterebbe comunque una biforcazione, dove nella versione clonata non potrebbero apparire i commenti ricevuti dal blog successivamente alla copia. Allo stesso modo, i commenti fatti alla versione clonata non potrebbero apparire su quella originale.

Ma la difficoltà sostanziale è costituita dalle risorse di cui un blog ha bisogno per funzionare. Il software preferibile per realizzare un blog è WordPress.org, sia perché è il più diffuso al mondo, sia perché ha il pregio di essere distribuito con licenza GPLv2 (o successiva), quindi si tratta di software libero. Tali caratteristiche lo rendono utilizzabile in una grande quantità di contesti, ma il caso della nostra PirateBox, basata sul router MR3020, è veramente estremo. In principio, i componenti necessari per far funzionare WordPress potrebbero essere installati nel sistema operativo OpenWRT, versione Linux “embedded” che gira nel router – ovvero un’applicazione web server, un database MySQL e il software PHP. Per il web server la scelta standard è Apache, l’applicazione di gran lunga più usata – il 70% dei nostri clic viene servito da un server Apache. Ma nel caso di contesti dalle prestazioni limitate è preferibile un’applicazione pensata per essere più leggera: è documentato anche l’uso di WordPress con Lighttpd, che è il servizio che gira nelle PirateBox. Il PHP si può installare, anche questo è documentato dal Team PirateBox, anche se in forma sperimentale. Probabilmente anche MySQL, ma di questo sono meno sicuro. In ogni caso, quandanche si riuscisse a far funzionare il tutto, la povera scatolina si inginocchierebbe sotto il peso delle elaborazioni che un tale sistema richiederebbe.

Il discorso potrebbe essere diverso utilizzando una scheda Raspberry Pi. C’è molta gente che ha messo su piccoli server con questa scheda. La cosa è certamente possibile, si tratta poi di vedere il carico di lavoro che deve sopportare – certamente non potrà essere eccessivo, ma probabilmente, nell’ambito di una classe o comunque piccolo assembramento, potrebbe essere sufficiente. Da vedere. Da vedere anche se il gioco vale la candela: c’è da lavorarci un po’, dipende dalla domanda.

2. Non pretendo che funzioni ma che si presenti completo, lasciandomi scendere in tutti i link che mi offre, mi lasci vedere i video, ascoltare i file audio e mi mostri correttamente grafica e immagini

L’essenziale

Si può fare in parte. Puoi usare l’applicazione WinHTTrack per scaricare una discreta “fotografia” del sito, potendo entrare nei link fino al livello che decidi tu. Ma, tale copia del sito, che WinHTTrack riunisce all’interno di una cartella, è fatto per essere caricata dal tuo disco rigido, non per essere servita da un server Web, quale la PirateBox è. Tu la puoi offrire attraverso la PirateBox, ma così: zippi tutta la cartella prodotta da WinTTRack in un file che poi carichi nella penna USB della PirateBox – i tuoi allievi potranno scaricarla, aprirla sui propri device, ove possibile, e poi navigare il tutto localmente. Ecco le istruzioni passo passo dove supponiamo di scaricare iamarf.org. In verde ciò che devi decidere tu, in rosso ciò che è obbligatorio per ottenere il risultato.

  • lanciare WinHTTrack
  • Next
  • Project name: iamarf (nome a piacere)
  • Directory: My Web Sites leggi quella che ti propone oppure sceglila tu, in ogni caso prendi nota di dove è collocata, per ritrovare successivamente il progetto
  • Next
  • Add URL…
  • URL:      http://iamarf.org
  • OK
  • Set options…
  • Limits
    • Maximum mirroring depth: 2
    • Maximum external depth: 1
  • Build
    • Local Structure Type (how link are saved): Html in web/, images/other in web/ – occhio a scegliere esattamente questa fra le varie simili 😉
    • DOS Names (8.3) spunta la casella
  • Next
  • Finish
  • Puoi andare a fare qualcos’altro, ci vorrà un po’ di tempo – qualche dato nell’approfondimento successivo.
  • Quando è finito, all’interno della cartella My Web Sites (o quello che è) troverai il tuo sito in una cartella di nome iamarf.org. Dentro a questa, con il navigatore, puoi aprire il file index.html e percorrere  il sito off-line fino alla profondità che avrai scelto (vedi l’approfondimento sotto).
  • Per offrire il sito così scaricato attraverso la PirateBox, vai alla fine dell’approfondimento seguente.

L’approfondimento

I software più noti per scaricare un sito Web, ambedue liberi, sono Wget e HTTrack. Il primo è un componente standard e “antico” presente in quasi tutte le distribuzioni Linux. Si può usare solo da riga di comando. È quello che uso per fare automaticamente un backup settimanale completo di questo blog. Ma qui ci concentriamo su HTTrack, perché la versione per Windows, WinHTTrack è dotata di interfaccia grafica, familiare ai più.

Chi dopo avere scaricato WinHTTrack,  fruga fra le opzioni disponibili, si accorge subito del fatto che scaricare un sito non è uno scherzo. Tant’è che per partorire questo pur smilzo tutorial è stato necessario provare una trentina di combinazioni. Tutto questo tenendo sempre conto del fatto che esplorare offline un sito scaricato in questo modo, non è come esplorare lo stesso sito servito dal web server, per i motivi che ho cercato di descrivere all’inizio.

Sarebbe dispersivo discutere tutte le opzioni possibili, ma merita soffermarsi un attimo sul concetto di profondità. Con questa si intende fino a che punto si desidera scendere nei link: cliccare su un qualsiasi link della pagina vuol dire scendere di un livello, cliccare un link sulla pagina così raggiunta, significa scendere di due livelli, e così via. In WinHTTrack la profondità è determinata da due parametri: Maximum mirroring depth e Maximum external depth. Il primo rappresenta la profondità che si vuole raggiungere all’interno del sito e il secondo la profondità che si vuole raggiungere nelle pagine esterne. Sono importanti perché hanno un effetto enorme sul comportamento del programma. La quantità di pagine che vengono scaricate cresce infatti esponenzialmente con la profondità, e basta aumentare di poco per rischiare di scaricare quasi tutta l’internet.

Scaricando per esempio http://iamarf.org [1]:

  •  con Maximum mirroring depth=2 e Maximum external depth=1  si scaricano  34 MB in 5 minuti
  • con Maximum mirroring depth=3 e Maximum external depth=1 si scaricano  414 MB in 2 ore e 40 minuti

Copiare una quantità eccessiva di un sito presenta vari svantaggi: si può facilmente occupare una quantità esagerata del proprio disco rigido, i tempi possono essere facilmente inaccettabili e si può procurare un carico eccessivo al sito che si copia. Consapevoli di tali rischi, alcuni amministratori di Web server programmano i propri sistemi in maniera da evitare tout court di essere copiati con tali sistemi, oppure, se si accorgono che qualcuno impone al server un carico eccessivo lo bloccano mettendolo in una black list. Quindi prudenza!

Per offrire il sito scaricato nella PirateBox

Il sito riprodotto off-line con il metodo che abbiamo descritto si presta ad essere usato richiamandolo con il comando File -> Apri file… del navigatore, non ad essere servito in un Web server, quale la PirateBox è. Se lo vuoi proporre attraverso la PirateBox, puoi fare quanto segue: comprimere in un file zip la cartella contenente il sito prodotta da WinHTTrack, caricare tale file zip fra i contenuti sulla penna USB della PirateBox, in modo che la gente possa fare il download del file zip e poi scompattarlo sul proprio device. Non è il massimo ma è quello che si può fare.

Ciò che ho scritto in questa sezione è ciò che ho ottenuto con le prove fatte fino ad ora, insoddisfacenti. Se scoprissi qualcosa di meglio o se qualcuno avesse qualcosa di meglio da suggerire aggiornerò.

3. Mi basta vedere la pagina web così com’è, senza pretendere di percorrere i link

L’essenziale

Per fare questo basta utilizzare il comando File -> Salva pagina con nome… che si trova nel menu del navigatore. Il nome esatto del comando può variare un po’ da un navigatore all’altro, ma è facilmente riconoscibile. Nella finestra che si apre, in basso a destra specificare l’opzione Pagina web, completa.

L’approfondimento

Questa è la cosa più semplice da fare e probabilmente anche la più ragionevole. Deve essere chiaro però che così si scarica solo la pagina che si sta guardando. Quando si esegue questa operazione si creano due oggetti sul disco rigido: file HTML e una cartella. Per esempio se la eseguo su http:/iamarf.org, e chiedo di salvare con il nome iamarf.html [2] nella cartella Scaricati, in questa ci ritrovo un file di nome iamarf.html e una cartella di nome iamarf_files, che contiene tutti file grafici richiesti per la rappresentazione di quella pagina. L’occupazione totale, in questo esempio, è data da 161 KB del file HTML e 3.1 MB dei contenuti nella cartella associata. Una cosa del tutto ragionevole. Per vederla nel navigatore si carica il file iamarf.html con il comando File -> Apri file… La pagina appare correttamente, ma che succede se si cliccano i link? Dipende: se siamo online allora i link portano alle corrispondenti pagine presenti in Internet, perché questi rimangono inalterati nel processo di copia, mentre se siamo off-line allora non portano da nessuna parte, e si riceve un messaggio di pagina non trovata.

Per offrire la pagina scaricata nella PirateBox

In questo caso è semplice, basta copiare i due oggetti, il file HTML e la cartella associata fra i contenuti nella penna USB della PirateBox e la pagina verrà servita regolarmente.

Se si prevede che possa interessante visualizzare anche alcune delle pagine che possono essere raggiunte a partire dai link, allora, in fase di preparazione dei materiali, si dovrà aver cura di scaricare separatamente anche queste.

4. Mi basta leggere i testi

Può succedere, che in certi casi una pagina contenga un testo di una certa lunghezza e che si sia interessati solo a questo. Ebbene, è qui che può tornare utile l’opzione Pagina web, solo HTML… del comando File -> Salva pagina con nome…. In questo modo ci ritroviamo solo un file in formato HTML, privato di tutta la grafica, che possiamo anche trasformare in qualche altro formato per leggerlo off-line in qualche altro modo.


[1] Questo risultato è stato ottenuto con una velocità di download di 53 Mbps, misurata con il servizio http://www.speedtest.net.

[2] Salvando, il sistema propone di usare il titolo del blog come nome del file, ovvero Laboratorio Online Permanente di Tecnologie Internet per la Scuola – #loptis.html e per la cartella: Laboratorio Online Permanente di Tecnologie Internet per la Scuola – #loptis_files. Non è saggio usare nomi così lunghi e ingarbugliati. Specialmente gli spazi bianchi possono essere particolarmente malefici in alcune circostanze. Meglio optare per nomi più semplici.

7 thoughts on “Copiare pagine Web nella PirateBox – #loptis

  1. Luisella ha detto:

    Grazie Andreas, letto tutto con grande interesse. Penso che per ora mi possa bastare la soluzione 3 che penso di sperimentare forse già domani o comunque nei prossimi giorni. E a questo punto faccio la domanda da analfabeta totale… Quando parli di copiare i file nella PirateBox intendi dire che la accendo, mi ci collego e carico i file selezionando l’apposito pulsante, oppure potrei anche più semplicemente infilare la pennetta USB della PirateBox nel mio computer, e da lì copiare i file nella directory giusta? (Spero che non sia unadomanda già fatta, o una cosa che hai già detto varie volte …). Grazie!

    1. Andreas ha detto:

      La seconda che hai detto: devi mettere la penna USB nel computer e copiare nella cartella Shared sia il file HTML che la cartella associata – non ti preoccupare, domandare sempre 🙂

  2. Claude Almansi ha detto:

    Grazie per queste chiare istruzioni, Andreas. Due domande, però:

    1. Quando Coursera sbatté fuori tramite indirizzi IP la gente che si trovava nei paesi colpiti da sanzioni commerciali US a fine gennaio (1) perché si era dimenticata di chiedere l’esenzione che aveva ottenuto EdX, diverse persone hanno cercato di aiutare i compagni bloccati a continuare di accedere ai corsi cui erano iscritti.

    Per i kouiz avevamo rinunciato dall’inizio: troppo complicato poi non sarebbe servito. Nessun problema invece per i video, file di sottotitoli e di trascrizioni: in realtà sono liberamente accessibili sul web. Idem per molte risorse, ospitate fuori dalla fetta del server amazon che Coursera padroneggia e protegge a tripla mandata (condom, spirale e cintura di castità). Le pagine statiche delle piattaforme (fatte con una specie di wiki bastardo) si scaricano benone come spieghi tu.

    Però la rogna erano le discussioni sui forum: nella sorgente, non hanno contenuti, soltanto un brulicare di script che pare vanno a pompare quei contenuti a seconda dei privilegi di visualizzazione di ciascuna categoria di utenti – è così? Comunque si salvavano male, allora abbiamo risolto abbonandoci via email alle discussioni che interessavano gli esclusi, poi gliele inoltravamo. Ma c’è una soluzione più elegante?

    2. Sul download dei blog WordPress: nella parte “Stumenti” di quelli wordpress.com, ce n’è uno per l’esportazione, dove puoi scegliere se vuoi tutto, o solo le pagine statiche, o solo i post, o solo i commenti, e da che data a che data.

    Solo che il backup così prodotto è un file XML, non molto comodo per la lettura diretta. Allora ho provato a mettere quello dei soli post del mio blog in un’app online che ti traduce l’XML in qualcosa per umani – http://codebeautify.org/xmlviewer/ . Il risultato in http://codebeautify.org/xmlviewer/c7697e è già più leggibile.

    Ma per quanto riguarda la piratebox, siamo alla frutta, mi pare: se la usi è che non c’è connessione internet, quindi non puoi nemmeno usare quell’app. Sai se ci sono convertitori dall’XML che producono un file leggibile per umani?

    (Vabbé che http://codebeautify.org/xmlviewer/c7697e mi permette di esportare il risultato come csv, che probabilmente poi lo potrei aprire in un foglio di calcolo, ma non mi sembra un formato molto piacevole)

    Ciao

    Claude

    (1) Vedi http://blog.coursera.org/post/74891215298/update-on-course-accessibility-for-students-in-cuba

    1. Andreas ha detto:

      Grazie Claude.

      1. Temo di no, almeno alla luce di una prima breve indagine che ho appena fatto. Sono andato a vedere un attimo una qualsiasi pagina di Coursera, fra quelle disponibili liberamente, precisamente The Data Scientist’s Toolbox. Una pagina (quasi) statica quindi, nemmeno un forum, che è intrinsecamente dinamico. Ebbene, nella sorgente non trovi una singola parola del testo presente nella pagina, solamente un brulicare di script, come dici tu. Ho provato anche a fare il mirroring – con valori minimi di profondità – della pagina, sia con wget che con WinHTTrack, ma il loro web server si difende bene: niente!

        Un atteggiamento tipico dei sistemi prettamente commerciali, che da una visione realmente aperta si tengono bene alla larga, anche quando la proclamano con enfasi – We envision a future where everyone has access to a world-class education – glissando sul fatto che accesso libero significa soprattutto impiego di strumenti e metodi che lo consentano.

        La mia soluzione (banale) è: starne alla larga.
        P.S. Devo anche osservare che, malgrado il titolo The Data Scientist’s Toolbox sia molto appetibile per uno con i miei interessi, il fatto che mi si offra una pagina con i titoli in italiano e i testi in inglese, si presenti davvero male. Io ci sento subito puzza di mercante un po’ troppo spregiudicato.

      2. Sì, il comando Bacheca -> Strumenti -> Esporta di WordPress.com serve proprio ad esportare i contenuti del blog, commenti compresi, in formato XML. Questo fa loro onore perché equivale a dire che tu rimani padrone dei tuoi contenuti, che puoi sempre riprodurre integralmente localmente, in un formato standard e aperto. Quindi nella sostanza siamo a posto. La fruibilità di un file XML però è una faccenda più complicata, perché esprime molto di più della semplice apparenza, anzi è una cosa diversa, perché attiene all’organizzazione dei dati. Infatti il file esportato in XML da un blog può essere buono per essere importato in un altro blog. Io usai questo metodo per trasferire questo blog da Blogspot a WordPress, dopo circa un anno di vita. Non è detto che siano sempre operazioni indolori ma ci sono buone probabilità per cavarsela.

        È difficile trovare un convertitore generale per XML, perché XML non serve a rappresentare pagine ma a trasferire qualsivoglia organizzazione di dati da un sistema all’altro, ma la cosa funziona se ambedue i sistemi capiscono lo stesso tipo di organizzazione. Esempio? I web feed, che possono essere emessi o ricevuti da applicazioni che lo vogliano fare.

        Ma ci sono dei limiti. In principio usavo il comando esporta di WordPress.com per fare i backup ma a un certo punto ha smesso di funzionare. Sono entrato in contatto con un loro ingegnere ed è emerso che il blog era troppo ricco di contenuti per poterne gestire il donwload con il loro comando. Gentilmente mi preparò lui una copia del file e poi me lo trasmise. Sebbene si fosse offerto di farlo anche altre volte, a quel punto ho preferito mettere a punto una procedura automatica che mi consente di fare settimanalmente un mirroring del blog con il comando wget in un mio server. Mi rimane così una storia che posso sempre andare a rivedere, caricando semplicemente il sito come ho descritto nel post.

      1. Claude Almansi ha detto:

        Grazie, Andreas.

        Per quanto riguarda la versione maccheronica di “The Data Scientist’s Toolbox”, non hanno colpa i traduttori volontari sfruttati da Coursera: a quelli spetta soltanto tradurre sottotitoli trascritti male e suddivisi peggio con Transifex, uno strumento inappropriato per questo, per poi spesso vederseli scombussolare ed amputare quando Coursera aggiorna il file originale.

        Il sito invece viene tradotto sempre con Transifex che per questo sarebbe idoneo, ma da professionisti pagati perché, come spiegò uno dei due responsabili delle traduzioni in un hangout: “obviously, the interface is something that’s very visible and, you know, it’s really important that the quality is super-high.” (vedi la trascrizione dell’hangout qui, da 57:28).

        Ma la cosa forse più assurda con questa traduzione di qualità super-high è accaduta l’estate scorsa con la pagina https://www.coursera.org/about/meet-our-translators che dovrebbe fare da riconoscimento per i traduttori volontari. Vista “in francese”, ciascuno dei 786 nomi erano sostituiti da translator.get(‘nom’), translator.get(‘langue’) (1)

        E quando i volontari francofoni hanno chiesto ai responsabili di Coursera di correggere la stringa, dove “name” e “language” erano stati tradotti mentre andavano lasciati tali quali, loro hanno messo settimane a farlo.

        Coursera si sta dando la zappa sui piedi con questa tesaurizzazione maniacale di contenuti e dati utenti, credo. Diverse università stanno rifiutando di partecipare al programma di “crowdtranslation” dei loro sottotitoli da parte di volontari, perché le condizioni vietano loro (alle università) di riutilizzare i sottotitoli tradotti fuori dalla piattaforma di corso. E diversi docenti, prima entusiasti di Coursera, hanno deciso di smettere di utilizzarla a causa dei tentativi maldestri di monetizzare quei contenuti: vedi http://chronicle.com/article/A-MOOC-Star-Defects-at-Least/141331/ .

        Ciao

        Claude

        (1) copia ottenuta brutalmente con “stampa come PDF” poi caricata in Google Drive: http://goo.gl/uqXarq – che poi dimostra che in realtà le protezioni di Coursera sono futili, no? Anche nel caso dei forum dai quali venivano esclusi i partecipanti dei paesi colpiti dalle sanzioni US, si sarebbe potuto fare la stessa cosa, ma era scomodo, perché “stampa come PDF” uccide i link, poi il risultato è pesante – da qui la scelta di condividere le notifiche email –

        1. Andreas ha detto:

          Interessante l’approfondimento che ne è venuto fuori. Serpeggia ovunque l’ossessione di monetizzare tutto. Appena qualcuno ritiene di avere scritto “manager” sul berretto, viene preso da un sacro furore di muover denari. Mi pare che sia un vero e proprio cancro sociale questo, altro che diffusione di cultura. Ci torneremo.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...