Skip to main content
Ogni sessione del browser espone una firma identificativa: una combinazione di User-Agent, output del canvas, stringa del renderer WebGL, elenco dei font, risoluzione dello schermo, plugin installati, fuso orario, intestazioni della lingua, output del contesto audio e altro ancora. I moderni sistemi anti-bot combinano questi segnali in un fingerprint del browser, capace di identificare una sessione con maggiore affidabilità rispetto a un indirizzo IP. Uno scraper che non gestisce il proprio fingerprint fornisce al sistema di rilevamento un identificativo inequivocabile a ogni richiesta. Il livello del fingerprint si trova al di sotto del comportamento: descrive ciò che la sessione è, non ciò che fa. Per non essere individuato da un sistema anti-bot avanzato, uno scraper deve superare entrambi i livelli: fingerprint pulito e comportamento simile a quello umano.

Quali segnali vengono tracciati

Un fingerprint moderno combina in genere:
  • User-Agent e intestazioni Accept. Il punto di partenza più ovvio. HeadlessChrome nello UA rivela subito l’automazione.
  • Fingerprint del canvas. Il sito chiede al browser di disegnare un elemento canvas nascosto e calcola l’hash dell’output; minime differenze di rendering tra GPU, driver e sistemi operativi producono una firma stabile per ogni computer.
  • Fingerprint WebGL. Stringhe del renderer e del produttore ed estensioni supportate formano insieme un fingerprint efficace dello stack GPU e driver.
  • Elenco dei font. I font che il browser può visualizzare e il loro ordine sono spesso sufficientemente caratteristici da identificare da soli una sessione.
  • Schermo e viewport. Risoluzione, profondità di colore e rapporto pixel del dispositivo. Un desktop 1366×768 con ridimensionamento al 200% ha un fingerprint diverso da uno schermo retina 2560×1440.
  • Fuso orario e lingua. Ricavati da Intl.DateTimeFormat e navigator.languages.
  • Contesto audio. Come il canvas, il rendering audio produce un output specifico del dispositivo e utilizzabile per il fingerprinting.
  • Plugin, proprietà di navigator e concorrenza hardware. Segnali minori, ma combinabili.
  • navigator.webdriver. L’indizio decisivo di un’automazione non gestita.
Le decine di piccoli segnali si combinano moltiplicandone l’effetto. Non è necessario che ognuno sia univoco: basta che la combinazione sia abbastanza particolare da poter essere tracciata.

Perché gli scraper espongono i fingerprint

Tre modalità di errore sono predominanti:
  • Ripetizione della stessa identità predefinita. Un’istanza Puppeteer standard che esegue 10.000 sessioni presenta lo stesso hash del canvas, la stessa stringa WebGL e lo stesso elenco di font: 10.000 “utenti diversi” con il fingerprint di un solo computer. È facilissimo da rilevare.
  • Valori generici che nessun utente reale produce. Un navigator.plugins vuoto, un output canvas identico bit per bit al rendering Linux/Chrome standard o un elenco privo dei comuni font di sistema sono anomalie che gli utenti reali di Chrome non generano.
  • Incoerenza tra i segnali. Un fingerprint che dichiara en-US e America/New_York associato a un IP russo, uno User-Agent iPhone con viewport desktop o un fingerprint Windows con font esclusivi di macOS. I sistemi di rilevamento cercano queste contraddizioni interne.

Gestire il fingerprint

I rimedi corrispondono direttamente alle modalità di errore:
  • Unicità per sessione. Ogni istanza di un’attività deve presentare un fingerprint distinto, con hash canvas, renderer WebGL ed elenco di font diversi, affinché lo stesso fingerprint non ricorra per “utenti diversi”.
  • Coerenza nella sessione. Il fingerprint deve rimanere stabile all’interno della stessa sessione; cambiarlo durante l’esecuzione è di per sé un indizio.
  • Coerenza geografica con l’IP. Fuso orario, lingua e intestazioni Accept-Language devono corrispondere alla posizione geografica dell’IP del Proxy. A un IP dell’Europa orientale va associato un fingerprint della stessa area, non il valore predefinito en-US.
  • Realistico, non casuale. Anche i fingerprint composti da valori del tutto casuali risultano anomali. Occorre attingere da distribuzioni di fingerprint reali, usando stringhe GPU comuni, elenchi di font plausibili e normali dimensioni dello schermo, non valori insoliti che nessun utente reale produce.
Insieme, questi principi definiscono la gestione attiva del fingerprint, in alternativa all’uso delle impostazioni predefinite fornite dal runtime.

L’approccio di Octoparse al fingerprinting

Oltre al vantaggio naturale del runtime progettato con interfaccia grafica, che espone meno segnali rispetto agli strumenti headless, Octoparse gestisce attivamente il fingerprint del browser. Le sessioni usano profili distinti e realistici, anziché ripetere la stessa identità predefinita in ogni attività, soddisfacendo il requisito di unicità per sessione che una configurazione fissa non può garantire. Il runtime gestisce sia la discrezione “passiva” offerta dall’interfaccia grafica sia quella “attiva” derivante dalla diversità dei fingerprint, senza richiedere un servizio esterno. La gestione del fingerprint si abbina alla simulazione del comportamento di Octoparse: a ogni sessione il runtime appare come un utente reale diverso e, una volta sulla pagina, si comporta come tale.

Quando è importante

La gestione attiva del fingerprint è eccessiva per siti statici e sistemi di rilevamento basilari, ma diventa utile contro difese più avanzate:
  • Difese leggere. Il browser con interfaccia grafica predefinito è già sufficiente.
  • Difese medie (limiti di frequenza e rilevamento di base). Le impostazioni predefinite sono generalmente adeguate se gli altri livelli sono puliti.
  • Difese avanzate (Cloudflare, DataDome, HUMAN, Akamai Bot Manager). È indispensabile. Senza fingerprint distinti e realistici per ogni sessione, la stessa identità ripetuta per migliaia di “utenti diversi” porta al blocco dello scraper anche se tutto il resto è corretto.
Per l’aspetto comportamentale della discrezione basata sul fingerprint, consulta Scraping simile al comportamento umano. Per i sistemi di difesa che la gestione del fingerprint mira a superare, consulta Superare CAPTCHA e Cloudflare.