Skip to content

Fingerprint

@tripo3d/fingerprint · 浏览器指纹库,派生自 FingerprintJS v5.2.0,已物理移除遥测,由本团队维护。

特性

🎯

高熵指纹

Canvas、WebGL、Audio、Font、屏幕、时区等数十个特征源组合,碰撞率低

🔇

零网络请求

原作的 0.1% 采样安装统计 monitor() 已物理删除,运行期间不发任何 XHR/fetch/sendBeacon

🧊

稳定 visitor id

基于 MurmurHash3 x64 128 的 32 位十六进制 hash,Safari/Firefox 反指纹模式下走稳定化分支

🌳

ESM Tree-shaking

单一 ESM 入口 + sideEffects:false,按需引入子源不拖大 bundle

🛠️

子源可独立调用

Canvas/WebGL/Audio/Screen 等都暴露 getUnstableXxx,可拆开做风控信号

📜

MIT 合规

保留上游版权声明,差异详见 NOTICE.md,可放心内部使用

安装

请先完成 GitHub Packages 认证配置

bash
pnpm add @tripo3d/fingerprint

快速开始

ts
import FP from '@tripo3d/fingerprint';

// 加载并预热(含 requestIdleCallback 延迟以保证特征稳定性)
const fp = await FP.load();

// 取指纹
const { visitorId, confidence, components, version } = await fp.get();

console.log(visitorId);   // 32 位十六进制字符串
console.log(confidence);  // { score: 0..1, comment?: string }
console.log(components);  // 全部特征源采集结果

适用场景

场景推荐用法
匿名访客去重(PV → UV)直接用 visitorId 作为前端 cookie/localStorage 兜底
商业化投放归因商业化投放先 click_id,指纹只做兜底
风控信号单独取 Canvas/WebGL/Audio 子源,多信号组合用
反爬不推荐 —— 指纹易被脚本伪造,请用更专业的反爬方案

下一步

基于 MIT 协议发布(内部使用)