Come funzionano i browser antidetect: la spiegazione tecnica completa

Superfici del fingerprint, generazione di identità coerenti, isolamento dello storage su disco, instradamento per profilo e i limiti onesti dell'intero approccio.
Un browser antidetect svolge quattro compiti. Conserva separatamente i dati di navigazione di ciascun profilo, controlla l'identità del dispositivo che ogni profilo dichiara, instrada il traffico di ogni profilo in modo indipendente e mantiene coerenti tutti e tre gli aspetti nel tempo. Questo articolo illustra come si svolge ciascun compito, a livello di meccanismo, e termina con ciò che l'approccio non può fare.
Le superfici del fingerprint
Si parte da ciò che una pagina può leggere, perché tutto il resto è una risposta a questo. Uno script su qualsiasi sito web può porre domande al browser, e le risposte descrivono la macchina. Le superfici si raggruppano in modo naturale.
| Superficie | Che cosa legge una pagina |
|---|---|
| Navigator | Nome e versione del browser, piattaforma, elenco delle lingue, numero di processori e memoria dichiarati, supporto al tocco |
| Schermo | Larghezza, altezza, area di lavoro disponibile, profondità di colore, rapporto di pixel del dispositivo |
| Canvas | I pixel esatti prodotti disegnando testo e forme fuori schermo, trasformati in un hash e quindi in un valore stabile |
| WebGL | Le stringhe del produttore e del renderer grafico, più gli hash di scene renderizzate |
| Audio | L'uscita di un oscillatore fatta passare nel grafo di elaborazione audio, che varia a seconda dello stack |
| Font | Quali caratteri sono installati, dedotti da misurazioni del testo |
| Fuso orario e orologio | Il fuso e lo scarto dichiarati, confrontati con il luogo da cui arriva il traffico |
| Rete | L'indirizzo stesso, la vista di WebRTC sui candidati di connessione e la forma dell'handshake TLS |
Nessuna riga, da sola, identifica una macchina. La combinazione sì, ed è anche il punto in cui le bugie vengono scoperte: valori che non potrebbero appartenere a una stessa macchina reale sono un segnale più forte di qualsiasi valore preso da solo.
La raccolta è economica e silenziosa. Ogni valore della tabella è disponibile a qualsiasi pagina tramite API documentate, senza alcuna richiesta di autorizzazione, e la maggior parte arriva nel primo secondo di una visita. Qualunque sia la tua posizione sulla pratica, è un dato di fatto stabile del web moderno ed è il punto di riferimento rispetto al quale è progettato un browser antidetect.
Come si genera un'identità coerente
L'approccio ingenuo è intercettare ogni domanda e rendere casuale la risposta. Fallisce per una ragione strutturale. Le risposte descrivono una sola macchina, quindi sono correlate, e risposte casuali e indipendenti rompono le correlazioni. Uno user agent Windows accanto a font presenti solo su macOS, una dimensione dello schermo che nessun portatile ha mai avuto, una stringa grafica che non è mai coesistita con la piattaforma dichiarata: ognuna è una contraddizione che un controllo può verificare a basso costo.
Per questo un browser antidetect efficace genera l'identità come insieme. Parte da una classe di macchina reale e comune e deriva ogni valore da quella scelta. La piattaforma decide l'elenco di font plausibile, le stringhe grafiche e il supporto al tocco. Lo schermo viene da dimensioni che quella classe di macchina ha davvero. La lingua e il fuso orario vengono dalla regione prevista per il profilo. I valori concordano tra loro perché sono stati scelti insieme, da un'unica descrizione di un'unica macchina.
La seconda proprietà conta altrettanto: l'insieme viene memorizzato. Viene scritto nel profilo al momento della sua creazione, e ogni sessione riporta gli stessi valori, perché un dispositivo che cambia da una visita all'altra descrive hardware che nessuno possiede. La stabilità è gran parte di ciò che significa plausibile.
Isolamento dello storage su disco
Il compito dello storage è il meno appariscente e il più assoluto. Ogni profilo possiede una cartella, e tutto ciò che un browser rende persistente vive al suo interno: il database dei cookie, Local Storage, IndexedDB, la cache HTTP, le registrazioni dei service worker, lo stato delle estensioni, la cronologia e le credenziali salvate. Due profili sono due cartelle disgiunte, e ogni browser in esecuzione punta alla propria.
La completa disgiunzione è la proprietà da verificare, perché un isolamento parziale fallisce in silenzio. I cookie sono facili da separare. La cache può identificare un browser che ritorna attraverso le risorse che ha conservato. I service worker possono contenere identificatori e continuare a girare tra una visita e l'altra. IndexedDB è dove le applicazioni moderne tengono i record di cui si fidano davvero. Un isolamento che copre gli storage più noti e ne condivide altri ha isolato soltanto la parte visibile del problema.
La persistenza è l'altra metà. Le sessioni accumulano valore: verifiche di sicurezza completate, storico di accessi consolidato, la forma di un visitatore che ritorna. Un profilo mantiene la propria cartella tra le sessioni, ed è ciò che rende possibile il lavoro sugli account. La scrittura alla chiusura è ciò che rende durevole la cartella, ed è per questo che terminare forzatamente il processo di un profilo a metà sessione può costare la sessione appena stabilita.
Instradamento di rete
Ogni profilo porta con sé la propria rotta, applicata all'avvio del suo browser, così il traffico esce dal proxy di quel profilo senza toccare le impostazioni di sistema né la rotta di alcun altro profilo.
- Il proxy si associa al profilo e non alla macchina. I browser ordinari usano il proxy di sistema. Qui ogni profilo in esecuzione si connette attraverso il proprio endpoint.
- Anche la risoluzione dei nomi passa dalla rotta, perché una richiesta che arriva da un paese mentre le sue risoluzioni arrivano da un altro è una contraddizione a livello di rete.
- WebRTC è vincolato a concordare con la rotta. Lasciato a sé stesso, può far emergere candidati di connessione che il proxy non ha mai toccato.
- Fuso orario e lingua sono allineati al paese della rotta, perché l'indirizzo è l'unico valore che non si può generare, quindi il resto della storia deve concordare con esso.
La rotta è anche il componente che più vale la pena verificare in modo indipendente, perché viene acquistata da terzi. Testare un endpoint prima di assegnarlo e leggere l'indirizzo osservato anziché quello dichiarato intercetta un guasto quando è ancora un problema di configurazione invece che un problema di account.
Che cosa modifica il browser stesso
Ci sono due punti in cui uno strumento può modificare le risposte che una pagina riceve, e la differenza tra i due è il bivio più tecnico di questo argomento.
| Approccio | Come funziona | Il punto debole |
|---|---|---|
| Iniezione di script | Un'estensione o uno script iniettato sovrascrive le funzioni che una pagina chiama, così le letture del canvas e le interrogazioni di navigator restituiscono valori sostituiti | Le sovrascritture sono a loro volta visibili. Le funzioni modificate possono essere riconosciute come tali, e qualsiasi superficie dimenticata dall'iniettore risponde ancora con il valore reale |
| Dentro il codice stesso del browser | L'implementazione del browser risponde con i valori memorizzati del profilo, nei percorsi di codice in cui i valori reali vengono prodotti | Molto più lavoro da costruire e mantenere, ed è per questo che distingue gli strumenti progettati allo scopo dalle estensioni |
L'approccio a iniezione è da dove è partita questa categoria, e il suo limite è ben noto: una pagina può verificare se le funzioni native hanno ancora l'aspetto di funzioni native, e può raggiungere la stessa superficie attraverso un percorso che l'iniezione non copriva. I browser antidetect progettati allo scopo apportano quindi le modifiche all'interno del browser stesso, così l'identità memorizzata è ciò che l'implementazione riporta attraverso ogni percorso che la legge.
Che cosa fa davvero l'apertura di un profilo
- L'identità memorizzata viene caricata: un unico insieme coerente di valori del dispositivo, lo stesso insieme dell'ultima volta.
- Il browser si avvia sulla cartella del profilo, così ogni storage persistente è quello del profilo.
- La rotta viene applicata: il proxy, la risoluzione dei nomi attraverso di esso, WebRTC vincolato ad esso.
- La sessione è in esecuzione e accumula stato dentro la cartella.
- Alla chiusura lo stato viene scritto, così l'apertura successiva riprende lo stesso dispositivo, lo stesso storage e la stessa rotta.
Ogni parte di questo elenco è verificabile dall'esterno. Apri due volte una pagina di test del fingerprint e confronta i valori tra le aperture. Guarda la cartella del profilo sul disco. Leggi l'indirizzo osservato. Uno strumento di questa categoria dovrebbe invitare a questi controlli, perché il meccanismo è il prodotto.
I limiti onesti
L'approccio ha dei confini, e conoscerli fa parte dell'usarlo con competenza.
- Non può rendere un browser impossibile da identificare, e nessuno può comunque misurare un'affermazione simile. L'obiettivo realistico è un profilo che appaia come una macchina ordinaria e internamente coerente e che resti stabile.
- Non può correggere le contraddizioni che introduci tu. Una rotta in un paese con un fuso orario in un altro è un errore di configurazione, e lo strumento può solo rendere facile la configurazione corretta.
- Non copre il comportamento. Tempi, volumi e ritmo vengono letti insieme all'ambiente, e una flotta che agisce all'unisono si identifica da sola per quanto pulito sia ogni singolo ambiente.
- Non copre l'identità dichiarata. Recapiti di recupero condivisi, strumenti di pagamento condivisi e testi riutilizzati collegano gli account attraverso i registri della piattaforma, molto al di sopra del browser.
- Non cambia le regole della piattaforma. L'isolamento separa ambienti legittimi. Ciò che una piattaforma consente è decisione della piattaforma, e qui non si promette alcun esito su una piattaforma che non controlliamo.
Leggi i limiti come una definizione e non come una delusione. Un browser antidetect è uno strumento di coerenza: storage separato, un'identità stabile e plausibile, una rotta corrispondente, tenuti insieme per profilo e ripetuti in modo identico a ogni apertura. Questo è l'intero meccanismo, e tutto il resto che si scrive sulla categoria ne è una variazione.

