Quali segnali vengono tracciati
Un fingerprint moderno combina in genere:- User-Agent e intestazioni Accept. Il punto di partenza più ovvio.
HeadlessChromenello 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×768con ridimensionamento al 200% ha un fingerprint diverso da uno schermo retina2560×1440. - Fuso orario e lingua. Ricavati da
Intl.DateTimeFormatenavigator.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.
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.pluginsvuoto, 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-USeAmerica/New_Yorkassociato 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.
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.