Il web scraping , ovvero il processo di estrazione dei dati necessari dalle fonti web, è uno strumento essenziale; tuttavia, si tratta di una tecnica ricca di sfide.
Di seguito sono elencate le sfide più comuni legate al web scraping e le soluzioni pratiche per affrontarle. Trattiamo ogni aspetto, dalle questioni etiche del web scraping al superamento di ostacoli tecnici come i contenuti dinamici e le misure anti-scraping.
Quali sono le principali sfide del web scraping?
Esistono numerose sfide tecniche che i web scraper devono affrontare a causa delle barriere imposte dai proprietari dei dati o dei siti web per distinguere tra esseri umani e bot e limitare l'accesso non umano alle loro informazioni. Le sfide del web scraping possono essere suddivise nelle seguenti categorie distinte:
Sfide derivanti dai siti web di destinazione:
- Barriera del punteggio di fiducia (rilevamento di bot invisibili)
- L'inquinamento dei dati da parte di contenuti generati dall'intelligenza artificiale
- Contenuti dinamici
- Modifiche alla struttura del sito web
- Tecniche anti-scraping (bloccanti CAPTCHA, Robots.txt, bloccanti IP, honeypot e fingerprinting del browser)
Sfide inerenti agli strumenti di web scraping:
- Scalabilità
- Questioni legali ed etiche
- Manutenzione delle infrastrutture
1. Barriera del punteggio di fiducia (rilevamento di bot invisibili)
Il blocco statico (IP/User-Agent) è stato sostituito da un sistema continuo di valutazione dell'affidabilità basato sul comportamento. I moderni provider anti-bot (Cloudflare, Akamai) tracciano il movimento del mouse e la velocità di scorrimento prima di un clic.
Gli scraper che si limitano a cliccare su un pulsante o con precisione matematica vengono contrassegnati con un basso punteggio di affidabilità, il che porta a blocchi temporanei in cui i dati non vengono caricati senza visualizzare alcun messaggio di errore.
Soluzione:
Gli strumenti standard basati su WebDriver/CDP vengono facilmente rilevati dai siti web. Utilizza librerie moderne come Nodriver, che comunica direttamente con Chrome per non lasciare tracce di automazione, o Camoufox, una versione rinforzata di Firefox progettata specificamente per la furtività.
2. L'inquinamento dei dati da parte di contenuti generati dall'IA
Man mano che gli scraper acquisiscono dati per l'addestramento, si imbattono sempre più spesso in collassi del modello, estraendo accidentalmente dati inaccurati generati dall'IA che degradano la qualità del loro stesso output. Questo rende l'autenticità dei dati una sfida tecnica piuttosto che un semplice controllo di qualità.
Soluzione:
Implementare un livello di validazione preliminare all'archiviazione che calcoli la complessità del testo estratto. I contenuti generati dall'IA presentano spesso una complessità innaturalmente bassa. Scartare i dati che scendono al di sotto di una determinata soglia di unicità.
3. Contenuti web dinamici
I contenuti web dinamici rappresentano una sfida significativa per gli strumenti di web scraping, poiché modificano radicalmente il modo in cui le informazioni vengono fornite e visualizzate su una pagina web.
A differenza dei siti statici, in cui tutto il contenuto è presente nel file HTML iniziale, i siti dinamici costruiscono la pagina al volo, spesso in risposta al comportamento dell'utente. Tecnologie come AJAX (Asynchronous JavaScript and XML) sono alla base dei siti web dinamici.
Il problema principale è che i normali strumenti di scraping non sono browser web. Vedono la struttura HTML iniziale, che può contenere segnaposto, animazioni di caricamento e tag <script>, ma spesso non contiene i dati effettivi che si desidera estrarre. Questi semplici strumenti non eseguono JavaScript.
Soluzione:
Per superare queste difficoltà, gli strumenti di web scraping devono evolversi da semplici parser HTML a strumenti in grado di visualizzare completamente una pagina web, proprio come farebbe un browser umano.
Un browser headless è un browser web privo di interfaccia grafica (GUI). Funziona in background ma possiede tutte le funzionalità di un browser standard, incluso un potente motore JavaScript.
Strumenti come Selenium, Puppeteer e Playwright consentono di controllare i browser (come Chrome, Firefox o WebKit) tramite programmazione. Utilizzando questi strumenti avanzati, è possibile creare web scraper in grado di interagire con siti web complessi e dinamici e di accedere a contenuti che risulterebbero completamente invisibili con metodi di web scraping più semplici.
Browser remoti
Un'altra soluzione è rappresentata dai browser di scraping , detti anche browser remoti . Si tratta di browser gestiti da società specializzate in dati web. Permettono inoltre agli scraper web di interagire con JavaScript.
4. Modifiche alla struttura del sito web
I siti web vengono continuamente migliorati. Queste modifiche possono influire sul layout, sul design o sul codice sottostante di un sito. L'impatto di una piccola modifica:
- Ad esempio, se uno sviluppatore decide di cambiare la classe dell'elemento prezzo da price a current-price per una maggiore chiarezza, le istruzioni dello scraper falliranno:
- Lo scraper non sarà più in grado di trovare il prezzo. Potrebbe restituire un errore, un valore vuoto o, peggio, potrebbe accidentalmente acquisire il dato sbagliato che si trova in una posizione simile.
- Poiché questi cambiamenti possono verificarsi in qualsiasi momento e senza preavviso, il codice dello scraper necessita costantemente di potenziali modifiche.
Soluzione
Anziché affidarsi a selettori molto specifici e fragili, gli sviluppatori possono scriverne di più intelligenti. Ad esempio, invece di cercare un <span> con l'esatta classe "price", un parser adattabile potrebbe cercare un <span> che si trova accanto al testo "Price:" o che contiene il simbolo del dollaro ($).
È possibile eseguire controlli automatici periodici per convalidare i dati estratti. Supponiamo che il campo del prezzo inizi improvvisamente a restituire valori vuoti per tutti i prodotti. In tal caso, il sistema può avvisare automaticamente lo sviluppatore che la struttura del sito web è probabilmente cambiata e che il parser deve essere aggiornato.
LLM
I modelli di intelligenza artificiale possono essere utilizzati per identificare gli elementi da estrarre o per raccogliere dati dalle pagine web. Sebbene aggiungano latenza e costi all'estrazione dati, ne aumentano l'adattabilità.
5. Tecniche anti-raschiamento
Molti siti web utilizzano tecnologie anti-scraping per prevenire o ostacolare le attività di web scraping. I seguenti punti offrono una panoramica di alcune delle misure anti-bot più comuni riscontrate nel processo di web scraping:
3.1 Bloccanti CAPTCHA
I siti web utilizzano i CAPTCHA quando sospettano che un visitatore possa essere un bot. Questa pratica è comune nelle pagine web per la registrazione degli utenti, nei moduli di accesso, nelle sezioni dei commenti e durante le procedure di pagamento per gli articoli più richiesti.
Implementazioni CAPTCHA eccessivamente aggressive possono bloccare i "bot buoni", come il bot Google che esegue la scansione del web per indicizzare le pagine e renderle visibili nei risultati di ricerca. Se il crawler di Google viene bloccato, le pagine di un sito web potrebbero non essere indicizzate correttamente, con conseguenze negative per la SEO e il posizionamento nei motori di ricerca.
Soluzione:
Per superare questo ostacolo, gli scraper devono essere dotati di un meccanismo per risolvere queste sfide. Sebbene efficace, l'utilizzo di un servizio di risoluzione CAPTCHA aggiunge un ulteriore livello di complessità e costi finanziari al progetto di web scraping, poiché questi servizi in genere addebitano un costo per ogni CAPTCHA risolto.
3.2 Robots.txt
Il file robots.txt è un elemento fondamentale dell'ecosistema web, in quanto funge da guida per i bot automatizzati. Sebbene venga spesso considerato una sfida, si tratta più di una linea guida etica e legale che di un ostacolo tecnico. I file robots.txt indicano se un contenuto è indicizzabile o meno e specificano un limite di indicizzazione per prevenire la congestione della rete.
La sfida rappresentata dal file robots.txt non è di natura tecnica. È possibile programmare uno scraper per ignorare il file e scansionare comunque l'intero sito web, in modo piuttosto semplice. Tuttavia, così facendo si violano chiaramente i termini di servizio del sito.
Ignorare il file robots.txt può comportare che il sito web identifichi rapidamente e blocchi in modo permanente l'indirizzo IP del tuo scraper.
Soluzione:
L'approccio corretto consiste nel trovare un modo ufficialmente autorizzato per ottenere i dati web. L'alternativa migliore è verificare se il sito web offre un'API per l'accesso ai dati. Se non è disponibile un'API pubblica, il passo successivo è la comunicazione diretta. È possibile contattare il proprietario del sito web o il proprietario dei dati, spiegando chi si è e cosa si intende fare con i dati.
3.3 Blocco IP
Il blocco IP (noto anche come ban IP) è una delle misure anti-scraping più comuni e fondamentali utilizzate dai siti web. Quando il server di un sito web rileva un traffico insolitamente elevato proveniente da un singolo indirizzo IP, lo segnala come sospetto. Una volta bloccato l'IP, qualsiasi ulteriore richiesta da parte del programma di scraping verrà rifiutata.
Soluzione:
Un proxy è un server intermedio che si interpone tra il tuo scraper e il sito web di destinazione. Quando invii una richiesta tramite un proxy, il sito web vede la richiesta provenire dall'indirizzo IP del proxy, non dal tuo indirizzo IP. Due tipi di proxy molto efficaci per questo scopo:
- Rotazione dei proxy: il tuo strumento di web scraping è configurato per utilizzare questo pool e, a ogni nuova richiesta (o dopo un determinato numero di richieste),passa automaticamente a un indirizzo IP diverso . In questo modo, le richieste vengono distribuite su più indirizzi IP, evitando che una singola richiesta superi i limiti di frequenza del sito web.
- Proxy residenziali: gli indirizzi IP in un pool di proxy residenziali appartengono a connessioni internet reali, di livello consumer, fornite dai provider di servizi internet (ISP) ai proprietari di case. Poiché il traffico ha origine da un indirizzo IP residenziale legittimo, è pressoché impossibile per un sito web distinguere la richiesta di uno scraper da quella di un vero utente umano.
3.4 Trappole Honeypot
Le honeypot sono sistemi informatici progettati per attirare gli hacker e impedire loro di accedere ai siti web. Una honeypot in genere appare come una parte legittima del sito web e contiene dati che un aggressore potrebbe prendere di mira.
Se un bot di crawling tenta di estrarre il contenuto di una honeypot, entrerà in un ciclo infinito di richieste e non riuscirà a estrarre ulteriori dati.
Perché i bot ci cascano
Un utente umano interagisce con la versione visiva di un sito web e non vedrebbe né cliccherebbe mai su questo link nascosto. Tuttavia, molti semplici scraper non visualizzano la pagina.
Funzionano analizzando il codice sorgente HTML grezzo ed estraendo programmaticamente tutti i link (tag <a href=”…”>) che trovano. Poiché il link honeypot è presente nell'HTML, il bot ingenuo lo vedrà e lo seguirà, proprio come qualsiasi altro link legittimo.
Soluzione
Anziché limitarsi ad analizzare il codice HTML grezzo, è consigliabile utilizzare un browser headless, come Selenium, Puppeteer o Playwright. Inoltre, definendo posizioni specifiche e prevedibili per i link da seguire, si riduce la probabilità che lo scraper si imbatta in un link honeypot inserito intenzionalmente in una parte nascosta del codice HTML.
3.4 Impronta digitale del browser
Il fingerprinting del browser è un metodo utilizzato dai siti web per raccogliere informazioni sui propri visitatori tramite i loro indirizzi IP. Ogni volta che si accede a un sito web, il dispositivo invia una richiesta di connessione al sito per caricarne il contenuto. Ciò consente al sito web di recuperare e memorizzare i dati trasmessi dal browser relativi al dispositivo.
I siti web possono raccogliere numerose informazioni sul dispositivo di un utente, consentendo loro di personalizzare i suggerimenti per i visitatori tramite il fingerprinting del browser. Ad esempio, il sito web di destinazione può estrarre dati relativi allo user agent, all'intestazione HTTP, alle impostazioni della lingua e ai plugin installati.
Fonte: AmIUnique
La sfida per i raschiatori
Il fingerprinting del browser rappresenta una sfida significativa perché gli scraper, per impostazione predefinita, presentano fingerprint molto strani e incoerenti.
- Impronte digitali generiche: uno scraper di base che utilizza una libreria semplice invierà un set minimo di intestazioni e non avrà plugin, risoluzione dello schermo o altri attributi "umani".
- Impronte digitali incoerenti: un programma di scraping potrebbe utilizzare proxy a rotazione, facendo sì che il suo indirizzo IP appaia tedesco in una richiesta e giapponese in quella successiva.
Soluzione
Utilizzate browser headless come Selenium, Puppeteer o Playwright. Si tratta di veri e propri motori di browser che generano un'impronta digitale molto più completa e credibile fin da subito rispetto alle semplici librerie HTTP.
È inoltre possibile mantenere un elenco di stringhe User-Agent standard e reali e ruotarle per le diverse sessioni. Assicurarsi che anche le intestazioni HTTP inviate siano coerenti con quelle di un browser reale.
6. Scalabilità
Potrebbe essere necessario estrarre una grande quantità di dati web da più siti per ottenere informazioni preziose su prezzi, ricerche di mercato e preferenze dei clienti. Man mano che aumenta la quantità di dati da estrarre, è necessario uno scraper web altamente scalabile per effettuare più richieste in parallelo.
Soluzione:
Per migliorare la velocità e raccogliere grandi quantità di dati più rapidamente, è necessario utilizzare uno scraper web progettato per gestire richieste asincrone.
Lo scraping asincrono dei dati è una tecnica che consente a uno scraper di inviare più richieste a diversi siti web senza attendere la risposta di ciascuna prima di inviare la successiva.
Ad esempio, se un sito web è lento a rispondere, uno scraper asincrono può continuare a inviare ed elaborare richieste ad altri siti web più veloci nel frattempo.
7. Questioni etiche e legali
L'estrazione di dati dal web non è di per sé un atto illegale , a condizione che i dati estratti non vengano utilizzati per scopi non etici. In molti casi giudiziari in cui le aziende hanno utilizzato web crawler per estrarre dati pubblici dei concorrenti, i giudici non hanno trovato un motivo legittimo per pronunciarsi contro i crawler, nonostante tale pratica fosse malvista dai proprietari dei dati.
Ad esempio, nel caso eBay contro Bidder's Edge, un aggregatore di dati d'asta che utilizzava un proxy per raccogliere i dati di eBay, il giudice non ha ritenuto Bidder's Edge colpevole di aver violato le leggi federali sull'hacking. 2
Tuttavia, se l'utilizzo dei dati estratti dal web causa una violazione diretta o indiretta del diritto d'autore, allora il web scraping sarebbe considerato illegale, come si è visto nel caso di Facebook contro Power Ventures. 3
8. Manutenzione delle infrastrutture
Per mantenere prestazioni ottimali del server, è essenziale aggiornare o espandere regolarmente le risorse, come lo spazio di archiviazione, per far fronte ai crescenti volumi di dati e alla complessità del web scraping. È fondamentale aggiornare costantemente l'infrastruttura di web scraping per stare al passo con le esigenze in continua evoluzione.
La creazione e la gestione di un'infrastruttura di scraping richiedono un'ampia gamma di competenze tecniche. Queste includono l'amministrazione dei server, la gestione della rete, l'ottimizzazione dei database e le conoscenze specialistiche necessarie per aggirare i meccanismi anti-bot.
Soluzione:
Quando si esternalizza il web scraping, è fondamentale assicurarsi che il fornitore di servizi offra funzionalità integrate come un rotatore di proxy e un parser di dati. Inoltre, il fornitore dovrebbe fornire opzioni di scalabilità semplici e aggiornare regolarmente la propria infrastruttura per soddisfare le esigenze in continua evoluzione.
Sii il primo a commentare
Il tuo indirizzo email non verrà pubblicato. Tutti i campi sono obbligatori.