Di solito, gli IP assegnati sono in un piccolo pool.
Quindi otterrai 192.168.0.1, 192.168.0.37, 192.168.0.144.
Esistono diverse tecniche di fingerprinting del browser (puoi controllare il sito EFF per quello). Al livello più basso controlli l'utente-agente. Altri metodi utilizzano Javascript, Java e Flash.
Potresti provare a configurare il tuo sito web per distribuire cookie e vedere se tornano da te. Oppure puoi consultare supercookies .
Più di nascosto, puoi fornire un collegamento a un sito esterno al tuo, ad esempio un collegamento CDN a jQuery. La maggior parte dei CDN consente una sintassi rilassata per la richiesta di risorse, quindi è possibile chiedere, ad esempio,
...library.js?v=17a4&os=win7
e non apparirà sospetto. Il file library.js verrà scaricato ed eseguito da un sito che non controlli. Sembra legittimo.
Ma quello che farai davvero è impostare le cose in modo che l'elaborazione della pagina non proceda finché non viene caricata la libreria. E quel numero di versione viene inviato solo ai ragazzi di quella specifica rete. E nel resto della pagina hai un'altra risorsa che deve essere caricata.
A meno che il ragazzo anche cancelli la cache, la prossima volta che la tua pagina verrà caricata, neanche chiederà per quella libreria, o si soddisferà con un 304 Not Modificato. Quindi un nuovo sconosciuto capirà 400 millisecondi dalla richiesta HTML alla risorsa di tracciamento. Un ragazzo con cache innescata, anche con IP diversi, impiegherà 150 millisecondi. E puoi impostare più di uno script con questo trucco.
Sai che il ragazzo è lo stesso di prima, perché nessun altro ha ottenuto il numero di versione falso specifico "17a4".
Allo stesso modo, puoi avere diverse miniature casuali in una pagina e vedere se il client le sta richiedendo tutte. Se alcuni di essi non vengono richiesti (il che significa che il client li ha nella cache), puoi esaminare un database a cui hai servito quella particolare combinazione unica di miniature (o annunci falsi, per quella materia).
In Javascript è anche possibile accedere alla memoria del browser locale; puoi usarlo per memorizzare ciò che equivale a un "cookie" che sopravviverà alla cancellazione della cache (ma non alla cancellazione della memoria locale).