闽公网安备 35020302035485号
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