Eine Visitor ID, egal wie oft sie zurückkehren
Der Agent wandelt mehr als 100 Gerätesignale auf dem Server in eine visitor ID um. Inkognito, gelöschte Cookies und Browser-Updates erzeugen keinen neuen Besucher.
Was ein wiederkehrender Besucher ändern kann
Die ID steht für das Gerät, nicht für das Cookie und nicht für die Verbindung.
| Sie kommen zurück mit | Gleiche Visitor ID | Warum |
|---|---|---|
| Ein privates oder Inkognito-Fenster | Gleich | Speicher ist leer, die Hardware nicht. |
| Cookies und Websitedaten gelöscht | Gleich | Hardware-Anker und Fingerprint stimmen weiterhin überein. |
| Ein Browser-Update | Gleich | Eine neue Version verschiebt einige Signale; Fuzzy-Matching fängt das ab. |
| Ein VPN oder eine neue IP-Adresse | Gleich | Die IP ist kein Teil der ID. Sie erscheint stattdessen in den Flags. |
| Ein neues Konto auf demselben Gerät | Gleich | So erscheinen Mehrfachkonten: ein Gerät, viele external IDs. |
| Anderer Browser auf demselben Gerät | Neuer Besucher | Jeder Browser rendert anders, daher ist es ein anderer Fingerprint. |
| Anderes Gerät | Neuer Besucher | Die ID ist das Gerät. |
In Reihenfolge zugeordnet
Jede Identifizierung wird absteigend ab dem sichersten Treffer gegen die Besucher des Projekts geprüft; das Ereignis nennt den Treffer.
- Gespeicherte ID
- ID, die der Agent im Speicher und in einem First-Party-Cookie hinterlegt, solange die Hardware übereinstimmt.
- Hardware-Anker
- Grafik, Kerne, Speicher und Plattform, die ein Browser-Update oder gelöschter Speicher nicht ändert.
- Bekannter Fingerabdruck
- Exakt dieselben Signale wie zuvor in Ihrem Projekt.
- Unscharfer Abgleich
- Komponente für Komponente gegen aktuelle Besucher auf derselben Hardware, mit Abstand zum nächstbesten.
- Rauschbewusst
- Canvas und Audio werden weggelassen, wenn ein Browser sie zufällig verändert, z. B. Brave und private Fenster.
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',
})Mehr als 100 Signale
Von Grund auf erfasst, ohne WebRTC-Netzwerkadressen.
Rendering
Canvas, WebGL-Anbieter, Renderer, Erweiterungen und Parameter, WebGPU-Adapter und Audio.
Gerät
Bildschirm, Farbtiefe, Pixelverhältnis, Kerne, Speicher, Touch, Plattform, Client Hints, Schriften und Stimmen.
Einstellungen
Zeitzone, Sprachen, Kalender, Medienpräferenzen, Speicherkontingent und Berechtigungsstatus.
Integrität
Automatisierungsreste, ersetzte native Funktionen und Werte, die zwischen Seite, Worker und iFrame abweichen.
Ehrlich über die Grenzen
Eine ID, auf die du Entscheidungen stützen kannst, weil sie angibt, wie sicher sie ist.
Eine ID pro Projekt
Die ID wird mit deinem Projekt gehasht, sodass dasselbe Gerät überall sonst eine andere ID hat. Niemand kann deine Besucher über Dienste hinweg verfolgen.
Vertrauen bei jedem Ereignis
Sicherheit des Treffers von 0 bis 1. Ein unscharfer Treffer auf einem gängigen Gerät ergibt einen niedrigeren Wert als eine gespeicherte ID auf seltener Hardware.
Ein Hinweis, kein Beweis
Identische Geräte, etwa dasselbe Handymodell mit demselben OS, können eine ID teilen. Prüfe eine geteilte ID zusammen mit den external IDs, Flags und der Verbindung.
Identifiziere heute deinen ersten Besucher
Installiere den Agent, lies das Ereignis auf deinem Server und schon bist du fertig.