Usare browser e proxy senza testa per raschiare qualsiasi sito web

Proxy, Scraping, Oct-18-20215 minuti di lettura

Quando sentite parlare di "browser senza testa", sono sicuro che non si tratta di un gadget tecnologico familiare che avete incontrato nella vostra vita quotidiana, a meno che non conosciate a fondo il funzionamento tecnico dei browser. La maggior parte di voi ha familiarità con browser particolari come Google Chrome, Firefox, Safari, ecc. L'unica differenza è che i browser headless

Quando sentite parlare di "browser senza testa", sono sicuro che non si tratta di un gadget tecnologico familiare che avete incontrato nella vostra vita quotidiana, a meno che non conosciate a fondo il funzionamento tecnico dei browser.

La maggior parte di voi ha familiarità con browser particolari come Google Chrome, Firefox, Safari, ecc. L "unica differenza è che i browser headless sono quei browser particolari senza testa. Nella sezione che segue ne analizzeremo il significato e i vantaggi.

Che cos'è un browser headless?

Riuscite a immaginare come sarebbe la vostra vita se Google Chrome o Firefox non avessero un'interfaccia grafica? A meno che non siate ingegneri informatici o persone di alto livello tecnologico, non vi preoccupate di usarli.

Pertanto, un browser senza testa funziona senza pulsanti, icone, barre di scorrimento e collegamenti che consentono la navigazione da una posizione all'altra. Pertanto, l'unico modo per stabilire una comunicazione con un browser headless è utilizzare un'interfaccia a riga di comando su una rete. 

Tecnicamente un browser headless avrebbe un interprete JavaScript, un componente di rete, un layout e motori di rendering senza un'interfaccia grafica.

Allora ci si può chiedere: cosa diavolo si guadagna a usare un browser headless quando si può ottenere lo stesso risultato con un browser con interfaccia grafica?

Scopriamo di seguito la risposta.

Perché utilizzare un browser headless?

Innanzitutto, i browser headless sono relativamente più veloci dei browser di tutti i giorni. Ciò è dovuto principalmente al fatto che non caricano CSS, Javascript e HTML come fanno i browser normali. Inoltre, utilizzano meno memoria rispetto ai browser standard, con risorse di hosting significativamente inferiori.

Inoltre, i browser headless consentono di risparmiare tempo e produttività automatizzando i test, la qualità e lo sviluppo complessivo di un'applicazione web o mobile. Inoltre, i browser headless sono in grado di monitorare le prestazioni delle applicazioni di rete e di automatizzare il processo di rendering e di acquisizione delle immagini per il controllo automatico del layout.

Per quanto riguarda il web scraping, i browser headless consentono di eseguire lo scraping di siti web senza avviare manualmente il sito prima di eseguire lo scraping. È possibile eseguire lo scraping dell'HTML del sito web immediatamente.

Inoltre, i browser headless svolgono un ruolo fondamentale nei risultati di ricerca di Google. Poiché i motori di ricerca richiedono solo la fonte HTML di una pagina per indicizzarla, i browser headless rendono possibile l'esecuzione di Javascript e il riempimento del contenuto. Questo ha portato a un rapido sviluppo anche dei browser headless.

A cosa servono i browser headless?

Ecco un breve elenco dei compiti che il browser headless svolge:

Test del sito web

L'obiettivo principale dell'utilizzo di un browser headless è quello di testare le funzionalità delle applicazioni web e le caratteristiche dell'interfaccia utente. È possibile testare le applicazioni web automatizzando le attività di test quotidiane, come la digitazione di dati nei campi, la compilazione di moduli, la simulazione di carichi e l'esecuzione di interi flussi di lavoro. D'altra parte, è possibile automatizzare i test per i sistemi privi di interfaccia grafica.

I browser headless possono anche testare come l'utente interagirebbe con i componenti UI/UX di un sito web. Ciò avviene automatizzando i clic sui pulsanti, lo scorrimento, la selezione dei colori, i tipi di carattere e le interazioni con i layout delle pagine web. 

La verifica del layout di una pagina comprende anche l'identificazione delle dimensioni predefinite di una pagina web e delle sue coordinate. 

I browser headless possono scattare screenshot delle pagine web e salvarli come PDF. Inoltre, offrono anche test di esecuzione di JavaScript e Ajax.

Tra gli altri test principali che un browser Headless può eseguire, c'è la cattura della timeline di un sito web per la diagnostica delle prestazioni.

Scraping del web

La popolarità dei browser headless non deriva solo dai test delle applicazioni web, ma anche da una discreta quantità di web scraping. Permettono ai web scrapers di raccogliere dati anche dai siti web di destinazione più difficili, caricando e imitando un vero e proprio browser.

Tale estrazione annulla la necessità di utilizzare strumenti di estrazione HTML per lo scraping dei dati, che è diventato impegnativo a causa della popolarità di JavaScript. Alcuni dei problemi legati all'utilizzo di tali strumenti di estrazione sono il caricamento asincrono, il fingerprinting del browser e lo scorrimento infinito.

Automazione dei compiti

Nel primo punto, abbiamo trattato l'automazione delle attività con i browser headless in relazione al test delle applicazioni web. Quindi l'unica aggiunta all'automazione è la possibilità di utilizzare i browser headless per automatizzare l'interazione con i siti web per imitare numerosi browser su una singola macchina senza causare un intasamento delle risorse.

Quali sono i diversi tipi di browser headless?

Esistono diversi browser headless. Come sviluppatore web, dovete provare vari tipi di browser headless per ottenere la migliore combinazione per automatizzare i casi di test e il web scraping.

Scopriamo quali sono:

Browser Google Chrome Headless (versione 59 o superiore)

Basato sul progetto open-source Google Chromium, è un browser leggero e senza testa. Supporta JavaScript e ha una licenza BSD.

Dispone di un'interfaccia a riga di comando per la scansione e lo scraping istantaneo dei dati del sito web. Inoltre, consuma meno memoria e include funzioni innovative, strumenti di sviluppo web di facile utilizzo e strumenti specifici per gli sviluppatori. Headless Chrome funziona su tutte le piattaforme, tra cui Windows, Mac OS X e Linux.

Gli sviluppatori web lo usano spesso per raschiare dati da siti web, scattare schermate da siti web e creare file PDF da pagine web. L'aspetto più affascinante di Headless Chrome è che è possibile eseguire lo scraping di dati e immagini senza caricare l'interfaccia grafica del browser.

Gli sviluppatori utilizzano anche i browser headless per testare diversi livelli di navigazione, per garantire che gli utenti su dispositivi mobili e desktop possano navigare con facilità.

Puppeteer e Selenium sono due degli strumenti più comuni per controllare Chrome senza testa. Come sapete, Selenium si è già fatto un nome nell'arena dei test. Puppeteer, invece, utilizza dei proxy per effettuare il crawling delle pagine, cliccare sui componenti e scaricare i dati.

HtmlUnit

HtmlUnit è un browser headless sviluppato in Java per automatizzare l'interazione dei siti web con gli utenti. Questo browser è ideale per testare i siti web o recuperare informazioni da essi. È il più veloce da installare rispetto agli altri.

HTMLUnit può essere utilizzato anche per creare e testare le funzionalità di un sito di e-commerce, come la sicurezza del sito, l'invio di moduli, la navigazione, ecc. Lo sviluppatore può utilizzarlo per le autenticazioni HTTP, le prestazioni delle pagine HTTPS, le prestazioni delle intestazioni HTTP, il reindirizzamento dei link ad altri siti web e la compilazione di moduli e processi di invio. 

Browser Mozilla Firefox Headless (versione 56 o superiore)

La versione headless di Firefox è disponibile dalla versione 56 in poi. Consente agli sviluppatori di eseguire diverse API contemporaneamente. In questo modo, non è necessario utilizzare più strumenti di simulazione per i test associati allo sviluppo web.

Pertanto, è possibile combinare qualsiasi driver Web, come Selenium, Slimmer JS e W3C WebDriver, con Firefox headless per i test di automazione del browser Web. Selenium è il driver consigliato per guidare i processi di test e automazione nella versione headless di Firefox, tra i tre driver Web menzionati.

Webkit PhantomJS

Phantom JS è un browser headless WebKit open-source in cui è possibile eseguire script. Funziona con le API di JavaScript, PHP, Objective-C, C#, Python, Java, Haskell, Ruby e R utilizzando la clausola 3 e BSD, anche se PhantomJS non viene mantenuto. 

Phantom JS fornisce un supporto nativo per operazioni di sviluppo web come la manipolazione del DOM, SVG, selettori CSS, Canvas e JSON in una fase rapida. D'altra parte, gestisce molte complessità nei test e nei processi di automazione dei browser web comunicando attraverso un'interfaccia a riga di comando.

Gli sviluppatori utilizzano spesso phantom JS per catturare schermate di pagine web, effettuare previsioni comportamentali, test di navigazione a più livelli e interagire con più tipi di asserzioni.

Utilizzare un browser headless per evitare di essere inseriti in una lista nera o di essere bannati

Come già scoperto in precedenza, uno degli usi pratici dei browser headless è lo scraping del Web. In questa sezione capiremo come evitare di finire nella lista nera o di essere bloccati durante lo scraping con un browser headless.

Quando strumenti come Selenium utilizzano un browser headless, come Google Chrome headless o Firefox headless, per effettuare lo scraping dei dati, il sito web di destinazione appare come un robot che effettua il crawling di un sito web anziché come un essere umano.

Ad esempio, poiché la maggior parte dei siti web sono programmati con linguaggi di alto livello come il PHP, possono rilevare il tasso di click-through. Ciò significa che è in grado di capire se un utente ha fatto clic su un pulsante per navigare verso un'altra pagina all'interno di un sito o se ha semplicemente raggiunto l'URL senza fare clic sul pulsante ma con un link che lo collega.

Gli sviluppatori possono codificare strumenti come Selenium per digitare, fare clic o scorrere qualsiasi sito web quando si utilizza un browser headless. In questo modo, si chiarisce al sito web di destinazione che un essere umano sta accedendo al sito e non un robot.

Tuttavia, l'uso di Selenium con un browser headless potrebbe presentare degli svantaggi. La preoccupazione maggiore è la lentezza durante lo scraping delle pagine web. Tuttavia, questa lentezza potrebbe essere trascurabile se paragonata agli altri vantaggi dei browser headless discussi nella sezione precedente, "Perché usare un browser headless?".

D'altra parte, non influisce sulla velocità di scraping del sito web; si tratta semplicemente di passare da una pagina all'altra. Nel complesso, vale la pena di provare lo scraping di un sito web con un browser headless, se si possono ignorare gli svantaggi trascurabili.

Come utilizzare i proxy rotanti con i browser headless

In questa sezione si capirà perché è necessario disporre di proxy rotanti per eseguire lo scrape con i browser headless.

Quando si effettua lo scraping di dati da un sito web utilizzando un server proxy e un browser headless, è possibile effettuare lo scraping di dati in modo anonimo senza che il server del sito web limiti il proprio indirizzo IP.

È possibile accedere e fare scraping di dati da siti web con contenuti geo-limitati utilizzando un proxy rotante. A tale scopo, potete utilizzare il pool di proxy rotanti residenziali fornito da ProxyScrape, in modo da poter effettuare lo scraping con IP provenienti da più località senza che il sito web di destinazione vi blocchi. Inoltre, è possibile eseguire lo scraping dei dati dei prodotti da piattaforme di e-commerce come Amazon, ad esempio, con un numero considerevole di richieste.

ProxyScrape La rotazione degli indirizzi IP consente di eseguire diverse sessioni su un sito web. Questo, a sua volta, aiuterebbe ad aggirare le restrizioni sugli IP che bloccano molte richieste di dati.

La rotazione dei proxy aiuterebbe anche a superare i divieti che si verificano quando si cerca di automatizzare le attività con i browser headless.

Conclusione

Ora che sapete cosa sono i browser headless, quando e perché vengono utilizzati e i vari tipi. Inoltre, abbiamo parlato di come evitare i blocchi durante lo scraping. L'utilizzo di proxy rotanti favorisce ulteriormente il processo di scraping, poiché garantisce l'anonimato e numerosi altri vantaggi.

In conclusione, ci auguriamo che implementiate i meccanismi menzionati in questo articolo. Dovrete farlo quando vi troverete di fronte a un'operazione di web scraping con un browser headless.