FingerprintJS 入门:三步在浏览器里生成稳定的访问者标识
【免费下载链接】fingerprintjsThe most advanced free and open-source browser fingerprinting library项目地址: https://gitcode.com/GitHub_Trending/fi/fingerprintjs
给网站上了 Cookie 风控后,用户一开无痕模式、或者随手清个数据,服务端立马认不出人,盗号和薅羊毛换个壳就溜进来了。FingerprintJS 就是一个做浏览器指纹识别的开源库:它在浏览器里读一组设备和属性,算出一个哈希标识visitorId,跟着设备走、不跟着 Cookie 走,清数据和无痕都不变。做登录安全、反欺诈的开发者,基本可以把它当成风控体系的底座。
装完就能跑:三步拿到 visitorId
先装包,一条命令:
npm install @fingerprintjs/fingerprintjs然后在应用启动时初始化、真正需要时再取标识:
import FingerprintJS from '@fingerprintjs/fingerprintjs' const fp = await FingerprintJS.load() const result = await fp.get() console.log(result.visitorId)load()返回一个Promise,建议尽早调用;get()才是真正算指纹的地方,返回值里除了visitorId,还有confidence、components、version几个字段。看到这串哈希打印出来,效果就跑通了。
它比手写一套强在哪
自采浏览器属性拼个 ID 不难,但有几个坑 FingerprintJS 已经替你踩平了:
- 无痕和清数据不掉链子:标识基于设备属性而非存储,私下面无痕模式照样稳定。
- 纯前端本地出结果:不用自建服务端指纹服务,原始数据不出浏览器,隐私暴露面小。
- 自带置信度评分:
confidence.score给一个 0 到 1 的把握度,方便你分级风控,而不是拿到 ID 就盲信。 - 熵源可插拔:能删减或自定义采集项,按需裁剪体积和隐私面。
visitorId 到底是怎么算出来的
库把几十个采集项统称为"熵源",每个都落在src/sources/里,按类别大致是:硬件类如 screen_resolution.ts、hardware_concurrency.ts(CPU 核数)、device_memory.ts;环境类如 os_cpu.ts、platform.ts、timezone.ts;渲染类如 canvas.ts、webgl.ts、audio.ts。
拿到各项值后,agent.ts 会把它们按名字排序拼成一段规范字符串,再丢进 utils/hashing.ts 的x64hash128(MurmurHash)压成visitorId。置信度则在 confidence.ts 里按平台打分:Windows 约 0.6、macOS 约 0.5、桌面 Linux 最高 0.7,Android 只有 0.4。
三个业务场景里它怎么解决问题
- 注册反欺诈:同一个人用无痕反复注册薅新人券 → 用
visitorId把同源设备归并到一起 → 批量账号一眼现形。 - 登录加固:Cookie 被清导致风控失效 → 指纹作为兜底,设备突变时触发二次验证 → 降低盗号成功率。
- 真实 UV 统计:同一访客重复曝光被算成多人 → 按指纹去重 → 广告和内容数据回归真实。
关键配置项和行为差异
load()接受三个选项:delayFallback(默认 50 毫秒,不建议改)、debug(打印调试信息,排查问题很实用)、monitoring(默认true)。这里有个容易忽略的差异:用 npm 装时,库会按 0.1% 的概率发一个统计请求,且一周最多一次;而走官方 CDN 的版本则默认关闭。介意的话把monitoring设成false即可。另外get()官方建议"真需要时再调",这样能拿到更准的标识。
最容易踩的三个坑
- 装了广告拦截器,CDN 方式失效:README 明确提示,在 Brave、Firefox 或开了拦截器的浏览器里,CDN 的动态
import会失败,这时要改用 npm 包,别在 CDN 上反复调试。 - 以为无痕下标识会变:不会变,这正是它的卖点;但部分依赖浏览器扩展的熵源(内容阻止器检测)只在 Safari 和 Android 上启用,其他浏览器无痕下扩展被禁,所以不开启这些源。
- 把
components当稳定契约:这个字段的类型只在主版本内保证兼容,别拿它做跨版本解析,visitorId才是稳定出口。
文档、社区与许可证入口
API 细节看 docs/api.md,浏览器兼容范围在 docs/browser_support.md,想深挖拦截器检测可看 docs/content_blockers.md。老版本升级照 v3 到 v5 或 v4 到 v5 迁移。项目走 MIT 许可,见 docs/licensing.md,问题可去 Issues/Discussions 或官方 Discord 讨论。
收个尾
一句话:FingerprintJS 用纯前端的浏览器指纹,给你一个无痕和清数据都不掉的visitorId。下一步,先按上面的三步在本地跑通,再对着confidence.score判断你的业务能拿到多高把握度的识别,最后按场景接进风控。
【免费下载链接】fingerprintjsThe most advanced free and open-source browser fingerprinting library项目地址: https://gitcode.com/GitHub_Trending/fi/fingerprintjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考