【前端】js通过canvas获取浏览器的唯一指纹可以当做唯一标识

2023-11-22 14:52

本文主要是介绍【前端】js通过canvas获取浏览器的唯一指纹可以当做唯一标识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【前端】js通过canvas获取浏览器的唯一指纹可以当做唯一标识

<!DOCTYPE html>
<html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>JS Bin</title> </head> <body> <script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script> <script>
var getCanvasFp = function (options) {options = options ? options : {};var result = []// Very simple now, need to make it more complex (geo shapes etc)var canvas = document.createElement('canvas')canvas.width = 2000canvas.height = 200canvas.style.display = 'inline'var ctx = canvas.getContext('2d')// detect browser support of canvas winding// http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/// https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.jsctx.rect(0, 0, 10, 10)ctx.rect(2, 2, 6, 6)result.push('canvas winding:' + ((ctx.isPointInPath(5, 5, 'evenodd') === false) ? 'yes' : 'no'))ctx.textBaseline = 'alphabetic'ctx.fillStyle = '#f60'ctx.fillRect(125, 1, 62, 20)ctx.fillStyle = '#069'// https://github.com/Valve/fingerprintjs2/issues/66if (options.dontUseFakeFontInCanvas) {ctx.font = '11pt Arial'} else {ctx.font = '11pt no-real-font-123'}ctx.fillText('Cwm fjordbank glyphs vext quiz, \ud83d\ude03', 2, 15)ctx.fillStyle = 'rgba(102, 204, 0, 0.2)'ctx.font = '18pt Arial'ctx.fillText('Cwm fjordbank glyphs vext quiz, \ud83d\ude03', 4, 45)// canvas blending// http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/// http://jsfiddle.net/NDYV8/16/ctx.globalCompositeOperation = 'multiply'ctx.fillStyle = 'rgb(255,0,255)'ctx.beginPath()ctx.arc(50, 50, 50, 0, Math.PI * 2, true)ctx.closePath()ctx.fill()ctx.fillStyle = 'rgb(0,255,255)'ctx.beginPath()ctx.arc(100, 50, 50, 0, Math.PI * 2, true)ctx.closePath()ctx.fill()ctx.fillStyle = 'rgb(255,255,0)'ctx.beginPath()ctx.arc(75, 100, 50, 0, Math.PI * 2, true)ctx.closePath()ctx.fill()ctx.fillStyle = 'rgb(255,0,255)'// canvas winding// http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/// http://jsfiddle.net/NDYV8/19/ctx.arc(75, 75, 75, 0, Math.PI * 2, true)ctx.arc(75, 75, 25, 0, Math.PI * 2, true)ctx.fill('evenodd')if (canvas.toDataURL) { result.push('canvas fp:' + canvas.toDataURL()) }return result}let fingerPrintRawData = getCanvasFp()[1];
let fingerPrintHash = md5(fingerPrintRawData);
document.write("浏览器指纹 : " + fingerPrintHash);
</script>  </body>
</html>

canvas指纹(帆布指纹)_夏天然后的博客-CSDN博客

这篇关于【前端】js通过canvas获取浏览器的唯一指纹可以当做唯一标识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1