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 子源,多信号组合用 |
| 反爬 | 不推荐 —— 指纹易被脚本伪造,请用更专业的反爬方案 |
下一步
- 快速上手 —
load()/get()完整 API - 高级用法 — 单独导入子源、自定义 source
- 商业化投放接入 — 合规 / 归因 / CSP 兜底
- API Reference — 完整 API 文档(自动生成)
- Playground — 交互式测试 + 实时网络面板验证