Eén visitor ID, hoe ze ook terugkomen
De agent zet meer dan 100 apparaatsignalen om in een visitor ID op de server. Incognito, gewiste cookies en browserupdates maken geen nieuwe bezoeker.
Wat een terugkerende bezoeker kan wijzigen
De ID is het apparaat, niet de cookie en niet de verbinding.
| Ze komen terug met | Zelfde bezoeker-ID | Waarom |
|---|---|---|
| Privé- of incognitovenster | Zelfde | Opslag is leeg, de hardware niet. |
| Cookies en sitegegevens gewist | Zelfde | Het hardware-anker en de fingerprint komen nog steeds overeen. |
| Een browserupdate | Zelfde | Een nieuwe versie wijzigt enkele signalen; fuzzy matching vangt dit op. |
| Een VPN of een nieuw IP-adres | Zelfde | Het IP maakt geen deel uit van de ID. Het wordt in plaats daarvan in de flags getoond. |
| Een nieuw account op hetzelfde apparaat | Zelfde | Zo verschijnen meerdere accounts: één apparaat, veel external ID's. |
| Andere browser op hetzelfde apparaat | Nieuwe bezoeker | Elke browser rendert anders, dus het is een andere fingerprint. |
| Ander apparaat | Nieuwe bezoeker | De ID is het apparaat. |
In volgorde gevonden
Elke identificatie wordt gecontroleerd tegen de bezoekers van het project, van de zekerste match naar beneden, en het event vermeldt welke klopte.
- Opgeslagen ID
- Het ID dat de agent in opslag en in een first-party-cookie bewaarde, zolang de hardware nog overeenkomt.
- Hardware-anker
- Grafische kaart, cores, geheugen en platform, die niet veranderen bij een browserupdate of het wissen van opslag.
- Bekende fingerprint
- Exact dezelfde signalen die eerder in je project zijn gezien.
- Fuzzy-matching
- Component voor component vergeleken met recente bezoekers op dezelfde hardware, met een marge boven de volgende beste.
- Ruisbewust
- Canvas en audio worden weggelaten wanneer een browser ze randomiseert, zoals Brave en privévensters.
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',
})Meer dan 100 signalen
Vanaf nul verzameld, zonder WebRTC-netwerkadressen.
Renderen
Canvas, WebGL-vendor, renderer, extensies en parameters, de WebGPU-adapter en audio.
Apparaat
Scherm, kleurdiepte, pixelverhouding, cores, geheugen, touch, platform, client hints, lettertypen en stemmen.
Instellingen
Tijdzone, talen, agenda, mediavoorkeuren, opslagquota en machtigingsstatus.
Integriteit
Automatiseringsrestanten, vervangen native-functies en waarden die verschillen tussen de pagina, een worker en een iframe.
Eerlijk over de beperkingen
Een ID waarop je beslissingen kunt baseren, omdat het aangeeft hoe zeker het is.
Eén ID per project
Het ID wordt gehasht met je project, dus hetzelfde apparaat heeft overal elders een ander ID. Niemand kan je bezoekers over diensten heen volgen.
Vertrouwen bij elke gebeurtenis
Hoe zeker de match is, van 0 tot 1. Een fuzzy match op een veelvoorkomend apparaat scoort lager dan een opgeslagen ID op zeldzame hardware.
Een aanwijzing, nooit bewijs
Identieke apparaten, zoals hetzelfde telefoonmodel met hetzelfde besturingssysteem, kunnen een ID delen. Bekijk een gedeeld ID samen met de external IDs, flags en verbinding.
Identificeer vandaag je eerste bezoeker
Installeer de agent, lees de gebeurtenis op je server en klaar ben je.