4.内置反作弊分析系统
听起来是不是有点离谱?一个 npm 包,居然还能判断“这人是不是机器人”?别急,我们一个个拆解。npm install fingerprinter-js没错,就这么简单。没有花里胡哨的配置,没有复杂的构建流程,直接导入就能用。
维度 | 采集内容示例 |
---|---|
Canvas | 图形渲染差异 |
WebGL | 显卡驱动信息 |
Audio | 音频栈指纹 |
Fonts | 已安装字体列表 |
Plugins | 插件存在性 |
屏幕分辨率 | 分辨率 + 缩放 |
时区语言 | 地域行为特征 |
{ version: "1.0", // ✅ 稳定,保留 theme: "dark", // ✅ 稳定,保留 timestamp: Date.now(), // ❌ 像时间戳?删! sessionId: "uuid-xxx", // ❌ 像随机ID?删! nonce: Math.random() // ❌ 明显不稳定?统统过滤! }默认情况下,它会通过命名规则和值类型智能识别并移除这类字段,确保生成的指纹跨会话稳定一致。当然,如果你非要想“自毁长城”,也可以手动开启:
allowUnstableData: true——但作者贴心地加了 ⚠️ 警告:“不推荐!”
{ score: 45, // 0~100风险分 riskLevel: 'MEDIUM', signals: ['headless-browser', 'missing-webgl'], details: { ... } }它能检测:
const result = await Fingerprint.generate({ includeSuspectAnalysis: true }); // 堆代码 duidaima.com if (result.suspectAnalysis.score > 70) { console.log("🚨 高危用户,建议拦截或二次验证"); } elseif (result.suspectAnalysis.score > 30) { console.log("⚠️ 中等风险,记录日志观察"); } else { console.log("✅ 正常用户,放行"); }相当于给每个访问者打了个“信用分”,风控系统可以直接拿来用。
import Fingerprint from "fingerprinter-js";第二步:生成指纹
const result = await Fingerprint.generate(); console.log(result.fingerprint); // "a1b2c3d4e5..." console.log(result.confidence); // 85(可信度百分比)第三步:查看组件细节(可选)
const components = await fingerprint.getComponents(); console.log(components.canvas); // Canvas指纹数据 console.log(components.webgl); // WebGL信息还可以按需排除某些采集项,比如禁用 Canvas 防止性能损耗:
new Fingerprint({ excludeCanvas: true, excludeWebGL: true });安全与合规提醒:别滥用,否则吃官司
3.敏感场景下结合用户授权使用
指标 | 表现 |
---|---|
包体积 | ≈ 8KB (gzip 后) |
依赖项 | 零外部依赖 |
支持环境 | 所有现代浏览器(包括移动端) |
TypeScript | 类型齐全,开箱即用 |
构建工具 | Rollup 打包,优化良好 |
广告投放:去重统计真实曝光
甚至你可以拿它来做个“访客黑名单”功能:“这家伙上次干过坏事,这次直接弹验证码。”npm install fingerprinter-js