In questo articolo
In breve
- Il fingerprinting combina caratteristiche del browser per collegare visite: non richiede necessariamente cookie o un accesso al microfono.
- Una firma stabile non è per forza unica e non rivela automaticamente nome, posizione precisa o identità civile.
- Il laboratorio raccoglie pochi segnali e calcola un hash Canvas sul tuo computer, senza servizi esterni o invio dei risultati.
- Le difese agiscono su raccolta, precisione e correlazione dei segnali. Una VPN o la sola modalità privata non coprono tutti questi livelli.
Hai cancellato i biscotti. Hai lasciato il browser
Rifiuti i cookie, apri una finestra privata e ti aspetti di ricominciare da zero. Il sito può ancora osservare caratteristiche dell’ambiente che esegue la pagina: lingua, dimensioni, risultati di operazioni grafiche. Combinate, possono diventare un indizio per collegare visite.
Questo è il browser fingerprinting. Il W3C distingue la raccolta passiva da quella attiva: alcuni dati accompagnano le richieste, altri emergono quando il sito interroga API o fa eseguire un calcolo al browser. Non è necessariamente un’intrusione nel computer, né la lettura dell’intera cronologia.
La differenza rispetto ai cookie di sessione è concreta: un segreto memorizzato può essere revocato o eliminato; una combinazione di caratteristiche può ripresentarsi anche senza quel file di stato. L’obiettivo del tracker è correlare osservazioni. Per associarle a un nome servono altri collegamenti, come un account.
Una firma sonora senza accendere il microfono
Hacker Journal 292 dedica le pagine 58–60 all’audio fingerprinting. Il nome può ingannare: non significa ascoltare la stanza.
Con OfflineAudioContext, una pagina può costruire un segnale sintetico, elaborarlo e leggere un buffer senza inviarlo agli altoparlanti. È un comportamento documentato da MDN. La specifica Web Audio del W3C descrive il potenziale di fingerprinting di queste elaborazioni e distingue l’accesso al microfono, che passa invece da getUserMedia e dai relativi permessi.
Per il Canvas il principio è analogo: il codice chiede di disegnare testo o forme e legge il risultato. Font, rasterizzazione e implementazione possono incidere sui pixel. Differente non significa unico: molti browser possono condividere il medesimo risultato. E un aggiornamento o una protezione può modificarlo senza che sia cambiata la persona.
Laboratorio: osservare pochi segnali senza spedirli
L’esperimento seguente usa soltanto il tuo browser. Non raccoglie dati di visitatori, non carica librerie e non invia richieste a servizi esterni. Misura alcune proprietà leggibili e un hash dei pixel Canvas; non tenta di produrre un identificatore universale. Il risultato permette di confrontare le configurazioni, senza assegnare un punteggio di anonimato.
In una cartella vuota salva questo testo come impronta.html. Servilo in locale con Python 3:
python3 -m http.server 8765 --bind 127.0.0.1
Apri http://127.0.0.1:8765/impronta.html. Il server ascolta sul loopback; termina con Ctrl+C quando hai finito.
<!doctype html>
<html lang="it">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="data:,">
<title>Impronta locale</title>
<h1>Che cosa espone questo browser?</h1>
<button id="misura" type="button">Misura</button>
<pre id="risultato" style="white-space:pre-wrap"></pre>
<script>
document.querySelector('#misura').addEventListener('click', async () => {
const output = document.querySelector('#risultato');
try {
const canvas = document.createElement('canvas');
canvas.width = 360;
canvas.height = 80;
const g = canvas.getContext('2d');
g.fillStyle = '#183746';
g.fillRect(0, 0, 360, 80);
g.font = '19px serif';
g.fillStyle = '#f1d49a';
g.fillText('Able2Code: prova locale 012345', 12, 45);
const pixels = g.getImageData(0, 0, 360, 80).data;
const digest = await crypto.subtle.digest('SHA-256', pixels);
const canvasHash = Array.from(new Uint8Array(digest),
n => n.toString(16).padStart(2, '0')).join('');
const dati = {
lingue: navigator.languages,
fuso: Intl.DateTimeFormat().resolvedOptions().timeZone,
schermo: [screen.width, screen.height],
areaPagina: [innerWidth, innerHeight],
pixelRatio: devicePixelRatio,
canvasHash
};
output.textContent = JSON.stringify(dati, null, 2);
} catch (errore) {
output.textContent = 'Misura non disponibile: ' + errore.name;
}
});
</script>
</html>
Apri i DevTools prima del test. Nella scheda Network, ricarica: per questa pagina devono comparire soltanto risorse locali, senza invio di risultati. Il codice non usa fetch, beacon, cookie o storage. Una lettura Canvas bloccata o alterata è un possibile risultato da annotare, non un invito a disattivare subito la protezione.
Cambia una cosa, poi misura di nuovo
Tieni una tabella con browser e versione, sistema, modalità, impostazioni di protezione e risultati. Non pubblicare il tuo insieme completo di segnali.
| Prova | Che cosa confrontare | Conclusione consentita |
|---|---|---|
| Tre misure senza modifiche | Campi e hash Canvas | Stabilità in quella sessione |
| Finestra ridimensionata | Area della pagina e hash | Quali segnali dipendono dal viewport |
| Finestra privata | Stessi campi, stessa pagina locale | Differenze tra le due configurazioni |
| Protezione antitracciamento più restrittiva | Campi, hash, eventuali blocchi | Effetto su questi segnali soltanto |
Aprire i DevTools agganciati alla finestra cambia l’area della pagina: tienili nella stessa posizione durante il confronto. È un dettaglio piccolo che può produrre una falsa “vittoria” della difesa.
Un hash uguale dice che i pixel letti coincidono; uno diverso dice che sono cambiati. Nessuno dei due esiti misura quante altre persone producono lo stesso risultato. Inoltre un test locale non riproduce il contesto di un tracker di terze parti: alcune protezioni dipendono dal sito e dall’origine. Non dedurre dal localhost che la stessa cosa accada ovunque.
Le difese hanno tre lavori diversi
Bloccare la raccolta. Impedire il caricamento di uno script conosciuto riduce ciò che quel soggetto può osservare. La documentazione Mozilla distingue i fingerprinter noti bloccati tramite liste dalle protezioni contro quelli sospetti, che limitano i dati esposti. Le modalità e impostazioni non sono tutte equivalenti.
Ridurre le differenze. Tor Browser standardizza o limita diversi attributi, comprese dimensioni tramite letterboxing e disponibilità dei font, per rendere meno distinguibili gli utenti. Aggiungere estensioni e personalizzazioni insolite può andare nella direzione opposta: lo segnala anche EFF.
Separare le attività. Un accesso al tuo account dà al servizio un collegamento esplicito, anche se alcuni segnali sono stati ridotti. Allo stesso modo, cambiare IP non cancella le proprietà che il browser espone. Una VPN e una difesa dal fingerprinting agiscono su piani diversi.
La falsa sicurezza del numero verde
Un test online può essere utile, ma invia necessariamente dati al servizio che lo esegue e valuta un insieme limitato di segnali. Un’etichetta “unico” riguarda il campione e il metodo adottati; non è un verdetto su tutta Internet. Una protezione può essere efficace anche senza cambiare ogni campo del nostro esperimento, per esempio bloccando il raccoglitore prima che parta.
Per un controllo pratico scegli una configurazione supportata, misura prima e dopo, verifica che i siti necessari funzionino e registra le eccezioni. Non serve trasformare il browser in un collage di venti componenti “anti-spia”. Serve sapere quale informazione hai ridotto e quale collegamento rimane possibile. Le altre tracce, come i metadati lasciati in foto e documenti, richiedono controlli separati.
Domande frequenti
L’audio fingerprinting registra quello che dico?
Il metodo basato su OfflineAudioContext elabora un segnale sintetico in memoria e non ha bisogno del microfono. Registrare audio ambientale tramite getUserMedia è un’operazione diversa, soggetta a permesso.
Se cancello i cookie cambia anche la mia impronta?
Non necessariamente. Lingua, rendering e altre caratteristiche possono restare uguali. Alcuni browser riducono o modificano determinati segnali: va verificato quali, in quella configurazione.
Un hash uguale significa che il sito sa chi sono?
No. Può indicare soltanto che i dati usati nel test coincidono. Il collegamento a un’identità richiede ulteriori informazioni, per esempio un account; anche ambienti diversi possono produrre lo stesso risultato.
Una VPN impedisce il fingerprinting?
Cambia il percorso di rete e l’indirizzo IP visto dal sito, ma non rende automaticamente uguali o diversi i risultati delle API del browser. Protezione della rete e riduzione dell’impronta sono problemi distinti.
Questo test certifica che il browser è anonimo?
No. Misura solo pochi segnali sul tuo dispositivo. Non dispone di una popolazione di confronto, non simula tutti i tracker e non misura la capacità di collegare visite tra siti diversi.
Fonti e approfondimenti
- W3C — Mitigating Browser Fingerprinting in Web Specifications
- W3C — Web Audio API, considerazioni su privacy e fingerprinting
- MDN — OfflineAudioContext
- Mozilla — Firefox’s protection against fingerprinting
- Tor Project — Fingerprinting protections
- EFF — Cover Your Tracks: come funzionano i tracker
- Hacker Journal 292 — Tracciamento audio, pp. 58–60; periodo di copertina dicembre/gennaio



