albero-copia

L’arte della copia ai tempi del web (prima parte)

Nell’era del web e dei social network si stima che fino al 30%(1) dei contenuti visibili sia costituito da copie e duplicati. Le ragioni per cui questo accade, i modi con cui si realizza e gli effetti che ne conseguono costituiscono una storia a sé, che voglio raccontare, per quanto posso, in questo articolo e nel successivo.

Web scraping

La prima e forse più nobile arte della copia su web è il cosiddetto “web scraping”: si catturano informazioni da siti web per costruire propri database di dati, da usare poi per la costruzione di altri siti, la scrittura di applicazioni, la creazione di mailing list ecc. Obiettivi preferenziali degli scrapers  sono i siti che contengono basi di dati utili a varie attività commerciali (elenchi telefonici, indirizzari, cataloghi di prodotti o servizi, registri professionali, orari e tariffari dei trasporti, repertori di varia natura ecc.)

Ovviamente questa raccolta di dati non si fa manualmente (salvo eccezioni), ma si usano programmi fatti apposta, prodotti software e servizi online; quando si parla di web scraping si sottintende di solito che si tratta di attività automatiche e periodiche, effettuate tramite automi software (bots).

Normalmente, il fruitore non va troppo per il sottile e non si preoccupa di accertare se l’operazione sia lecita oppure violi qualche regola di copyright; nella maggioranza dei casi lo scopo è quello di ottenere gratis dati che altrimenti costerebbero molto o sarebbero inaccessibili; per questo, lo “scraper” tipico sa di “fare il furbo” e di usare metodi che come minimo non rispettano lo spirito del copyright.

Non sempre, però, il web scraping è un’operazione illecita o al limite della decenza. Secondo alcuni è un modo in cui l’informazione in rete si ristruttura, si aggrega e acquisisce una maggiore intelligenza, trasformando la massa informe di dati in qualcosa di più simile ad una base dati condivisa.

Inoltre, se i dati oggetto dello scraping sono pubblicamente disponibili senza protezioni, lo scraping è effettivamente uno dei modi leciti in cui questi dati contribuiscono a creare ulteriori servizi e prodotti. Qualche esempio lo abbiamo in casa nostra: le App per iOs e Android “Farmacross” e “Comuni d’Italia” si basano su basi dati proprie costruite con una serie di operazioni di acquisizione da fonti pubbliche (tra cui la Base Date dei Farmaci AIFA, i report demografici ISTAT, e numerose altre). Per arrivare a rendere questi dati usabili per i nostri obiettivi è necessaria una serie di operazioni non banali di integrazione e bonifica dei dati, operazioni che a tutti gli effetti creano del valore aggiunto rispetto alle informazioni grezze originali.

Strumenti e metodi

Una delle cose interessanti in merito al web scraping è che ha fatto nascere un intero settore specifico dell’informatica e ha portato al fiorire di una serie di prodotti e servizi intorno a quest’area.

Dal punto di vista tecnico, il primo approccio al web scraping è semplice: i contenuti pubblicati su Web si presentano come pagine HTML ottenute dal browser richiamando con il protocollo HTTP un web server. Dato che una chiamata HTTP può essere effettuata da qualsiasi linguaggio di programmazione moderno, il web scraping più elementare consiste nello scrivere programmi (di solito con php, python, c#, javascript, java) che effettuano le chiamate necessarie, acquisiscono il contenuto della pagina e ne estraggono le informazioni desiderate. Ci sono di mezzo una serie di “technicalities”  che rendono la cosa meno banale di quanto sembri, ma il concetto resta semplice.

Fino a una dozzina di anni fa, questo metodo elementare avrebbe funzionato con gran parte dei siti esistenti; però, il disturbo che questo creava ai legittimi proprietari dei siti (sia in termini di violazioni di copyright, sia per i disservizi dovuti al sovraccarico di accessi) ha fatto nascere e diffondere contromisure via via più complesse e, in parallelo, metodi di scraping sempre più sofisticati.

Captcha

Uno dei più diffusi e semplici sistemi di protezione dallo scraping è l’uso di captcha(2) cioè di quella specie di quiz visivo che tutti noi abbiamo incontrato su qualche sito, escogitato per verificare che la pagina sia stata raggiunta da un essere umano e non da uno “stupido” programma.

Dato che i programmi sono sempre meno “stupidi”, il tipo di quiz si evolve nel tempo; ma i maniaci dello scraping sono ingegnosi e hanno inventato una curiosa soluzione per questo problema, se si hanno i fondi per pagarla. Basta affittare un servizio di risoluzione dei captcha (“captcha solver”); si ricevono le istruzioni per collegare il programma al servizio attraverso un’interfaccia (Api): il programma invia l’immagine del captcha e ottiene dopo circa 15 secondi il testo che risponde al problema.

Ma come fa il captcha solver a interpretare l’immagine? Semplice: la passa ad un operatore umano, che ha l’unico (ingrato) compito di immettere la risposta (e deve farlo entro pochi secondi, se vuole essere pagato). Non ci vuole molto a capire che questi servizi possono nascere solo in paesi dove il costo del lavoro è molto basso; comunque, se siete interessati a guadagnare lavorando da casa (ben 0,88$ per 1000 captcha risolti) potete ad es. rivolgervi qui: https://2captcha.com/make-money-online.

Protezione basata su Javascript

Se non ci sono captcha a bloccare l’accesso, il sito si può proteggere in vari modi. Uno dei più semplici è non produrre il contenuto HTML nel primo messaggio HTTP diretto al browser ma invece comporlo dinamicamente utilizzando le funzioni del browser. Ad es. le nostre applicazioni HTML5 / CSS3 / Javascript costruite con framework come ExtJs o JQuery rientrano in questa categoria: la pagina HTML vera e propria contiene ben poco, perché i veri dati sono ottenuti da chiamate Ajax che avvengono in vari punti del codice javascript, dopo che la pagina HTML è stata ricevuta dal browser.

In questo caso, se il programma di scraping è troppo semplice non vede alcun contenuto utile nella pagina HTML e le tecniche di programmazione per superare l’ostacolo in questo caso diventano un po’ più sofisticate. Però se il sito non ha altre protezioni esplicitamente progettate, un programmatore sufficientemente esperto e volenteroso può individuare (con gli strumenti di debugging del browser) le chiamate HTTP interne alla pagina e riuscire a simularle da programma.

Bot detection tools

Per eliminare completamente (o quasi) il problema degli scrapers, i siti meglio attrezzati si dotano di strumenti anti-bot: si tratta di strumenti che tentano di riconoscere quando un accesso ad un sito è effettuato presumibilmente da un robot e lo bloccano con un messaggio informativo (vedi ad es. questa pagina).

Nella forma più semplice, un anti-bot non fa altro che controllare alcune caratteristiche del messaggio HTTP (headers), verificare che non avvengano troppe richieste per unità di tempo da uno stesso indirizzo IP ed escludere indirizzi di provenienza appartenenti a qualche blacklist. Questi controlli possono però essere abbastanza facilmente superati da un programma abbastanza sofisticato; nel tempo si sono perciò sviluppati meccanismi molto più complessi: gli anti-bot più avanzati si basano su complessi metodi di composizione delle pagine in più fasi, che includono l’esecuzione di porzioni di codice javascript criptato e variabile. Pur essendo in teoria possibile violare questi sistemi, il costo per violarli diventa talmente alto da dissuadere gli eventuali attaccanti.

Il business

Come dicevo, è interessante notare che si è sviluppato un business specifico intorno a questi temi, su entrambi i lati della barricata: ci sono società come Distil Networks  e ShieldSquare che basano il loro fatturato sugli strumenti di protezione dai bots, e altre società e comunità che lavorano per superare quelle stesse protezioni.

Ad es. Selenium è un progetto open-source che sviluppa funzioni per simulare le azioni di un operatore umano su un browser Chrome, Firefox, IE; formalmente nato per l’automazione dei test di applicazioni web-based, è più diffuso come strumento di web scraping.

Esistono poi un gran numero di servizi online che dichiarano di utilizzare tecnologie avanzate di web scraping e in alcuni casi offrono anche applicazioni gratuite da utilizzare sul proprio computer: il più noto è probabilmente Import.io, ma potete trovare una lista piuttosto esauriente in questo => blog.

Infine, caso mai non foste appagati dai 9 dollari guadagnati decifrando i vostri primi 10mila captcha, potete proporvi su uno dei tanti progetti di web scraping umano attraverso siti tipo www.freelancer.com o www.peopleperhour.com: cercate titoli come “Fill Excel spreadsheet with data” e potrete facilmente guadagnare anche 4 dollari in un’ora, copiando accuratamente a mano l’elenco degli annunci da un sito di e-commerce arabo  oppure i nomi e i recapiti di 20mila medici  da un sito pakistano.

A presto, e restate sintonizzati per la Parte Seconda…


Note e riferimenti

(1) http://searchengineland.com/googles-matt-cutts-25-30-of-the-webs-content-is-duplicate-content-thats-okay-180063
(2) https://it.wikipedia.org/wiki/CAPTCHA

1 commento
  1. Stefano Carbini
    Stefano Carbini dice:

    Vedo che ci stai prendendo gusto. Bene.
    Fare web scraping è sempre sfruttamento del lavoro altrui, che quasi sempre non ha nessuna intenzione di regalare ad altri perché magari quei dati li ha pagati, o comunque sono il frutto di attività lunghe e impegnative, e sui quali ha basato il suo business. Oppure perché faticosamente lo ha sgraffignato ad altri siti web. Chi effettivamente vuole che i propri dati siano pubblici li mette a disposizione in forma di database o archivi.
    Per Comuni d’Italia abbiamo usato principalmente i dati pubblici di Istat e Ministero degli Interni; qualcosa abbiamo ottenuto sul web dai siti dei comuni o per ottenere i Santi Patroni, ma per esempio abbiamo evitato di fare web scraping su siti come quello di Tuttitalia.ti che contiene molti più dati dei nostri.
    L’attività di web scraping può essere comunque complessa nel parsing delle pagine, anche quelle non particolarmente protette, che possono facilmente cambiare la loro struttura nel tempo, quindi dopo aver messo a tacere la propria coscienza, bisogna valutare bene costi e benefici.

    Per i captcha, se la storia degli 88 centesimi non è una bufala, bisogna fare qualcosa per la loro abolizione, per fermare questo ignobile sfruttamento dell’uomo sull’uomo. Mo apro una petizione online.

    Rispondi

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *