首页 前端知识 FingerprintJS生成浏览器指纹

FingerprintJS生成浏览器指纹

2024-04-29 12:04:41 前端知识 前端哥 337 117 我要收藏

FingerprintJS

        FingerprintJS 是一个客户端浏览器指纹识别库,它结合浏览器属性来生成唯一且稳定的哈希值。可用于识别和跟踪设备,提供了简单易用的 API,纯javascript,支持在 Web 浏览器和 Node.js 环境中使用。采集多种信息,对采集到的数据使用 JSON.stringify() 序列化,再使用 MurmurHash算法生成 128 位 Hash(32 位 16 进制字符串),即一个32位整数。

FingerprintJS使用

安装

yarn add @fingerprintjs/fingerprintjs

 引入

import FingerprintJS from '@fingerprintjs/fingerprintjs'; 

在组件中创建方法

默认配置

写法1

getDeviceFingerprint = async () => {
    const fpPromise = await FingerprintJS.load({debug: true});
    // 调用FingerprintJS.load()返回一个Promise对象,用于加载和初始化FingerprintJS库。
    // 可给FingerprintJS.load()传参{debug: true}开启调试模式
    const result = await fpPromise.get();
    // 调用fpPromise.get()获取访问者指纹信息,并返回一个包含指纹ID和其他信息的结果对象。
    const fingerprintId = result.visitorId;
    localStorage.setItem('browserId', fingerprintId);
    console.log('result components:', result.components);
 };

写法2

getDeviceFingerprint = async () => {
    FingerprintJS.load().then(fp => {
        fp.get().then(result => {
            const fingerprintId = result.visitorId;
            localStorage.setItem('browserId', fingerprintId)
        });
    });
 };

写法3

getDeviceFingerprint = async () => {
    const fpPromise = await FingerprintJS.load();
    const result = await fpPromise.get();
    const fingerprintId = FingerprintJS.hashComponents(result.components);
    localStorage.setItem('browserId', fingerprintId)
};
自定义配置项

        直接使用@fingerprintjs/fingerprintjs 很不错,但并不能直接满足我们的需求。高熵值的指纹可以增加设备的识别率,但却会导致设备指纹频繁变化,从而引起用户频繁掉线,最终影响用户体验。实际上我们不需要那么精确的区分浏览器,真正期望区分的是设备

getDeviceFingerprint = async () => {
    const fpPromise = await FingerprintJS.load();
    const result = await fpPromise.get();
    // Exclude a couple components
    const { fonts, languages, audio, ...components } = result.components;
    // Add a few custom components
    const extendedComponents = {
        ...components,
        foo: { value: 'whatever' },
    };
    const fingerprintId = FingerprintJS.hashComponents(extendedComponents);
    localStorage.setItem('browserId', fingerprintId)
};

开源版配置项

默认配置,FingerprintJS 4.1.0 版本默认收集的信息

注释

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6391.html
标签
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!