ひとつの visitor ID で、どのように再訪しても
エージェントは100以上のデバイスシグナルをサーバー上でvisitor IDに変換します。シークレットモード、Cookieの削除、ブラウザのアップデートでは新しい訪問者は作成されません。
再訪問したビジターが変更できること
IDは端末を示し、Cookieや接続ではありません。
| 再訪時の状態 | 同じvisitor ID | 理由 |
|---|---|---|
| プライベートウィンドウまたはシークレットウィンドウ | なぜ | ストレージは空、ハードウェアは違う。 |
| Cookie とサイトデータを消去しました | なぜ | ハードウェアアンカーとフィンガープリントは引き続き一致しています。 |
| ブラウザのアップデート | なぜ | 新バージョンでいくつかのシグナルが変わりますが、ファジーマッチングが吸収します。 |
| VPNまたは新しいIPアドレス | なぜ | IPはIDの一部ではありません。代わりにflagsに表示されます。 |
| 同じデバイス上の新しいアカウント | なぜ | マルチアカウントはこのように表示されます:1つのデバイスに多数の external ID。 |
| 同じデバイス上の別のブラウザ | 新規訪問者 | ブラウザごとに描画が異なるため、別のフィンガープリントになります。 |
| 別のデバイス | 新規訪問者 | IDはデバイスです。 |
順番に一致
各識別は、最も確実な一致から順にプロジェクトの訪問者と照合され、イベントでどれが一致したかがわかります。
- 保存済みID
- エージェントがストレージとファーストパーティCookieに保存したID。ハードウェアが一致している間有効です。
- ハードウェアのアンカー
- ブラウザのアップデートやストレージの削除では変わらない、グラフィック、コア数、メモリ、プラットフォーム。
- 既知のフィンガープリント
- プロジェクト内で以前確認されたものと全く同じシグナルです。
- あいまい一致
- 同じハードウェア上の最近の訪問者とコンポーネントごとに比較し、次点との差を考慮します。
- ノイズ認識
- ブラウザが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確からしさを示すため。
プロジェクトごとに1つのID
IDはプロジェクトとともにハッシュ化されるため、同じデバイスでも他の場所では別のIDになります。誰もサービスをまたいで訪問者を追跡できません。
すべてのイベントに信頼度
一致の確度(0〜1)。一般的なデバイスでのあいまい一致は、希少なハードウェアで保存済みのIDより低いスコアになります。
手がかりであり、証拠ではない
同じ機種・同じOSの端末など、同一のデバイスはIDを共有することがあります。共有IDは external IDs、フラグ、接続情報と合わせて確認してください。
今すぐ最初のビジターを識別
エージェントをインストールし、サーバーでイベントを読み取るだけで完了です。