设备指纹生成器
仅利用浏览器特征生成稳定、唯一的设备 ID。
无 Cookie · 无 LocalStorage · 零权限获取
Canvas 指纹
通过在隐藏画布上绘制混合字体、Emoji
和混合模式图形,捕捉不同 GPU 和 渲染引擎的细微差异。
Audio 指纹
利用 OfflineAudioContext
渲染无声振荡波形并进行压缩,捕捉音频硬件及驱动的特征差异。
等待生成...
硬件特征
综合 CPU
核心并发数、设备内存、系统语言、时区等相对稳定的硬件特征。
WebGL 指纹
获取 GPU 供应商、渲染器型号及 WebGL
参数,捕捉显卡硬件特征。
供应商: --
渲染器: --
版本: --
最大纹理: --
字体检测
检测系统已安装的字体,不同设备字体列表差异明显。
检测到: -- 种字体
等待检测...
核心原理 (How it works)
现代浏览器为了优化性能,会利用底层硬件(GPU、声卡)加速渲染和计算。由于硬件厂商、驱动版本、操作系统抗锯齿策略的不同,哪怕是同样的文字和图形,在不同设备上渲染出的二进制数据也会存在肉眼极难察觉的微小差异。
Device Fingerprint 通过组合多种浏览器特征,生成一个能够尽量唯一标识该设备的哈希字符串。本 SDK 采用了 5 种信号源:
- 🎨 Canvas 指纹 - 不同 GPU 和渲染引擎绘制图形时的细微差异
- 🔊 Audio 指纹 - 音频堆栈处理波形的特征差异
- 💻 硬件特征 - CPU 核心数、内存、平台、语言、时区等
- 🎮 WebGL 指纹 - GPU 供应商、渲染器型号及 WebGL 参数
- 📝 字体检测 - 系统已安装字体列表(20 种常见字体)
🔐 熵值估计
5 种信号源组合可提供约 38 bits 的熵值,理论上可以区分约 2740 亿台不同设备。
使用方法 (Usage)
本 SDK 已开源,您可以直接在项目中引入使用。 查看 GitHub 源码仓库
import { generateFingerprint } from './sdk.js';
// 生成指纹
const result = await generateFingerprint({
canvas: true, // 启用 Canvas 指纹
audio: true, // 启用 Audio 指纹
webgl: true, // 启用 WebGL 指纹 (新增)
fonts: true, // 启用字体检测 (新增)
hardware: true, // 启用硬件特征
});
console.log(result.deviceId);
// 输出: "84e1b..." (16位稳定唯一 ID)`; 隐私与局限 (Privacy & Limits)
- ✅ 隐私友好SDK 仅采集设备硬件属性(如 GPU、声卡处理特征)和系统配置,不收集任何 IP、地理位置或具体设备账户等敏感隐私信息。
- ✅ 稳定持久不依赖
cookie或localStorage,清理缓存或使用隐身模式通常不会改变 ID。采集逻辑已针对夏令时等环境波动进行了稳定性优化。 - ⚠ 抗指纹浏览器部分隐私浏览器(如 Tor、Brave)或 Safari 的“阻止跨站跟踪”功能会故意为 Canvas/Audio 添加随机噪点。这会导致每次生成的 ID 都不一样。这是正常的隐私保护机制。
觉得这个工具好用?
你的 Star 是对我持续开发的最大鼓励!点击右侧按钮前往 GitHub 支持我。