Zeno
Iniciar sesión
Gratis … identificaciones al mes · Después, pago por uso

Identificación de dispositivos
para cada Regístrate

Reconozca un navegador que regresa incluso en incógnito o con cookies borradas, detecte bots y dispositivos falsificados, y confirme cada resultado en su servidor antes de actuar.

Descubre qué podemos saber de este navegador. Al ejecutar la demo, sus señales se envían a nosotros y se guarda un ID en él.

Lo que revela cada identificación

En la API para tu código y en el panel para quien revisa el caso.

Cada identificación, en vivo

Los nuevos eventos aparecen en segundos, con el visitor, el external ID y la hora.

Bots y spoofing detectados

Automatización, navegadores headless, renderizado por software, nativos reemplazados y zonas horarias que no coinciden.

Se detectan dispositivos compartidos

Un dispositivo muestra cada external ID vista en él, para detectar cuentas múltiples.

Verifica en tu backend

El navegador solo recibe un request ID. Tu servidor obtiene el evento con su secret key y decide.

Olvidar un external ID en una llamada

Elimina un external ID y todos sus eventos y vínculos de dispositivo desaparecen.

Pago por uso

Sin planes ni compromisos. Tras cada ciclo de facturación pagas por las identificaciones usadas, cada una con todas las señales, la API del servidor y el panel.

Ver planes y todos los precios →

Los precios mostrados no incluyen impuestos ni tasas aplicables (p. ej. IVA).

De la instalación a la verificación en tres pasos

El navegador recibe un request ID, tu servidor obtiene todos los detalles.

  1. 1

    Añadir el agente

    Una etiqueta script servida por la api, o un módulo ES tipado desde npm.

    login.html
    <script src="https://zenocdn.net/agent.js"></script>
    <script>
    	const agent = FingerprintAgent.start({ endpoint: 'https://zenocdn.net', publicKey: 'pk_...' })
    </script>
  2. 2

    Identifica en el navegador

    Inícialo al abrir el formulario y obtén un request ID cuando el usuario inicie sesión.

    login.js
    // After a successful login:
    const { requestId } = await agent.get({ externalId: user.id })
    
    await fetch('/api/login/verify', { method: 'POST', body: JSON.stringify({ requestId }) })
  3. 3

    Verifica en tu servidor

    Lee el evento con la secret key y decide. El navegador nunca ve un flag.

    login.server.ts
    const response = await fetch(`https://api.zeno.id/events/${requestId}`, {
    	headers: { 'Auth-API-Key': process.env.FP_SECRET_KEY },
    })
    const event = await response.json()
    
    if (event.bot === 'bad' || event.riskScore >= 15) {
    	throw new Error('Review this login')
    }
  • REST, sin dependencia de SDK

    GET, PATCH y DELETE en /events, /visitors y /external-ids, con un solo header.

  • Claves difíciles de filtrar

    Prefijos pk_ y sk_ con checksum; las secret keys se guardan como hash y se muestran una sola vez.

  • Busca cada evento

    Filtra por visitante, external ID, IP, flag, veredicto de bot, puntuación de riesgo y fecha.

  • Borra un external ID en una sola llamada

    DELETE /external-ids/{id} elimina todos los eventos y vínculos de dispositivo de ese ID.

Preguntas

¿Funciona con mi framework? +

Sí. El agente es un módulo ES simple sin dependencias, así que funciona en React, Svelte, Vue o sin framework. Sin bundler, carga /agent.js y usa el global FingerprintAgent.

¿Es un visitor ID compartido prueba de varias cuentas? +

No. Los dispositivos idénticos, como el mismo modelo de teléfono con el mismo SO, tienen la misma huella digital, así que un navegador sin su ID guardado puede coincidir con el visitor ID de otro. Tómalo como una pista para revisar junto con los external IDs, flags y la conexión.

¿Qué recopila el agent? +

Más de 100 señales del dispositivo: canvas, WebGL, audio, fuentes, pantalla, hardware, configuración regional, plugins y restos de automatización. Nunca lee direcciones de red WebRTC.

¿Qué pasa al alcanzar un presupuesto o el límite de uso? +

La identificación se pausa silenciosamente: el agente responde con capped en lugar de un request ID, así tus usuarios nunca ven un error y tu inicio de sesión sigue funcionando. Define presupuestos por día, semana o mes, y un límite de gasto por clave. Nada más tiene límite de tasa.

¿Y si no es para mí? +

Le devolvemos su dinero. ¿No está satisfecho en los primeros tres meses después de su primera factura pagada? Le reembolsamos todo lo que pagó en ese periodo, sin preguntas.

¿Dónde se almacenan los datos? +

En la UE, en AWS eu-west-1. Los eventos se conservan hasta que los borres, o durante 1, 3 o 5 años si lo eliges, y una sola llamada a la API borra todo lo almacenado de uno de tus usuarios.

Tu primera identificación, en minutos

Pago por uso, todas las señales incluidas.