【浏览器指纹】fingerprintjs2使用fingerprintjs生成浏览器唯一标识(浏览器指纹)

本文主要是介绍【浏览器指纹】fingerprintjs2使用fingerprintjs生成浏览器唯一标识(浏览器指纹),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 什么是浏览器指纹?
  • fingerprintjs2
    • fingerprintjs2简介
    • 技术分析
  • 如何使用fingerprintjs2?
  • 参考文章
  • 🚀写在最后

什么是浏览器指纹?

浏览器指纹我们可以理解成是一个用户设备的浏览器的唯一id(有点类似手机设备的IMEI),通过浏览器指纹,我们可以做一些埋点操作或者是鉴权,辨别是否是同一用户,其是否有更换设备(更换浏览器)等。

fingerprintjs2

在这里插入图片描述

fingerprintjs2是通过设备浏览器信息获取浏览器指纹的插件,FingerprintJS是一种用于创建浏览器指纹的开源库,广泛用于在线安全和欺诈检测。以下是FingerprintJS如何工作:

  1. 信息收集:FingerprintJS会收集用户浏览器和设备的各种信息,包括硬件特性、浏览器设置、插件、字体、屏幕分辨率等。
  2. 指纹生成:通过对收集到的信息进行加密哈希处理,生成一个独特的浏览器指纹。
  3. 应用实例:在线支付平台和电商网站使用FingerprintJS来检测异常活动和防止欺诈。例如,当同一个账户在短时间内从不同的设备或浏览器指纹登录时,系统会标记为可疑活动,触发安全警报。

fingerprintjs2简介

Fingerprint.js的核心理念是在用户不知情且不侵犯其隐私的情况下,收集一些浏览器的基本信息,如屏幕分辨率、时区、已安装字体、插件等,并将这些数据转化为一个哈希值,即所谓的"设备指纹"。这种指纹可以作为识别用户的一种方式,即使他们清除cookies或者更换设备,只要浏览器配置保持不变,就能被识别出来。

技术分析

Fingerprint.js使用了一系列的技术来生成设备指纹:

1、浏览器特性检测:它获取了用户的浏览器类型、版本、语言、是否支持特定API等。
2、硬件特征:包括屏幕尺寸、颜色深度、时间戳偏移等。
3、字体检测:通过对一系列随机字符串进行渲染并测量宽度,识别出已安装的字体集。
4、 WebGL指纹:利用WebGL的渲染信息,这通常包含GPU信息,是设备独一无二的标志之一。
5、 所有收集的数据最后通过一个哈希函数(SHA-1)处理,生成唯一指纹。

该库具有良好的兼容性,可以在多种现代浏览器中运行,并且提供了简单易用的API,使得集成到任何项目中变得容易。

如何使用fingerprintjs2?

安装

npm install @fingerprintjs/fingerprintjs  或者  yarn add @fingerprintjs/fingerprintjs

引用

import FingerprintJS from '@fingerprintjs/fingerprintjs';
methods: {async getFingerprint() {// 初始化FingerprintJSconst fp = await FingerprintJS.load()// 获取访问者的指纹const result = await fp.get()// 配置const {osCpu,webGlBasics,languages,audioBaseLatency,reducedTransparency,vendor,vendorFlavors,fonts,fontPreferences,plugins,forcedColors,domBlockers,pdfViewerEnabled,audio,canvas,webGlExtensions,math,...components} = result.componentsconst extendedComponents = {...components}const fingerprintId = FingerprintJS.hashComponents(extendedComponents)console.log('extendedComponents*-*-*-*-*-*-*-         ', extendedComponents)console.log('fingerprintId*-*-*-*-*-*-*-         ', fingerprintId)// this.deviceNo = fingerprintId},

在这里插入图片描述
配置项解析:

Excludes为{}时将包含即不会排除以下组件(源码)

var components = [
{key: ‘userAgent’, getData: UserAgent},//用户代理
{key: ‘webdriver’, getData: webdriver },//网页内驱动软件
{key: ‘language’, getData: languageKey},//语言种类
{key: ‘colorDepth’, getData: colorDepthKey}, //目标设备或缓冲器上的调色板的比特深度
{key: ‘deviceMemory’, getData: deviceMemoryKey},//设备内存
{key: ‘pixelRatio’, getData: pixelRatioKey},//设备像素比
{key: ‘hardwareConcurrency’, getData: hardwareConcurrencyKey},//可用于运行在用户的计算机上的线程的逻辑处理器的数量。
{key: ‘screenResolution’, getData: screenResolutionKey}, //当前屏幕分辨率
{key: ‘availableScreenResolution’, getData: availableScreenResolutionKey},//屏幕宽高(空白空间)
{key: ‘timezoneOffset’, getData: timezoneOffset},//本地时间与 GMT 时间之间的时间差,以分钟为单位
{key: ‘timezone’, getData: timezone},//时区
{key: ‘sessionStorage’, getData: sessionStorageKey},//是否会话存储
{key: ‘localStorage’, getData: localStorageKey},//是否具有本地存储
{key: ‘indexedDb’, getData: indexedDbKey},//是否具有索引DB
{key: ‘addBehavior’, getData: addBehaviorKey},//IE是否指定AddBehavior
{key: ‘openDatabase’, getData: openDatabaseKey},//是否有打开的DB
{key: ‘cpuClass’, getData: cpuClassKey},//浏览器系统的CPU等级
{key: ‘platform’, getData: platformKey},//运行浏览器的操作系统和(或)硬件平台
{key: ‘doNotTrack’, getData: doNotTrackKey},//do-not-track设置
{key: ‘plugins’, getData: pluginsComponent},//浏览器的插件信息
{key: ‘canvas’, getData: canvasKey},//使用 Canvas 绘图
{key: ‘webgl’, getData: webglKey},//WebGL指纹信息
{key: ‘webglVendorAndRenderer’, getData: webglVendorAndRendererKey},//具有大量熵的WebGL指纹的子集
{key: ‘adBlock’, getData: adBlockKey},//是否安装AdBlock
{key: ‘hasLiedLanguages’, getData: hasLiedLanguagesKey},//用户是否篡改了语言
{key: ‘hasLiedResolution’, getData: hasLiedResolutionKey},//用户是否篡改了屏幕分辨率
{key: ‘hasLiedOs’, getData: hasLiedOsKey}, //用户是否篡改了操作系统
{key: ‘hasLiedBrowser’, getData: hasLiedBrowserKey}, //用户是否篡改了浏览器
{key: ‘touchSupport’, getData: touchSupportKey},//触摸屏检测和能力
{key: ‘fonts’, getData: jsFontsKey, pauseBefore: true}, //使用JS/CSS检测到的字体列表
{key: ‘fontsFlash’, getData: flashFontsKey, pauseBefore: true}, //已安装的Flash字体列表
{key: ‘audio’, getData: audioKey},//音频处理
{key: ‘enumerateDevices’, getData: enumerateDevicesKey} //可用的多媒体输入和输出设备的信息。
]

注释
在这里插入图片描述
项目地址:https://gitcode.com/fingerprintjs/fingerprintjs

参考文章

FingerprintJS生成浏览器指纹
fingerprintjs2官方文档
浏览器:浏览器指纹
前端使用fingerprintjs2获取浏览器指纹
关于FingerprintJS生成浏览器指纹UUID,同一浏览器多开下UUID不同造成的问题
Fingerprintjs2 浏览器 设备指纹 改源码

🚀写在最后

希望我的分享能够帮助到更多的人,如果觉得我的分享有帮助的话,请大家一键三连支持一下哦~
❤️原创不易,期待你的关注与支持~
点赞👍+收藏⭐️+评论✍️
😊之后我会继续更新前端学习小知识,关注我不迷路~

这篇关于【浏览器指纹】fingerprintjs2使用fingerprintjs生成浏览器唯一标识(浏览器指纹)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054120

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

mysql索引二(唯一索引)

前文中介绍了MySQL中普通索引用法,和没有索引的区别。mysql索引一(普通索引) 下面学习一下唯一索引。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE,把它定义为一个唯一索引。 添加数据库唯一索引的几种

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

android 带与不带logo的二维码生成

该代码基于ZXing项目,这个网上能下载得到。 定义的控件以及属性: public static final int SCAN_CODE = 1;private ImageView iv;private EditText et;private Button qr_btn,add_logo;private Bitmap logo,bitmap,bmp; //logo图标private st

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

C#中,decimal类型使用

在Microsoft SQL Server中numeric类型,在C#中使用的时候,需要用decimal类型与其对应,不能使用int等类型。 SQL:numeric C#:decimal