Zeno
登录

一个 visitor ID,无论他们如何回来

代理在服务器上将100多个设备信号转换为visitor ID。无痕模式、清除Cookie和浏览器更新不会产生新的访问者。

回访访客可以更改的内容

ID 指的是设备,而不是 Cookie 或连接。

他们带着回来相同的访客 ID为什么
隐私窗口或无痕窗口相同存储为空,硬件却不是。
已清除 Cookie 和网站数据相同硬件锚点和指纹仍然匹配。
浏览器更新相同新版本会改变部分信号;模糊匹配会自动消化这些变化。
VPN 或新的 IP 地址相同IP 不属于 ID 的一部分,它会显示在 flags 中。
同一设备上的新账户相同多账户就是这样出现的:一台设备,多个 external ID。
同一设备上的其他浏览器新访客每个浏览器的渲染方式不同,因此这是另一个指纹。
其他设备新访客ID 即设备。

按顺序匹配

每次识别都会按从最可靠到较弱的匹配顺序与项目访客比对,事件会说明命中的是哪一个。

已存储的 ID
代理在存储和第一方 Cookie 中保存的 ID,只要硬件仍然匹配。
硬件锚点
图形、核心数、内存和平台,浏览器更新或清除存储不会改变这些信息。
已知指纹
与您项目中之前出现过的信号完全相同。
模糊匹配
按组件与同一硬件上的近期访客逐项比对,并与次优结果保持一定差距。
噪声感知
当浏览器随机化 Canvas 和音频时(如 Brave 和隐私窗口),这些数据会被忽略。
login.ts
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',
})

100 多个信号

从零开始收集,不包含 WebRTC 网络地址。

  • 渲染

    Canvas、WebGL 供应商、渲染器、扩展和参数、WebGPU 适配器和音频。

  • 设备

    屏幕、色深、像素比、核心数、内存、触摸、平台、client hints、字体和语音。

  • 设置

    时区、语言、日历、媒体偏好、存储配额和权限状态。

  • 完整性

    自动化残留、被替换的原生方法以及在页面、Worker 和 iframe 之间不一致的值。

查看 signals 标志 →

坦诚说明局限性

可用于决策的 ID,因为它会说明其可信度。

  • 每个项目一个 ID

    ID 会与您的项目一起进行哈希处理,因此同一设备在其他地方会有不同的 ID。任何人都无法跨服务追踪您的访问者。

  • 每个事件的置信度

    匹配的可信度,范围 0 到 1。常见设备上的模糊匹配得分低于稀有硬件上已存储的 ID。

  • 仅作线索,绝非证据

    相同的设备(例如同一型号、同一系统的手机)可能共享同一个 ID。请结合 external ID、flags 和连接信息来审查共享 ID。

今天就识别您的第一位访客

安装代理,在服务器上读取事件即可完成。