Un visitor ID, comunque tornino
L'agent trasforma oltre 100 segnali del dispositivo in un visitor ID sul server. Modalità incognito, cookie cancellati e aggiornamenti del browser non creano un nuovo visitatore.
Cosa può modificare un visitatore di ritorno
L'ID è il dispositivo, non il cookie né la connessione.
| Tornano con | Stesso visitor ID | Perché |
|---|---|---|
| Una finestra privata o in incognito | Stesso | La memoria è vuota, l'hardware no. |
| Cookie e dati del sito cancellati | Stesso | L'hardware anchor e il fingerprint corrispondono ancora. |
| Un aggiornamento del browser | Stesso | Una nuova versione modifica alcuni segnali; il fuzzy matching li assorbe. |
| Una VPN o un nuovo indirizzo IP | Stesso | L'IP non fa parte dell'ID. Compare invece nei flag. |
| Un nuovo account sullo stesso dispositivo | Stesso | Ecco come appaiono i multi-account: un dispositivo, molti external ID. |
| Altro browser sullo stesso dispositivo | Nuovo visitatore | Ogni browser visualizza in modo diverso, quindi è un'altra impronta. |
| Un altro dispositivo | Nuovo visitatore | L'ID è il dispositivo. |
Corrispondenza in ordine
Ogni identificazione viene verificata con i visitatori del progetto, dalla corrispondenza più sicura in giù, e l'evento indica quale ha trovato riscontro.
- ID memorizzato
- ID salvato dall'agente nello storage e in un cookie first-party, finché l'hardware corrisponde.
- Ancora hardware
- Grafica, core, memoria e piattaforma, che non cambiano con un aggiornamento del browser o la cancellazione dei dati.
- Impronta nota
- Gli stessi identici segnali già visti nel tuo progetto.
- Corrispondenza approssimativa
- Componente per componente rispetto ai visitatori recenti sullo stesso hardware, con un margine sul secondo migliore.
- Consapevole del rumore
- Canvas e audio vengono esclusi quando un browser li randomizza, come Brave e le finestre private.
import { start } from 'zeno-id'
const agent = start({ publicKey: 'pk_...' })
// A stable ID per device, and whether it was seen before.
const { visitorId, returning, requestId } = await agent.get({
externalId: user.id,
action: 'login',
})Oltre 100 segnali
Raccolto da zero, senza indirizzi di rete WebRTC.
Rendering
Canvas, vendor, renderer, estensioni e parametri WebGL, adattatore WebGPU e audio.
Dispositivo
Schermo, profondità colore, rapporto pixel, core, memoria, touch, piattaforma, client hints, font e voci.
Impostazioni
Fuso orario, lingue, calendario, preferenze multimediali, quota di archiviazione e stati dei permessi.
Integrità
Residui di automazione, nativi sostituiti e valori che differiscono tra la pagina, un worker e un iframe.
Onesti sui limiti
Un ID su cui basare decisioni perché indica quanto è sicuro.
Un ID per progetto
L'ID viene sottoposto a hash con il tuo progetto, quindi lo stesso dispositivo ha un ID diverso altrove. Nessuno può seguire i tuoi visitatori tra i servizi.
Affidabilità in ogni evento
Quanto è sicura la corrispondenza, da 0 a 1. Una corrispondenza approssimativa su un dispositivo comune ottiene un punteggio più basso di un ID salvato su hardware raro.
Un indizio, mai una prova
Dispositivi identici, come lo stesso modello di telefono con lo stesso OS, possono condividere un ID. Verifica un ID condiviso insieme a external IDs, flag e connessione.
Identifica il primo visitatore oggi
Installa l'agente, leggi l'evento sul tuo server ed è fatta.