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

news2024/11/16 20:34:28

什么是 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.coloradmin.cn/o/1883170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PC系统安装引导:2、进入维护环境

目录 &#x1f345;点击这里查看所有博文 闲来无事&#xff0c;记录下自己以往多年总结出的一套系统维护的方法。以供有需要的人学习使用。例如&#xff0c;系统崩溃了无法启动怎么办&#xff0c;如何重做系统&#xff0c;如何安装双系统&#xff0c;如何引导多系统&#xff0…

告别地推烦恼,Xinstall智能推广系统,让APP推广更高效!

在移动互联网时代&#xff0c;APP的推广与运营成为了每个开发者必须面对的问题。地推作为一种传统的推广方式&#xff0c;虽然有着其独特的优势&#xff0c;但也面临着诸多挑战。如何在地推中脱颖而出&#xff0c;实现高效推广&#xff1f;今天&#xff0c;我们就来聊聊Xinstal…

5个让页面“活“起来的CSS特效

大家好,欢迎来到程序视点。 随着越来越多的浏览器对CSS3支持的不断完善&#xff0c;设计师和开发者们有了更多的选择去实现一些炫酷特效。这里整理了最近项目中使用到的5个比较实用的CSS3动画演示。让我们一起看看CSS3是如何让页面秀起来的。 3D倒影翻转 超炫酷3D倒影翻转动…

某安全公司DDoS攻击防御2024年6月报告

引言&#xff1a; 在2024年6月&#xff0c;网络空间的安全挑战汹涌澎湃。分布式拒绝服务&#xff08;DDoS&#xff09;攻击频发&#xff0c;针对云服务、金融科技及在线教育平台的精密打击凸显出当前网络威胁环境的严峻性。 某安全公司作为网络安全防护的中坚力量&#xff0c…

chunkers/maxent_ne_chunker/english_ace_multiclass.pickle 找不到

首先在这个nltk_data &#xff1a; NLTK Data官方下的数据集&#xff0c;找不到english_ace_multiclass.pic 说明缺少这个文件 : 那么在 nlp/resources/chunkers/maxent_ne_chunker/english_ace_multiclass.pickle at master teropa/nlp (github.com) 下载那两个文件 : 然…

C++专业面试真题(1)学习

常用Linux命令 ls&#xff1a;列出当前目录内容 ls -l&#xff1a;详细信息列表 ls -a&#xff1a;包括隐藏文件 cd&#xff1a;更改目录 pwd&#xff1a;显示当前目录路径 mkdir&#xff1a;创建新目录 rmdir&#xff1a;删除空目录 rm&#xff1a;删除文件或目录 rm -…

拒绝胶感,清纯甜美邻家女孩!逼真!逼真!SD1.5 更适合初恋般的国产真人大模型—— CNrealisticMIXV40

老铁说看惯了AI艺术大片&#xff0c;想寻找适合生成邻家女孩青涩照片的模型。老徐今天应邀&#xff0c;针对邻家女孩青涩风格进行下尝试。老徐此前推荐过一款支持各种真实&#xff0c;摄影&#xff0c;写实风格模型的合体模型——赛博Dream | CNrealistic_MIX_V40无损修剪版。 …

Open3D 点云快速全局配准FGR算法(粗配准)

目录 一、概述 1.1原理和步骤 1.2关键技术和优势 1.3应用场景 二、代码实现 2.1 关键代码 2.1.1.函数&#xff1a;execute_fast_global_registration 2.1.2调用registration_fgr_based_on_feature_matching函数 2.2完整代码 三、实现效果 3.1原始点云 3.2粗配准后点…

03 _ 类型基础(2):动态类型与静态类型

静态类型语言与动态类型语言 通俗定义 静态类型语言&#xff1a;在编译 阶段确定所有变量的类型 动态类型语言&#xff1a;在执行阶段确定所有变量的类型 Javascript 与 C 对比 静态类型与动态类型对比 其他定义 强类型语言&#xff1a;不允许程序在发生错误后继续执行 语…

【小贪】项目实战——Zero-shot根据文字提示分割出图片目标掩码

目标描述 给定RGB视频或图片&#xff0c;目标是分割出图像中的指定目标掩码。我们需要复现两个Zero-shot的开源项目&#xff0c;分别为IDEA研究院的GroundingDINO和Facebook的SAM。首先使用目标检测方法GroundingDINO&#xff0c;输入想检测目标的文字提示&#xff0c;可以获得…

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format&#xff08;LVF lib&#xff09; 二、Net OCV三、如何check OCV是否已加上&#xff1f;总结 前言 在生产中&#xff0c;外界环境的各种变化&#xff0c;比如PVT&#…

grpc学习golang版( 六、服务器流式传输 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、拷贝任意文件进项目四、编写serve…

vscode搭建suricata调试环境

一、环境 windows10 wsl2 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04 Codename: focal二、编译 2.1 下载源码 wget https://www.openinfosecfoundation.org/download/suri…

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

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

解决Python用xpath爬取不到数据的一个思路

前言 最近在学习Python爬虫的知识&#xff0c;既然眼睛会了难免忍不住要实践一把。 不废话直接上主题 代码不复杂&#xff0c;简单的例子奉上&#xff1a; import requests from lxml import etreecookie 浏览器F12网络请求标头里有 user_agent 浏览器F12网络请求标头里有…

论文翻译 | (DSP)展示-搜索-预测:为知识密集型自然语言处理组合检索和语言模型

摘要 检索增强式上下文学习已经成为一种强大的方法&#xff0c;利用冻结语言模型 (LM) 和检索模型 (RM) 来解决知识密集型任务。现有工作将这些模型结合在简单的“检索-读取”流程中&#xff0c;其中 RM 检索到的段落被插入到 LM 提示中。 为了充分发挥冻结 LM 和 RM 的…

API-本地存储

学习目标&#xff1a; 掌握本地存储 学习内容&#xff1a; 本地存储介绍本地存储分类存储复杂数据类型 本地存储介绍&#xff1a; 以前我们页面写的数据一刷新页面就没有了&#xff0c;是不是? 随着互联网的快速发展&#xff0c;基于网页的应用越来越普遍&#xff0c;同时也…

反向沙箱技术:安全隔离上网

在信息化建设不断深化的今天&#xff0c;业务系统的安全性和稳定性成为各公司和相关部门关注的焦点。面对日益复杂的网络威胁&#xff0c;传统的安全防护手段已难以满足需求。深信达反向沙箱技术&#xff0c;以其独特的设计和强大的功能&#xff0c;成为保障政务系统信息安全的…

MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS

#include "ti_msp_dl_config.h" #include "OLED.h" #include "stdio.h"volatile unsigned int delay_times 0;//搭配滴答定时器实现的精确ms延时 void delay_ms(unsigned int ms) {delay_times ms;while( delay_times ! 0 ); } int a0; …

MySQL-数据操作类型的角度理解 S锁 X锁

文章目录 1、S锁和S锁互相兼容2、S锁和X锁互斥3、X锁和X锁也互斥4、X锁和S锁也互斥5、select * from account for update;6、select * from account for update nowait;7、select * from account for update skip locked; 1、S锁和S锁互相兼容 2、S锁和X锁互斥 3、X锁和X锁也互…