Un visitor ID, sin importar cómo regresen
El agente convierte más de 100 señales del dispositivo en un visitor ID en el servidor. El modo incógnito, las cookies borradas y las actualizaciones del navegador no crean un nuevo visitante.
Lo que un visitante recurrente puede cambiar
El ID es el dispositivo, no la cookie ni la conexión.
| Regresan con | Mismo visitor ID | Por qué |
|---|---|---|
| Una ventana privada o de incógnito | Igual | El almacenamiento está vacío, el hardware no. |
| Cookies y datos del sitio borrados | Igual | El anclaje de hardware y la huella digital siguen coincidiendo. |
| Una actualización del navegador | Igual | Una nueva versión modifica algunas señales; la coincidencia aproximada lo absorbe. |
| Una VPN o una nueva dirección IP | Igual | La IP no forma parte del ID. Aparece en los flags en su lugar. |
| Una cuenta nueva en el mismo dispositivo | Igual | Así aparecen las cuentas múltiples: un dispositivo, muchos external IDs. |
| Otro navegador en el mismo dispositivo | Nuevo visitante | Cada navegador renderiza de forma distinta, así que es otra huella digital. |
| Otro dispositivo | Nuevo visitante | El ID es el dispositivo. |
Coincidencia en orden
Cada identificación se comprueba con los visitantes del proyecto desde la coincidencia más segura hacia abajo, y el evento indica cuál se cumplió.
- ID almacenado
- ID que el agente guardó en el almacenamiento y en una cookie de origen propio, mientras el hardware coincida.
- Ancla de hardware
- Gráficos, núcleos, memoria y plataforma, que no cambian con una actualización del navegador ni al borrar datos.
- Huella digital conocida
- Exactamente las mismas señales vistas antes en tu proyecto.
- Coincidencia aproximada
- Componente por componente frente a visitantes recientes en el mismo hardware, con margen sobre el siguiente mejor.
- Consciente del ruido
- Canvas y audio se omiten cuando un navegador los aleatoriza, como Brave y las ventanas privadas.
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',
})Más de 100 señales
Recopilado desde cero, sin direcciones de red WebRTC.
Renderizado
Canvas, proveedor y renderizador de WebGL, extensiones y parámetros, adaptador de WebGPU y audio.
Dispositivo
Pantalla, profundidad de color, relación de píxeles, núcleos, memoria, táctil, plataforma, client hints, fuentes y voces.
Ajustes
Zona horaria, idiomas, calendario, preferencias de medios, cuota de almacenamiento y estados de permisos.
Integridad
Restos de automatización, nativos reemplazados y valores que difieren entre la página, un worker y un iframe.
Transparentes sobre los límites
Un ID en el que puedes basar decisiones porque indica cuánta certeza tiene.
Un ID por proyecto
El ID se hashea con tu proyecto, así que el mismo dispositivo tiene otro ID en cualquier otro lugar. Nadie puede seguir a tus visitantes entre servicios.
Confianza en cada evento
Qué tan segura es la coincidencia, de 0 a 1. Una coincidencia aproximada en un dispositivo común puntúa menos que un ID guardado en hardware poco común.
Una pista, nunca una prueba
Dispositivos idénticos, como el mismo modelo de teléfono con el mismo SO, pueden compartir un ID. Revisa un ID compartido junto con los external IDs, flags y la conexión.
Identifica a tu primer visitante hoy
Instala el agente, lee el evento en tu servidor y listo.