Il DNS è un servizio alla base di Internet. Si tratta di un server a cui il nostro computer chiede l’indirizzo IP di un sito. Infatti, i siti web sono identificati da un nome di dominio (per esempio www.andrealazzarotto.com) ma questo va tradotto in un indirizzo numerico, affinché il computer si possa collegare.
Funziona così (per semplificare):
Computer: Ciao! C’è qui il mio utilizzatore che vorrebbe visitare Google.com, mi dai l’IP?
Server DNS: Certamente, è 173.194.112.33!
In genere, il nostro router gestisce le richieste DNS verso il server che ci dà il nostro fornitore di accesso a Internet. I nostri computer fanno invece una richiesta DNS al router, quindi collegandosi ad un indirizzo tipo 192.168.0.1 (o comunque l’indirizzo del router) ed è il router che poi si arrangia a trovare la risposta prima di restituirla.
Se usiamo una VPN con Network Manager, si verifica un problema di DNS leak (è stato segnalato come bug), cioè le richieste DNS del nostro computer passano fuori dalla VPN e non sono protette! Questo diagramma spiega la situazione:
Collegamento VPN con DNS leak
Le connessioni a siti esterni (in rosso) sono protette e passano in modo criptato attraverso la VPN, che poi le fa uscire verso Internet. Però le richieste DNS sono (di default) rivolte verso il router, che ha un indirizzo di rete interna e perciò passa fuori dalla VPN.
Il router, di conseguenza, effettua una richiesta DNS al server (in blu) e quindi di fatto permette di lasciare una traccia sui siti che presumibilmente abbiamo visitato (se c’è una richiesta DNS, ci sarà un motivo…). Senza contare che, in alcuni luoghi, i DNS potrebbero essere configurati per impedirci di visualizzare determinati siti (per esempio Facebook o Youtube).
Quello che vorremmo noi, invece, è che le richieste DNS fossero protette (e quindi passassero nella VPN, non tramite il router). In attesa che il bug venga risolto, vi consiglio due metodi: uno è più facile e si può fare per ogni connessione, l’altro è globale ma leggermente più complicato.
Metodo 1: modificare le connessioni singolarmente
In attesa che il bug venga risolto, un metodo facile che ho trovato per risolvere il problema è impostare i server DNS manualmente nelle impostazioni della connessione VPN (va fatto per ogni server). Per esempio, potremmo impostare i server DNS di Google così:
Configurazione statica dei server DNS su una connessione VPN
Le impostazioni vanno fatte sicuramente per IPv4, che è ancora la versione di IP più utilizzata. Se siete su una rete che utilizza IPv6, dovrete configurare anche dei DNS per questa versione del protocollo.
Metodo 2: forzare i DNS per tutte le VPN
Si può anche fare una modifica globale al sistema che induca tutte le connessioni VPN a usare un certo DNS.
Per ottenere il risultato che vogliamo, dobbiamo modificare un file di sistema relativo alle interfacce di rete. Quando ci colleghiamo in VPN, si attiva un’interfaccia di rete virtuale chiamata tun0. Noi imposteremo i DNS su questa interfaccia.
Dovete innanzitutto aprire il file come amministratori, per esempio su Ubuntu potete usare Gedit con il comando:
sudo gedit /etc/network/interfaces
Procedete quindi ad aggiungere, in fondo al file, le righe:
# Forza i server DNS su ogni connessione VPN
iface tun0 inet manual
dns-nameservers 8.8.8.8 8.8.4.4
Salvate e uscite. Tenete presente che questa è una configurazione solo per IPv4, non per IPv6. A questo punto dovete riavviare il sistema. Non basta chiudere la connessione, bisogna proprio riavviare.
Questa modifica ha il vantaggio che non richiede assolutamente di cambiare le impostazioni delle singole connessioni, ha un effetto globale su tutte le VPN che avvierete sul vostro computer. Inoltre, se volete cambiare i server DNS vi basta modificare un solo file e riavviare.
Attenzione: se usate anche VPN aziendali, badate che potrebbe darvi dei malfunzionamenti. Casomai testate e eventualmente annullate la modifica.
Passo finale: cambiare i DNS della connessione
Dopo alcuni test, ho verificato quanto riportato anche da altri: il semplice cambio DNS sulla VPN non previene il leak al 100%, specialmente se usate la funzione Connessione VPN automatica nelle impostazioni, per accedere automaticamente alla VPN quando si attiva il Wi-Fi o la rete cablata.
Per essere sicuri il più possibile, vi consiglio di modificare la connessione che usate sempre a casa (wireless o cablata) e impostare anche lì i DNS statici, mettendo la rete in modalità Automatico (DHCP) solo indirizzi. I parametri per la connessione saranno molto simili a quelli visti nel Metodo 1 per la VPN.
A questo punto, la combinazione di uno dei due metodi visti prima con quest’ultimo passo vi dovrebbe dare una copertura adeguata in tutte le situazioni. 😉 Quando il bug verrà risolto, tutto ciò non sarà più necessario.
Qualsiasi metodo adottiate, trovate un’ottima lista di server DNS su DuckDuckGo tra cui poter scegliere. Una volta attivata la modifica, la situazione sarà così:
Connessione VPN senza DNS leak
La richiesta DNS (in verde) è sempre contenuta dentro al collegamento criptato della VPN (l’ho disegnata a parte solo per far capire la dinamica) e quindi il router non la riceve né la rimanda al server DNS. La richiesta non viene svelata né può essere dirottata o bloccata dal router.
Con questo, ho praticamente finito. Non mi resta altro da fare che ricordarvi che è buona norma attivare la VPN automaticamente quando si accede a determinate reti (per esempio il Wi-Fi di casa) in modo da essere sempre protetti. 😉
Vi auguro una buona e sicura navigazione!
Aggiornamento 14/01/2016: l’articolo è stato integrato con l’aggiunta dell’impostazione statica dei DNS nella connessione usata abitualmente.
Pur essendo nate per scopi aziendali, le VPN (Virtual Private Network, o reti private virtuali) vengono usate molto spesso anche dalle persone che hanno un po’ a cuore la sicurezza della propria navigazione in Internet.
Cosa consente l’uso di una VPN
Il funzionamento di base delle VPN, infatti, crea un tunnel virtuale tra il nostro computer e un server sicuro di proprietà del fornitore del servizio VPN. Tutto il traffico che effettuiamo passa in modo criptato dal computer al server, per poi uscire “normalmente” (quindi criptato per HTTPS e in chiaro per HTTP, FTP, e altro) su Internet.
In sintesi, questo permette di navigare in modo privato e sicuro anche nelle reti Wi-Fi pubbliche. Si tratta di reti dove normalmente chiunque potrebbe spiare quali siti stiamo visitando o le password che inseriamo in alcuni portali che non usano HTTPS.
Mai sottovalutare la privacy online
Inoltre, consente di mitigare gli effetti della sorveglianza di massa. L’Italia è uno dei molti paesi europei che trattiene illegalmente traccia di tutte le comunicazioni (nel senso di data, ora, e soggetti coinvolti, non contenuto) dei cittadini italiani, senza che ciò richieda un’indagine e senza configurarsi come intercettazione. Questi dati rimangono disponibili almeno per un anno.
Come se ciò non bastasse, gli Stati Uniti e il Regno Unito possiedono molte delle infrastrutture di Internet e intercettano abitualmente il traffico:
[…] il Guardian ha scoperto che il GCHQ ha accesso direttamente alle grandi ‘autostrade’ delle telecomunicazioni: i cavi in fibre ottiche che trasportano le telefonate e il traffico internet mondiale, e ‘succhiando’ direttamente da questi, l’anno scorso è stato in grado di intercettare 600milioni di telefonate al giorno.
Mi fa piacere che il nostro governo “logghi” (tenga traccia nei file di log) tutta la navigazione degli italiani? Non tantissimo. È accettabile che lo facciano paesi esteri senza alcuna autorità sui cittadini italiani? Assolutamente no. :\
Usando un servizio VPN, la vostra navigazione Internet potrebbe andare a mischiarsi con quella di decine di altre persone e risulterà, per esempio, generata da un anonimo datacenter situato ad Amsterdam, vicino al Koninklijk Paleis (peraltro un magnifico posto!) invece che dall’indirizzo IP intestato a Mario Rossi, Via Tal dei tali 0, Milano. 😛
Certo, se la connessione stessa dovesse contenere informazioni personali in chiaro sarebbe teoricamente possibile correlare la trasmissione dei dati a una persona, ma solo quella in particolare, non tutte le altre (chissà di chi sono?).
Infine, un argomento che interessa a molti dei miei lettori: usare un servizio VPN ci permette di aggirare le barriere geografiche. Praticamente tutti i servizi VPN, specialmente quelli seri (quindi che richiedono un pagamento per coprire i costi del servizio, spesso comunque molto ragionevole) forniscono server in svariati paesi.
Quindi, voglio vedere un video sul sito della BBC? Teoricamente non potrei… ma poco male, mi collego al mio servizio VPN scegliendo un server nel Regno Unito e accedo al contenuto che era bloccato! 😀 Lo stesso vale per un sito negli Stati Uniti, o in Francia, o in Germania.
Se vogliamo consultare siti in nazioni particolari (per esempio piccoli stati non europei, mettiamo caso il Belize) è meglio verificare i server offerti dal provider VPN prima di abbonarsi, ma generalmente i principali paesi UE, gli USA, il Canada e l’Australia sono ben coperti.
Per i motivi finora esposti, è altamente consigliabile che tutti usino una connessione VPN sia a casa che fuori casa, sul PC e sullo smartphone (soprattutto fuori casa)! È una questione di privacy e sicurezza, due cose da non prendere mai sottogamba.
“Ma non ho nulla da nascondere”
Ci tengo ad aprire una piccolissima parentesi su questa cosa, perché ogni volta che la sento dire mi fa alzare il sopracciglio… Se avete pensato qualcosa come la frase qui sopra, vi vorrei chiedere un piccolo favore.
Gentilmente, lasciate un commento sotto a questo post contenente il vostro indirizzo email e la password di Facebook. Ah, per cortesia fate un grande archivio ZIP con tutte le foto e i documenti del vostro PC e caricatelo online, poi inviatemi il link tramite email. Sì, anche i documenti bancari. Casomai dovessimo incontrarci di persona, vi chiederò anche di lasciarmi il vostro telefono cellulare in mano per un’oretta, chiaramente mi darete anche il PIN.
Come? Avete cambiato idea? 😉 Bene!
Possiamo continuare la parentesi dicendo che il diritto alla privacy è tutelato dalle leggi italiane ed europee, e concludo con una citazione di Edward Snowden:
Dire che non t’importa del diritto alla privacy perché non hai nulla da nascondere è come dire che non t’importa della libertà di espressione perché non hai nulla da dire.
Proseguiamo.
Come scegliere un fornitore VPN
Questo è un argomento che ho brevemente accennato nel mio post sul download dei video dalla BBC, ma vorrei estendere un po’ la trattazione. Le esigenze personali possono variare, ma gli aspetti che vi consiglio di valutare sono:
Disponibilità di paesi → Di più è meglio, sostanzialmente. Diciamo che un numero tra 25 e 50 va bene, ovviamente verificate che ci siano quelli “principali” che molti utilizzano: Stati Uniti, Regno Unito, Germania, Paesi Bassi. Meglio se vi danno anche un server in Italia, perché potreste voler navigare in sicurezza ma guardare i video della Rai, ed eventualmente scaricarli anche quando siete all’estero.
Numero di dispositivi collegabili → Fidatevi, non volete comprare un servizio per poi rendervi conto che vi permette di collegare solo 1 o 2 dispositivi alla volta. Contando che in famiglia potreste avere un paio di PC e un paio di smartphone, 5 è il numero minimo a cui puntare. Se vi offrono meno, guardate altrove.
Supporto OpenVPN → Non voglio scendere nei dettagli tecnici, ma non tutti i tipi di crittografia sono ugualmente sicuri. PPTP non è granché sicuro e va evitato. OpenVPN è uno standard aperto e finora si è rivelato molto valido. Per fortuna molti fornitori offrono sia OpenVPN che altre possibilità.
Politica di logging → Verificate le condizioni sulla privacy del fornitore e controllate che garantiscano una zero logging policy (politica di registrazione nulla).
Sede legale dell’azienda → Io francamente eviterei provider americani. Certo, ce ne sono anche alcuni che lavorano bene… però sono sempre sottoposti alle leggi statunitensi, dove l’intercettazione non solo è praticamente sempre legale ma è anche una prassi standard. Provider di paesi europei (specialmente nordici), australiani o di Hong Kong in genere vanno bene.
Costo → Sarà scontato dirlo, ma se confrontate diversi provider guardate anche il prezzo. Quasi tutti richiedono un pagamento mensile (pochi euro, tra i 5 e i 10 solitamente) o annuale. Però spesso in rete si trovano offerte che consentono di pagare una volta sola. 🙂
Perché non quelle gratuite? Semplice, sono utili per usi sporadici, per esempio guardarsi un video su un sito americano ogni tanto, ma offrono pochi server, una scarsa velocità e assolutamente nessuna assistenza se qualcosa non va. Solitamente poi loggano tutto il vostro traffico.
A loro il servizio VPN costa tempo e denaro, se per voi è gratis significa che da qualche parte i soldi li devono recuperare… Meglio evitare di chiedersi come e pagare qualcosa di valido. Poi, come vedremo tra poco, si può spendere davvero poco e avere un servizio di qualità che comunque tuteli la privacy.
Riguardo alle offerte, se volete vi segnalo quelle che ho linkato anche nell’altro post, e che personalmente trovo valide e affidabili, con un account a vita davvero conveniente:
VPNSecure per 35$: È quella che uso più spesso e posso testimoniare sulla qualità dei server, la prontezza del supporto tecnico e il fatto che offra 5 dispositivi collegabili in contemporanea. Sede legale: Australia.
Ivacy per 40$: Offre una rosa di server niente male e il prezzo è piuttosto competitivo. Consente l’uso di 5 dispositivi contemporaneamente. Sede legale: Singapore.
KeepSolid VPN per 40$: Va tenuto presente che l’azienda ha una sede negli USA e consente 5 dispositivi in contemporanea, che però vanno “linkati”. Sede legale: Ucraina.
FastestVPN per 40$: Ha server in una ventina di nazioni diverse e fornisce accesso a ben 10 dispositivi in contemporanea. Sede legale: Isole Cayman.
RealVPN per 20$: Una soluzione un po’ più basilare e economica, con 5 dispositivi in contemporanea. Sede legale: Estonia.
In pratica si paga circa il costo di un solo anno di abbonamento, solo che dura per sempre (o per 20-30 anni, verificate le singole offerte). Chiaramente non siete obbligati a scegliere queste, sono solo spunti per iniziare.
Valutate secondo la vostra coscienza qual è il provider migliore, verificando online anche altre fonti e altri pareri. Ricordate che scegliere una VPN significa affidare le proprie connessioni a un altro provider oltre a quello che fornisce l’ADSL o il collegamento wireless. È una questione di fiducia, perciò scegliete ciò che ritenete più giusto.
Una volta comprata, rimane la domanda su quale paese usare come nodo di uscita. Posto che per siti particolari non c’è scelta (BBC significa Regno Unito, Hulu significa USA, France 3 significa Francia, eccetera) in genere la normale navigazione la farete sempre dallo stesso server.
Per una navigazione “normale” evitate server negli Stati Uniti. Vari paesi possono essere buone scelte. Per quanto riguarda quelli europei, sarebbero da preferire:
Paesi Bassi, praticamente l’unico paese UE senza data retention attualmente (Gennaio 2016)
Svezia, una tra le nazioni con le migliori norme sulla privacy in tutta l’UE
Islanda, non fa parte dell’UE e ha ottime leggi sulla privacy
Lussemburgo e Romania, sono altri due paesi che vengono spesso consigliati da moltissimi provider VPN
Generalmente, molti provider offrono una app per smartphone che consente un accesso facile dai dispositivi mobili. Qualora così non fosse, è comunque possibile configurare OpenVPN for Android in modo simile a quanto si fa con un PC. Io uso questo client anche se il mio provider fornisce la propria app, lo preferisco.
Sulle più diffuse distribuzioni Linux in genere c’è un programma chiamato Network Manager, che è l’icona da cui ci si collega alle reti wireless o cablate. È possibile installare un plug-in per configurare con facilità la rete in modo grafico. Su Ubuntu e derivate si installa con il comando:
sudo apt-get install network-manager-openvpn
Il provider VPN in genere fornisce un archivio ZIP con dentro tanti file di configurazione OpenVPN, uno per paese. Ci sarà poi un certificato crittografico e delle chiavi.
Quello che dovete fare è semplicemente aprire il client OpenVPN e importare il file di configurazione (inserendo la password se richiesto). Da Network Manager si fa cliccando su:
Questo passaggio va ripetuto per ogni server che si intende utilizzare, ma solo la prima volta. Le successive, la configurazione sarà già memorizzata nel proprio client e basterà un solo click per connettersi. Per esempio, ecco la lista di server che ho importato nel mio Network Manager:
Lista delle reti VPN importate in Network Manager
A questo punto è sostanzialmente fatta, perché possiamo navigare sapendo che le nostre connessioni avvengono attraverso la VPN in modo criptato, anche se ci troviamo in un bar con il Wi-Fi aperto! 😀
C’è però un piccolo dettaglio che bisogna tenere a mente se si usa Network Manager, ovvero il DNS leak. Pertanto, se usate questo programma per collegarvi al vostro servizio VPN, leggete questo mio articolo per saperne di più su come sistemare il problema.
Pinterest è un sito web in cui gli utenti iscritti possono creare delle bacheche virtuali dove mettere metaforicamente una “puntina da disegno” (pin, appunto) per memorizzare immagini o pagine web su un certo argomento.
Io non ho un profilo, perché non mi appassiona molto, e così molte altre persone. Le difficoltà però iniziano quando si tenta di aprire l’home page del sito:
Home page di Pinterest
Si potrebbe pensare «poco male»… il problema è che molto spesso si ritrovano link a pagine Pinterest quando si cerca qualcosa su Google Immagini. Prendiamo ad esempio questo pin di un bel Tux (la mascotte di Linux) da costruire con il cartoncino. A prima vista sembra tutto normale, ma cosa succede se si fa scroll verso il basso?
Cominciano i problemi…
Appare ben presto una finestra modale che invita a registrarsi. Basta scorrere ancora un pochino e presto ci si ritrova con una schermata analoga alla home page. È pieno di contenuti interessanti ma sono coperti da un velo nero e impossibili da vedere. Anzi, su alcune pagine non si può neppure scorrere in basso. Ma in realtà i contenuti sono tutti lì.
Per quale motivo un utente del web dovrebbe farsi un account (seppur gratuito), con un’ulteriore password da ricordare e un ulteriore sito web a cui dare i propri dati, se i contenuti ci sono? Nessuno, chiaramente. 😉
Per questo ho sviluppato uno user-script per il browser, cioè un piccolo programmino che “ritocca” alcune pagine che visitate (in questo caso Pinterest).
Il risultato sarà questo:
Navigazione completa, senza fare storie
Il mio script si occupa di fare alcune correzioni alla pagina che avete aperto, in particolare:
rimuove finestre modali e richieste di registrazione
sblocca lo scorrimento nelle pagine dove è bloccato
rimanda alla pagina delle categorie (nella schermata) se si visita la home page di Pinterest
mostra una barra di ricerca basilare, visto che Pinterest l’ha rimossa per gli utenti non registrati
L’installazione richiede pochi click ed è molto semplice. 🙂
Se è la prima volta che installate uno script, dovete aggiungere una estensione al vostro browser:
Fatto ciò, potete passare al secondo passo, ovvero cliccare sul pulsante per aprire la pagina dove ho pubblicato lo script. Poi vi basterà premere Installa:
La cosa che mi ha sorpreso di più è il successo di questo script, senza che io ne abbia mai parlato nel blog! In particolare, ho rilasciato poco fa la versione 1.5, che aggiunge l’ultima funzionalità relativa alla ricerca.
Lo script, a partire dal primo rilascio, è online da circa un anno ed è stato già scaricato oltre 6000 volte. Gli è stato anche dedicato un articolo su Ghacks ma già prima suscitava un discreto interesse. Pur essendo uno dei più semplici tra tutti quelli che ho creato, è anche quello che mi ha fatto ricevere più donazioni in assoluto.
Insomma, pare proprio che la gente detesti le insistenti e pretestuose richieste di Pinterest, perciò spero che vi possa tornare utile. 😀
Vi è piaciuto l’articolo?
Scrivere software e guide come questa richiede tempo. Se avete trovato queste informazioni utili e vi è piaciuto il post, potete offrirmi un caffè cliccando sul pulsante. 🙂 Se lo fate, per favore lasciate una nota indicando che è per questo articolo.
Il web è una miniera di informazioni, il cui contenuto cresce a dismisura ogni giorno. Una necessità che ci troviamo ad avere frequentemente è quella di estrarre e salvare contenuti e dati. In passato ho trattato l’estrazione dei contenuti audio e video, ma esistono anche moltissimi contenuti testuali, come notizie, ricette o tabelle con dati numerici.
Inoltre è molto utile essere notificati quando il contenuto di un sito cambia, per esempio pubblicando un nuovo articolo o aggiungendo delle foto a una galleria. Tuttavia, non tutti i siti offrono dei feed RSS già pronti.
Vi avevo anticipato che avrei trattato questo argomento al Linux Day 2015 e finalmente è pronto il filmato del mio intervento. 🙂 Riporto qui la descrizione e il video del talk:
Il web è pieno di informazioni utili: non solo dati numerici, ma anche notizie, tutorial, ricette e gallerie di immagini. Tuttavia, spesso i siti web rendono complicato estrarre le informazioni che ci interessano per poi elaborarle o convertirle. Inoltre, a volte è utile tenere traccia degli aggiornamenti che vengono pubblicati su una certa pagina.
In questo talk vengono analizzati strumenti e tecniche per risolvere efficacemente questo problema tramite il web scraping.
Siamo stati costretti ad usare una telecamera di riserva, per problemi tecnici con quella principale. Per questo il video è di scarsa qualità, ma ci sono le slide in sovrimpressione che compaiono quando necessario, quindi è tutto leggibile.
Se volete, potete scaricare le slide in PDF dal sito del GrappaLUG, cliccando qui.
Per via di come è stato fatto il sito, le dirette dei canali sono normalmente visibili solamente con Silverlight, oppure con Google Chrome (ma non Chromium) tramite Widevine. Il nuovo script indica, sotto al player, due flussi M3U8 che si possono guardare (o registrare) con VLC o avplay:
Rilevamento dei flussi per i canali in diretta
Un’altra novità è la migliore gestione delle richieste di login. Ora dovrebbe essere visualizzabile qualsiasi video o diretta senza che il sito costringa l’utente a iscriversi. Se così non fosse, segnalatemelo.
Colgo l’occasione per ringraziare Daniele Giudice che mi ha suggerito l’idea e con cui ho discusso alcuni dettagli tecnici. Vi consiglio di visitare il suo sito web, contiene anche un utile script per il download dei video da Dplay. 🙂
Se avete già installato lo script, l’aggiornamento dovrebbe installarsi in breve tempo. Se invece non lo avete, o siete impazienti, correte subito a installarlo dalla pagina di download. 😉
Ieri ho iniziato il lavoro di montaggio video del mio intervento sull’estrazione di dati dalle pagine web. Come gli anni scorsi, anche quest’anno ho parlato utilizzando una presentazione Impress per accompagnare il discorso.
Dato che il video di me che gesticolo è di secondaria importanza, l’intento è mettere in risalto le slide. Per questo ho pensato di convertire tutte le slide in immagini per poi usarle in fase di montaggio. Le slide verranno mostrate a schermo pieno al posto del video, specialmente nei passaggi più importanti, mentre si sentirà la traccia audio per la mia voce.
In linea di principio, avrei potuto creare un PDF della presentazione e convertire quello in tante immagini, una per pagina. Tuttavia, in diverse slide ci sono alcuni punti che compaiono uno alla volta e questo viene perso durante la conversione in PDF.
Animazione del testo all’interno della stessa pagina
Per questo motivo, ho deciso di seguire un approccio diverso:
mostrare la prima slide
catturare la schermata
andare alla prossima slide
ripetere il procedimento
Tutto questo in modo completamente automatico, ad eccezione dell’atto di terminare la procedura dopo l’ultima slide. Per ottenere il risultato desiderato, ho creato un brevissimo script in Python che utilizza il modulo pyautogui per automatizzare la pressione dei tasti, come suggerito qui. Un’altra funzionalità utile di questo modulo è la facoltà di catturare screenshot, così abbiamo tutto il necessario! 🙂
Prerequisiti
Il modulo pyautogui è sostanzialmente multipiattaforma, in quanto fa tutto il “duro lavoro” di adattamento per eseguire le stesse operazioni sui vari sistemi operativi, le quali normalmente richiederebbero modi diversi di essere compiute.
Tuttavia, è necessario installare anche alcuni componenti aggiuntivi per Linux che verranno utilizzati dal modulo per portare a termine ciò che ci serve. Pertanto, installiamo il modulo nel nostro profilo utente e i pacchetti necessari nel sistema con i comandi:
Il primo pacchetto serve per la simulazione dei tasti e in generale il funzionamento base del modulo. Il secondo pacchetto sarebbe opzionale, ma per noi è necessario perché vogliamo anche che vengano catturati gli screenshot.
Catturare le schermate
A questo punto potete creare una nuova cartella screen con dentro uno script Python, chiamato ad esempio cattura.py. Il contenuto è questo:
#!/usr/bin/env python
import pyautogui
import time
# Attesa iniziale
time.sleep(10)
numero = 1
# Premere Ctrl+C alla fine della presentazione
while True:
im = pyautogui.screenshot()
im.save('screen_%03i.png' % numero)
pyautogui.press('right')
# Attesa transizione/animazione
time.sleep(3)
numero += 1
L’idea di base è semplice. Quando lo script parte, sta fermo per 10 secondi, così potete cambiare finestra e avviare la presentazione con LibreOffice (oppure Calligra Suite). Passato questo tempo, inizia la cattura delle schermate con il nome screen_001.png.
Tra una schermata e l’altra c’è una pausa di 3 secondi, in modo da far finire eventuali effetti di transizione (ad esempio le dissolvenze). Avviate lo script con il terminale, cambiando directory e lanciando il file Python appena creato:
cd /percorso/di/slide/cattura.py
python cattura.py
Poi avviate subito la presentazione e attendete senza toccare nulla. 😉 In poco tempo inizierete a vedere il computer che “va da solo” cambiando slide e attivando le animazioni fino all’ultima pagina.
Vi ricordo che, al posto di digitare tutto il percorso della directory che contiene lo script, potete fare drag’n’drop dell’icona della cartella slide dentro al terminale, dopo aver digitato il comando cd seguito da uno spazio. 😉
Quando la presentazione arriva alla fine, tenete conto che lo script continuerà a premere freccia destra ogni 3 secondi, catturando screenshot. Perciò riaprite il terminale ridotto ad icona e premete i tasti Ctrl+C per terminare il ciclo infinito.
Troverete le schermate (in formato PNG) nella cartella precedentemente creata.
Schermate ottenute con il procedimento descritto
Ritocchi finali
È probabile che, alla fine delle schermate ottenute, ci sia qualche file in più che mostra il vostro desktop dopo aver finito la presentazione ma prima di aver terminato lo script. In questo caso, è sufficiente cancellare le immagini di troppo. 😉
Nel mio caso, ho notato che la funzione di presentazione di LibreOffice lasciava un leggero margine nero in basso e a destra:
Margine nero lasciato da LibreOffice
Il margine, misurato con GIMP, risultava di 1 pixel in basso e 2 pixel a destra. Per correggere questo problema ho usato ImageMagick. Il comando, che modifica direttamente le immagini originali, è questo:
mogrify -crop -2-1 screen_*.png
Attenzione che ciò crea delle copie di backup nascoste nella stessa cartella, ad esempio il file screen_001.png verrà copiato con il nome di screen_001.png~ e solo in seguito modificato. Se usate una cartella solo per le slide e poi la eliminate tutta, anche le copie nascoste saranno ripulite. In caso contrario, fate attenzione a non lasciare tracce inutili. 🙂
Come di consueto, anche quest’anno collaborerò con il GrappaLUG alla realizzazione del Linux Day 2015 a Bassano del Grappa (VI).
Avete mai sentito parlare di data scraping? Se vi ricorda un po’ il suono del ghiaccio quando viene grattato via dal frigorifero, una mezza idea già ce l’avete… 😛
In pratica si tratta degli strumenti e delle strategie che si usano per estrapolare informazioni dalle pagine web. Pensate ad esempio al mio script per scaricare i video da Rai Replay, oppure Video Mediaset o La7.
Ma non è tutto, perché la tematica è molto più generale. Potete immaginare di avere un sito dove sono inserite delle ricette che volete estrarre e stampare, oppure a delle tabelle con dei numeri di telefono.
Se vi ponete delle domande come queste:
Come faccio a salvare velocemente le 45 foto di questo album online?
In che modo posso estrarre le tabelle di questo PDF?
Come creo un avviso che mi mandi un’email ogni volta che viene pubblicata una notizia su questo sito?
…allora siete interessati al data scraping.
Estrarre notizie, ricette e altre informazioni dai siti web
Ore 17.00–17.40 — Relatore Andrea Lazzarotto
Il tempo a disposizione sarà un po’ limitato (40 minuti) perciò mi concentrerò su qualche esempio essenziale, probabilmente saltando cose troppo difficili. 🙂
In ogni caso penso che ne verrà fuori un talk interessante. Tenete conto che quest’anno si sta valutando se riusciremo a filmare gli interventi oppure no… potrebbe anche non esserci un video disponibile online. Meglio venire di persona! 😉
Vi consiglio pertanto di prenotare il vostro “biglietto” gratuitamente se desiderate partecipare. Nel caso i posti riservati finissero non preoccupatevi, potrete comunque accedere al Linux Day, la prenotazione serve solo per i posti a sedere.
Ovviamente ci saranno anche altri talk e sono tutti gustosi, perciò vi suggerisco di andare a leggere il programma completo.
Un’amica mi ha sottoposto un dispositivo BlackBerry 9780 per un’analisi. Lo scopo era quello di recuperare il contenuto integrale della rubrica contatti, in quanto il software di sistema era pesantemente danneggiato e il dispositivo faticava ad accendersi. Dopo alcuni minuti di inattività, crashava improvvisamente con un messaggio di tipo App Error.
La prima cosa da fare, in questo caso, è rimuovere la batteria e reinserirla, per effettuare un reset. Dopo diversi tentativi in cui il dispositivo sembrava bloccato all’avvio, ho verificato che effettivamente il sistema si avviava, mettendoci però 11 minuti. Alla fine del caricamento, comparivano numerosi messaggi di errore relativi al software basato su Java.
Schermata di caricamento ed errori del software
In questi casi è possibile premere ripetutamente OK per raggiungere il menu del telefono. Dopo aver effettuato questa operazione, sono iniziate le difficoltà reali:
la rubrica mostrava la lista dei contatti (nomi) ma non era possibile aprirli per visualizzare i numeri
le impostazioni di sistema non erano accessibili e facevano crashare il dispositivo
non si riusciva ad effettuare un accoppiamento via bluetooth
il programma BlackBerry Desktop Manager, oltre a essere solo per Windows o Mac, non riusciva a connettersi al dispositivo
Il fatto di non poter aprire le impostazioni di sistema significava non potersi collegare al Wi-Fi per tentare di esportare i contatti tramite qualche app. I problemi col bluetooth lasciavano il collegamento USB come unica speranza.
Il mio piano infatti era quello di effettuare un backup con il software ufficiale di BlackBerry e poi esportare la rubrica. Dopotutto è possibile usare Windows in macchina virtuale (come quelle fornite da Microsoft sul sito Modern.ie) oppure creare una USB avviabile tramite le varie Release Candidate per sviluppatori. Peccato solo per l’errore nefasto restituito da BlackBerry Desktop Manager per Windows:
BlackBerry® Desktop Manager non è in grado di comunicare con il dispositivo BlackBerry connesso. Se il dispositivo si sta riavviando oppure la batteria è completamente scarica, fare clic su Riprova per tentare di ristabilire la connessione una volta completato il riavvio. In caso contrario, per risolvere il problema potrebbe essere necessario aggiornare BlackBerry® Device Software.
Come spesso accade, mi sono reso poi conto che Linux poteva venire in aiuto e salvare la situazione. Per evitare di installare troppo software sul mio portatile, ho creato una chiavetta USB avviabile con Xubuntu 14.10, assicurandomi di attivare la persistenza per poter salvare i dati recuperati. Ad ogni modo, qualsiasi distribuzione dovrebbe andare bene.
Per evitare problemi, ho effettuato nuovamente il reset del BlackBerry. Nel frattempo ho fatto partire Xubuntu. Una volta avviato il sistema, ho installato Barry, un software open source per gestire i dispositivi BlackBerry:
sudo apt-get install barrydesktop
Ho collegato il BlackBerry col cavo USB e ho avviato il programma con i permessi di amministratore, per evitare errori di accesso negato:
sudo barrydesktop
Barry ha individuato il dispositivo senza batter ciglio e mi ha chiesto di dargli un nome. Ho cliccato su Config… e poi sul primo tasto Configure… (quello relativo al backup) per selezionare tutti i campi disponibili. In realtà era di fondamentale importanza recuperare soltanto la rubrica, ma ero curioso di vedere quanto si potesse effettivamente estrarre.
Selezione degli elementi da estrarre
Dopo aver salvato le mie scelte, ho dovuto solo premere il tasto Backup nella finestra principale:
Barry durante l’operazione di backup
Il processo si è interrotto “brutalmente” al 42%, probabilmente a causa degli errori software. Barry ha mostrato un messaggio di errore indicando quali campi non erano stati estratti. Ha quindi provveduto a salvare quello che era stato recuperato, incluso il contenuto integrale della rubrica. Il BlackBerry è poi crashato nuovamente.
Dato che il processo era stato avviato come amministratore, è stato necessario copiare i file dalla cartella dei backup alla home dell’utente che stavo utilizzando:
L’obiettivo finale era esportare i contatti in un formato “universale” che si potesse agevolmente aprire e magari importare su Gmail. Dato che Barry effettua il backup in un formato proprietario, ho utilizzato un comodo script chiamato BlackBerry-Address-Book-to-CSV.
È sufficiente scaricare il file ZIP, estrarlo ed eseguirlo sul file di backup. Si tratta solo di dare pochi comandi:
wget https://github.com/mintern/BlackBerry-Address-Book-to-CSV/archive/master.zip
unzip master.zip
cd BlackBerry-Address-Book-to-CSV-master
./bbab2csv ~/backup/[PIN]/[NOME].tar.gz
Al posto di [PIN] e [NOME] vanno inseriti il PIN del dispositivo e il nome dell’archivio creato da Barry, che varia di volta in volta. L’output in formato CSV viene mostrato nel terminale, se volete salvarlo su un file potete ripetere l’ultimo comando ridirezionando l’output:
Il file risultante si trova nella home e si può aprire tranquillamente con LibreOffice oppure importare in un account Gmail, per sincronizzarlo con un dispositivo Android. Ovviamente va salvato in un posto sicuro, specialmente se si sta usando Linux su una live USB.
Il procedimento di recupero con Linux, alla fine, è stato molto veloce. La maggior parte del tempo è stata persa nei vari riavvii del dispositivo e tentando di far funzionare il software ufficiale di BlackBerry, che non è stato di alcun aiuto per estrarre i dati.
Tuttavia, BlackBerry Desktop Manager si è rivelato utile perlomeno per far tornare funzionante il telefono. Una volta collegato il cavo USB e ricevuto il messaggio di errore, ho cliccato su Aggiorna. Alla proposta di fare un backup ho risposto di no (altrimenti si sarebbe bloccato di nuovo) e ho confermato di voler formattare il dispositivo.
Alla fine del processo, il BlackBerry era perfettamente funzionante e tristemente vuoto. Avviando di nuovo Linux, con Barry ho potuto ripristinare la rubrica di cui era stato fatto il backup in precedenza.
La morale che si può trarre da questa esperienza è che da un BlackBerry con software danneggiato a volte si possono recuperare dei dati. Inoltre, non sempre l’applicazione ufficiale è la scelta migliore. Anzi, Barry consente di accedere almeno a una parte delle informazioni in casi in cui BlackBerry Desktop Manager non è in grado di collegarsi al dispositivo, con l’ulteriore vantaggio di non essere costretti a usare Windows.
A mio parere, Evernote è un ottimo strumento per prendere note e ritagliare pagine web. Eppure ha una grave mancanza: sebbene esista il client ufficiale per due discutibili sistemi operativi proprietari (Windows e Mac OS X), non c’è quello per Linux. Tuttavia, è possibile usare il servizio tramite Evernote Web direttamente nel browser.
Ciò ha alcuni vantaggi. Innanzitutto, è disponibile tramite qualsiasi PC collegato a Internet. In secondo luogo, è possibile andare a modificare direttamente il codice HTML per le note, utilizzando il mio script.
Una funzione importante che ufficialmente manca in Evernote Web è la possibilità di generare i collegamenti in-app alle note. Questo tipo di link consente di creare collegamenti ipertestuali che fanno “saltare” direttamente da una nota all’altra e sono compatibili con tutte le versioni di Evernote (incluso Evernote Web e i client per dispositivi mobili).
Tali link, inoltre, mostrano una comoda anteprima nell’interfaccia web, quando ci si passa il mouse sopra. Sul blog ufficiale del servizio c’è un ottimo articolo su alcuni utilizzi interessanti di questa funzione. Inoltre, potete vedere questo video per maggiori informazioni:
https://www.youtube.com/watch/?v=bX-b9lftwqc
Avendo la necessità di usare questa funzionalità, ho deciso di creare uno script per il browser che fornisca in automatico l’indirizzo in-app della nota corrente. Il link rispetta le specifiche fornite dalla documentazione di Evernote (che in realtà contiene un errore) e usa il protocollo evernote://. La figura mostra un esempio con una nota in cui sto scrivendo proprio questo post:
Collegamento in-app generato dallo script
Il link può essere copiato col tasto destro del mouse e inserito in alte note usando il solito pulsante a forma di catena nell’interfaccia di Evernote Web. Come sempre, prima di installare lo script dovete procurarvi l’estensione corretta per il vostro browser:
Spero che vi possa essere utile. 🙂 Sono sempre interessato a nuovi modi per essere più organizzato e produttivo usando Evernote. Avete qualche trucco personale che volete condividere? Fatemi sapere nei commenti!
Ho iniziato il mio lavoro sul sito Rai nel 2010, con lo scopo di mettere a disposizione il mio aiuto a tutti coloro che desiderassero registrare i video del portale Rai on-demand e, dopo altri due anni, anche Rai Replay.
Lo sviluppo di questo software per me è stata sempre un’attività hobbistica, dandomi molte soddisfazioni personali. Dopo 5 anni di lavoro, si tratta senza dubbio del mio user-script più scaricato, contando oltre 35000 download.
Oggi è un giorno importante, in quanto la mia attività si trasforma in un impegno professionale. Sono infatti entrato a far parte del team di Rai — Direzione Web, con il ruolo di consulente video. Rai acquisirà integralmente lo script da me sviluppato e la piattaforma server che veniva utilizzata per fornire i link diretti ai video. Io continuerò a lavorare mettendo a disposizione la mia competenza per la prevenzione dei download.
Stiamo infatti sviluppando un nuovo sistema che consentirà a Rai di avere un maggior controllo sull’accesso ai contenuti. Il software di protezione prenderà il nome di Rai Charles e servirà a impedire la visione dei filmati a chi tenterà di accedere con modalità non previste dall’azienda.
Logo del nuovo servizio di protezione per i siti delle reti Rai
Sono entusiasta di partecipare in questa nuova avventura e non vedo l’ora di sviluppare a pieno questa nuova tecnologia. L’interruzione del servizio avverrà nel giro di pochi giorni.
Se siete utenti dello script, vi consiglio di leggere l’annuncio ufficiale sul sito Rai. Lì potete trovare una spiegazione dettagliata sul funzionamento del nuovo sistema di protezione. Inoltre è prevista una sezione commenti per porre domande in merito.