Один visitor ID, как бы они ни возвращались
Агент преобразует более 100 сигналов устройства в visitor ID на сервере. Режим инкогнито, очистка cookie и обновления браузера не создают нового посетителя.
Что может изменить вернувшийся посетитель
ID — это устройство, а не cookie и не соединение.
| Они возвращаются с | Тот же ID посетителя | Зачем |
|---|---|---|
| Приватное или инкогнито-окно | То же самое | Хранилище пустое, а железо — нет. |
| Cookies и данные сайта очищены | То же самое | Аппаратный якорь и отпечаток по-прежнему совпадают. |
| Обновление браузера | То же самое | Новая версия меняет некоторые сигналы; нечеткое сопоставление их компенсирует. |
| VPN или новый IP-адрес | То же самое | IP не входит в ID. Он отображается во flags. |
| Новый аккаунт на том же устройстве | То же самое | Так проявляются множественные аккаунты: одно устройство, много external ID. |
| Другой браузер на том же устройстве | Новый посетитель | Каждый браузер отображает по-своему, поэтому это другой отпечаток. |
| Другое устройство | Новый посетитель | ID — это устройство. |
Совпало по порядку
Каждая идентификация сверяется с посетителями проекта от самого точного совпадения вниз, а событие указывает, какое совпадение сработало.
- Сохранённый ID
- ID, который агент сохранил в хранилище и в cookie первой стороны, пока оборудование совпадает.
- Аппаратный якорь
- Графика, ядра, память и платформа, которые не меняются при обновлении браузера или очистке хранилища.
- Известный отпечаток
- Точно такие же сигналы, которые уже встречались в вашем проекте.
- Нечеткое сопоставление
- Компонент за компонентом с недавними посетителями на том же оборудовании, с запасом над следующим.
- Учёт шума
- Canvas и аудио не учитываются, если браузер их рандомизирует, например Brave и приватные окна.
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, шрифты и голоса.
Настройки
Часовой пояс, языки, календарь, медиа-настройки, квота хранилища и состояния разрешений.
Целостность
Следы автоматизации, подменённые нативные функции и значения, отличающиеся между страницей, воркером и iframe.
Честно о границах
ID, на основе которого можно принимать решения, так как он показывает степень уверенности.
Один ID на проект
ID хешируется вместе с вашим проектом, поэтому то же устройство получает другой ID в других местах. Никто не может отслеживать ваших посетителей между сервисами.
Уверенность в каждом событии
Уверенность совпадения от 0 до 1. Нечёткое совпадение на распространённом устройстве получает меньший балл, чем сохранённый ID на редком оборудовании.
Подсказка, но не доказательство
Одинаковые устройства, например одна и та же модель телефона с той же ОС, могут получить одинаковый ID. Проверяйте общий ID вместе с external ID, флагами и соединением.
Идентифицируйте первого посетителя сегодня
Установите агент, считайте событие на сервере и готово.