Canvas 指纹:它是什么以及如何绕过它

什么是 Canvas 指纹?

网络浏览器在执行其功能时会收集各种信息。当这些信息中的某些被用于识别网站用户时,这被称为浏览器指纹。

浏览器指纹包括以下有关浏览器的信息:设备型号、浏览器类型和版本、操作系统 (OS)、屏幕分辨率、时区、p0p 文件格式标识符、时间戳、用户代理字符串 (UA)、语言设置、插件、扩展。

Canvas 指纹识别是一种基于 HTML5 代码中的 Canvas 元素的浏览器指纹技术。

Canvas 指纹识别如何工作?

Canvas 指纹识别利用浏览器的 Canvas API 绘制不可见图像,并提取持久的长期指纹,而无需用户的知情。

以下是为网站创建画布指纹所需步骤的简要概述:

  1. 用户访问网站。
  2. 网站启动 Canvas 指纹识别的 JavaScript 脚本。
  3. HTML 在浏览器中生成一个不可见图像。
  4. 脚本基于客户端的操作系统、浏览器和图形处理器创建图像的 Base64 表示。
  5. 然后计算该表示的哈希值。

对网络抓取反复被阻止感到沮丧吗?
免费使用 Nstbrowser,它为您处理 IP 轮换和网站解锁。
立即免费试用!

Canvas 指纹识别与浏览器指纹识别:有什么区别?

特性Canvas 指纹识别浏览器指纹识别
基础Canvas 元素的渲染差异多种设备和浏览器属性
使用的属性Canvas 渲染特性用户代理、屏幕分辨率、插件、字体、时区、语言、WebGL、音频上下文等
复杂性相对简单更复杂
唯一性非常高
持久性非常高
隐私问题中等到高
检测和阻止更容易检测和阻止更难检测,但可以通过伪装或限制属性来缓解

Canvas 指纹识别

方法论:

  1. HTML5 canvas 元素:Canvas 指纹识别基于 HTML5 的 canvas 元素进行图形渲染。
  2. 图形渲染:脚本在 canvas 上渲染图形(例如文本、形状)。
  3. 图像数据捕获:使用 toDataURL 方法捕获渲染图形的像素数据。
  4. 唯一特性:由于浏览器、操作系统、图形卡和已安装字体等因素的渲染差异导致生成唯一图像。
  5. 哈希:图像数据被哈希以创建独特的指纹。

浏览器指纹识别

方法论:

  1. 多种属性:浏览器指纹识别使用多种属性的组合来创建唯一标识符。
  2. 收集的属性:常见属性包括:
  • 用户代理字符串:关于浏览器、版本和操作系统的信息。
  • 屏幕分辨率:设备屏幕的大小和颜色深度。
  • 安装的插件:浏览器插件及其版本列表。
  • 字体:设备上安装的字体。
  • 时区:设备的时区。
  • 语言:首选语言设置。
  • Cookie 和存储:存储和检索 cookie、本地存储和会话存储的能力。
  • WebGL 和 Canvas:渲染能力和性能。
  • 音频上下文:音频设备的特性。

Canvas 指纹识别与 Cookie:有什么区别?

Canvas 指纹识别

方法论:

  1. HTML5 canvas 元素:使用 HTML5 的 canvas 元素渲染图形。
  2. 图形渲染:脚本在 canvas 上绘制图形。
  3. 图像数据:使用 toDataURL 方法捕获渲染图形的像素数据。
  4. 哈希:图像数据被哈希以创建独特的标识符或指纹,基于渲染中的细微差异。

方法论:

  1. 数据存储:由浏览器在用户设备上存储的小数据片段,按网页服务器的请求。
  2. Cookie 类型
  • 会话 Cookie:临时的,在关闭浏览器时删除。
  • 持久性 Cookie:存储直到过期或被用户删除。
  • 第三方 Cookie:由与用户访问的域名不同的域设置,通常由广告商和分析工具使用。

如何通过 Nstbrowser 绕过Canvas 指纹识别?

Canvas Noise 是一种通过向 HTML5 Canvas 元素添加随机噪声来防止指纹检测的技术。如果两个图像不同,它们将具有不同的哈希值。

因此,通过在图像中引入随机噪声,通常通过修改 Canvas 渲染的图像数据,可以防止创建持久指纹,使图像的哈希值每次都略有不同,人眼很难察觉,但生成的哈希值将有所不同。

以下是 Canvas Noise 的简单实现:

<!DOCTYPE html>
<html>
<head>
    <title>Canvas Noise Example</title>
</head>
<body>
<canvas id="canvas" width="200" height="50"></canvas>
<script>
    // 获取 canvas 元素及其 2D 渲染上下文
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');
    
    // 步骤 1:绘制原始图像
    // 设置文本基线和字体
    ctx.textBaseline = 'top';
    ctx.font = '14px Arial';
    ctx.textBaseline = 'alphabetic';
    
    // 绘制填充矩形
    ctx.fillStyle = '#f60';
    ctx.fillRect(125, 1, 62, 20);
    
    // 绘制第一行文本
    ctx.fillStyle = '#069';
    ctx.fillText('Hello, world!', 2, 15);
    
    // 绘制带透明度的第二行文本
    ctx.fillStyle = 'rgba(102, 204, 0, 0.7)';
    ctx.fillText('Hello, world!', 4, 17);
    
    // 步骤 2:向图像添加随机噪声
    // 获取 canvas 的图像数据
    var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
    var data = imageData.data;
    
    // 遍历每个像素并添加随机噪声
    for (var i = 0; i < data.length; i += 4) {
        // 向红色通道添加噪声
        data[i] += Math.floor(Math.random() * 10) - 5;     // 红色
        // 向绿色通道添加噪声
        data[i+1] += Math.floor(Math.random() * 10) - 5;   // 绿色
        // 向蓝色通道添加噪声
        data[i+2] += Math.floor(Math.random() * 10) - 5;   // 蓝色
    }
    
    // 将修改后的图像数据放回 canvas
    ctx.putImageData(imageData, 0, 0);
    
    // 将 canvas 转换为数据 URL 并输出
    var dataURL = canvas.toDataURL();
    console.log(dataURL);
    
    // 生成数据 URL 的 SHA-256 哈希值并输出
    sha256(dataURL).then(hash => console.log(hash));
    
    // 生成 SHA-256 哈希值的函数
    function sha256(str) {
        return crypto.subtle.digest('SHA-256', new TextEncoder().encode(str)).then(buffer => {
            return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('');
        });
    }
</script>
</body>
</html>

Nstbrowser是一款支持画布指纹设置的出色浏览器。在创建配置文件时,Canvas 指纹默认处于 Noise 模式,添加随机噪声到 Canvas,但也支持 Real 模式,匹配真实的浏览器 Canvas 指纹:

下面我们为 Noise 和 Real 模式在 Nstbrowser 中创建 9 个 Canvas 指纹配置文件,然后访问 Browserleaks Canvas 指纹识别检测器,比较我的本地真实浏览器的 Canvas 指纹:

  • 我设备的真实浏览器的 Canvas 指纹

  • Nstbrowser 中的 Real 模式 Canvas 指纹:

  • Nstbrowser 中的 Noise 模式 Canvas 指纹:

通过比较,我们可以轻松看到 Canvas Real 模式下的指纹与我本地真实浏览器的指纹匹配,而每个 Noise 模式配置文件中的 Canvas 指纹都是不同的且唯一的。

Canvas 指纹识别的优缺点:

优点:

  • 有效的跟踪。Canvas 指纹识别比传统的 Cookie 提供了更持久和准确的用户跟踪方法。
  • 难以检测。用户通常不知道 Canvas 指纹识别,因此它通常不会被检测到和阻止。

缺点:

  • 隐私问题。Canvas 指纹识别引发了严重的隐私问题,因为它允许网站在没有用户同意的情况下收集用户的详细信息。
  • 用户画像。这允许创建详细的用户画像,可以用于有针对性的广告或其他目的,而无需用户同意。
  • 不准确性。尽管通常它是可靠的,有时由于浏览器实现或用户配置的不兼容性,可能会导致误报或不准确的指纹。

Canvas 指纹识别的合法性

Canvas 指纹识别的合法性取决于地区。在某些地区,如果在没有用户知情的情况下使用,可能被视为违反隐私法规。

然而,监管指纹技术的法规仍在发展中,许多国家的法律状况尚不明朗。

在使用 Canvas 指纹识别时,网站运营商应遵守当地的隐私法律和法规。

主要结论

在本文中,我们讨论了 Canvas 指纹识别,这是一种网站所有者用来识别其用户的现代网络跟踪方法。我们详细解释了它的工作原理以及如何绕过它。

从长远来看,网站跟踪是不可避免的。最好的方法是控制我们在网上的跟踪方式。最佳反检测浏览器 - Nstbrowser 可以帮助实现这一目标。

现代网站解锁和反检测系统技术有助于隐藏您的隐私,并允许进行网页抓取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/762219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

预约小程序源码,云开发技术,无需服务器

介绍&#xff1a; 很多企业的业务都需要通过服务预约来完成&#xff0c;比如酒店、美容、家政等等。 但很多商家因缺少合适的服务预订工具&#xff0c;而不知道如何让客户尽快预约。 这种情况下&#xff0c;制作一个自己的预约小程序&#xff0c;客户只需要扫码或者在微信里…

工程化:Commitlint / 规范化Git提交消息格式

一、理解Commitlint Commitlint是一个用于规范化Git提交消息格式的工具。它基于Node.js&#xff0c;通过一系列的规则来检查Git提交信息的格式&#xff0c;确保它们遵循预定义的标准。 1.1、Commitlint的核心功能 代码规则检查&#xff1a;Commitlint基于代码规则进行检查&a…

销量位列第一!强力巨彩LED单元板成绩斐然

据全球知名科技研究机构Omdia《LED显示产品出货分析-中国-2023》报告显示&#xff0c;2023年强力巨彩LED显示屏销量与单元板产品销量均位列第一&#xff0c;其品牌和市场优势可见一斑。 厦门强力巨彩自2004年成立之初&#xff0c;便以技术创新和严格品控为核心竞争力&#xff0…

【Kaggle】Telco Customer Churn 电信用户流失预测案例

⭐️前言&#xff1a;案例学习说明与案例建模流程 我们将围绕Kaggle中的电信用户流失数据集&#xff08;Telco Customer Churn&#xff09;进行用户流失预测。在此过程中&#xff0c;将综合应用此前所介绍的各种方法与技巧&#xff0c;并在实践中提炼总结更多实用技巧。 ⭐️对…

智慧的网络爬虫之CSS概述

智慧的网络爬虫之CSS概述 ​ CSS 是“Cascading Style Sheet”的缩写&#xff0c;中文意思为“层叠样式表”&#xff0c;用于描述网页的表现形式。如网页元素的位置、大小、颜色等。css的主要作用是定义网页的样式。 CSS样式 1. 行内样式 行内样式&#xff1a;直接定义在 HT…

造一个交互式3D火山数据可视化

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Plotly.js 创建交互式 3D 火山数据可视化 应用场景 本代码用于将火山数据库中的数据可视化&#xff0c;展示火山的高度、类型和状态。可用于地质学研究、教育和数据探索。 基本功能 该代码使用 Plotly…

模型部署:C++libtorch实现全连接模型10分类和卷积模型ResNet18的四分类的模型部署推理

Clibtorch实现模型部署推理 模型 全连接模型&#xff1a;公开mnist手写识别数字的十分类卷积模型&#xff1a;自行采集的鲜花四分类 部署 语言环境&#xff1a;C 对比Python python是解释性语言&#xff0c;效率很慢&#xff0c;安全性很低 系统开发一般是java、C/C&…

昂科烧录器支持BPS晶丰明源半导体的多相Buck控制器BPD93004E

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中BPS晶丰明源半导体的多相Buck控制器BPD93004E已经被昂科的通用烧录平台AP8000所支持。 BPD93004E是一款多相Buck控制器&#xff0c;支持原生1~4相&#xff0c;数字方式控制&am…

麒麟桌面操作系统上解决任务栏消失问题

原文链接&#xff1a;麟桌面操作系统上解决任务栏消失问题 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在麒麟桌面操作系统上解决任务栏消失问题的文章。任务栏是我们日常操作系统使用中非常重要的部分&#xff0c;它提供了快速访问应用程序和系统功能的便捷…

OpenBayes 教程上新 | CVPR 获奖项目,BioCLlP 快速识别生物种类,再也不会弄混小浣熊和小熊猫了!

市面上有很多植物识别的 App&#xff0c;通过对植物的叶片、花朵、果实等特征进行准确的识别&#xff0c;从而确定植物的种类、名称。但动物识别的 App 却十分有限&#xff0c;这使我们很难区分一些外形相似的动物&#xff0c;例如小浣熊和小熊猫。 左侧为小浣熊&#xff0c;右…

VBA数据库解决方案第十二讲:如何判断数据库中数据表是否存在

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…

C++ | Leetcode C++题解之第207题课程表

题目&#xff1a; 题解&#xff1a; class Solution { private:vector<vector<int>> edges;vector<int> indeg;public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {edges.resize(numCourses);indeg.resize(numCo…

为什么越来越多的人选择做债务重组?

说到债务重组&#xff0c;很多人可能一头雾水。但简单来说&#xff0c;就是帮你优化债务结构&#xff0c;减轻还款压力。 为什么现在这么多人会选择做债务重组&#xff1f; 保护工作和名声&#xff1a;有些在好单位上班的人&#xff0c;怕债务问题影响工作&#xff0c;不想让单…

浅谈定时器之BeanShell 定时器

浅谈定时器之BeanShell 定时器 在进行性能测试和负载测试时&#xff0c;JMeter 提供了多种定时器来模拟用户操作间的延迟&#xff0c;以更贴近真实世界的场景。BeanShell 定时器是其中一种高级且灵活的定时机制&#xff0c;允许用户通过BeanShell脚本来自定义延时逻辑。BeanSh…

电脑录音软件哪个好?7款录制音频工具大盘点,赶快学起来!(2024)

也许你渴望提取你最喜欢的节目的背景音乐&#xff0c;或者你希望录制自己的声音制作教程。如果是这样&#xff0c;你就需要一款优秀的电脑录音软件&#xff0c;来帮助你捕捉任何你想要的声音&#xff0c;而且不会损失音质。目前市场上存在着大量的录制音频工具&#xff0c;面对…

nccl 04 nvidia 官方小程序

1&#xff0c;代码重新编辑 为了地毯式地检查结果的正确性&#xff0c;这里修改了代码 主要步骤为 step1: data_p指向的空间中&#xff0c;分别生成随机数&#xff1b; step2: 分别拷贝到gpu的sendbuff的显存中&#xff1b; step3: 通过nccl_all_reduce sum&#xff1b;…

什么是原始权益人?

摘要&#xff1a;每天学习一点金融小知识 原始权益人&#xff0c;在资产证券化&#xff08;ABS&#xff09;和公募REITs等金融产品中&#xff0c;指的是证券化基础资产的原始所有者&#xff0c;即金融产品的真正融资方。他们是按照相关规定及约定向资产支持专项计划转移其合法拥…

RabbitMQ消息可靠性等机制详解(精细版三)

目录 七 RabbitMQ的其他操作 7.1 消息的可靠性(发送可靠) 7.1.1 confim机制(保证发送可靠) 7.1.2 Return机制(保证发送可靠) 7.1.3 编写配置文件 7.1.4 开启Confirm和Return 7.2 手动Ack(保证接收可靠) 7.2.1 添加配置文件 7.2.2 手动ack 7.3 避免消息重复消费 7.3.…

【数据结构】计数排序等排序

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

企业软文投放为什么要选择包收录媒体?

如今这个信息时代企业想要有效的将品牌推广出去&#xff0c;那选择推广方式至关重要。软文投放作为一种常见的品牌推广方式&#xff0c;其效果往往取决于投放的媒体质量。而在众多媒体中&#xff0c;包收录媒体凭借其独特的优势&#xff0c;成为了企业软文投放的明智之选。 一…