【前端】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

相关文章

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文