Zeno
登录
免费 每月 … 次识别 · 之后按量付费

设备识别
适用于每个 注册

即使在无痕模式下或清除了 Cookie,也能识别回访的浏览器,捕获机器人和伪造设备,并在采取行动前在您的服务器上确认每个结果。

查看我们能从此浏览器中获取哪些信息。运行演示会将其信号发送给我们,并在浏览器中存储一个 ID。

每次识别都会告诉你什么

您代码使用的 API 中,以及供审核人员查看案例的控制台中。

每次识别,实时呈现

新事件几秒内出现,包含访客、external ID 和时间。

已标记机器人和欺骗

自动化、无头浏览器、软件渲染、被替换的原生函数以及不匹配的时区。

可识别共享设备

设备会列出其上出现过的所有 external ID,便于发现多账号。

在后端验证

浏览器只会获得 request ID。您的服务器使用 secret key 获取事件并做出决策。

一次调用即可忘记 external ID

删除 external ID 后,其所有事件和设备关联都会被移除。

按量付费

无需套餐或承诺。每个计费周期结束后,按已使用的识别次数付费,每次均包含全部信号、服务器 API 和控制台。

查看套餐和所有价格 →

所示价格不包含适用的税费(如增值税)。

三步完成从安装到验证

浏览器获得 request ID,您的服务器获得完整信息。

  1. 1

    添加代理

    由 api 提供的一个 script 标签,或来自 npm 的类型化 ES 模块。

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

    在浏览器中识别

    表单打开时启动,用户登录后获取 request ID。

    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

    在服务器上验证

    用 secret key 读取事件并做出决策。浏览器永远看不到标记。

    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,无 SDK 锁定

    只需一个请求头,即可对 /events、/visitors 和 /external-ids 使用 GET、PATCH 和 DELETE。

  • 难以泄露的密钥

    带校验和的 pk_ 和 sk_ 前缀;密钥以哈希形式存储,仅显示一次。

  • 搜索每个事件

    按访客、external ID、IP、flag、机器人判定、风险分数和日期筛选。

  • 一次调用即可删除 external ID

    DELETE /external-ids/{id} 会删除该 ID 的所有事件和设备关联。

问题

支持我的框架吗? +

是的。agent 是无依赖的纯 ES 模块,可在 React、Svelte、Vue 或无框架环境中运行。不使用打包工具时,加载 /agent.js 并使用全局 FingerprintAgent。

共用的 visitor ID 能证明是多账号吗? +

否。相同设备(例如相同系统的同款手机)具有相同的指纹,因此没有已存储 ID 的浏览器可能会与他人的 visitor ID 匹配。请将其视为线索,结合 external ID、flags 和连接信息一起审查。

代理会收集什么? +

100多种设备信号:canvas、WebGL、音频、字体、屏幕、硬件、区域设置、插件和自动化痕迹。绝不读取WebRTC网络地址。

达到预算或用量上限时会发生什么? +

识别会静默暂停:代理返回 capped 而非 request ID,因此用户不会看到错误,登录功能继续正常工作。可按天、周或月设置预算,并为每个密钥设置支出上限。其他内容不受速率限制。

如果不适合我呢? +

您可以拿回您的钱。首次付款账单后的前三个月内如果您不满意,我们将无条件退还该期间内您支付的全部费用。

数据存储在哪里? +

欧盟内,位于 AWS eu-west-1。事件将保留至您删除为止,若您选择,则保留 1、3 或 5 年。一次 API 调用即可清除您某个用户的所有已存储数据。

你的首次识别,只需几分钟

按量付费,包含所有信号。