网络浏览器在执行其功能时会收集各种信息。当这些信息中的某些被用于识别网站用户时,这被称为浏览器指纹。
浏览器指纹包括以下有关浏览器的信息:设备型号、浏览器类型和版本、操作系统 (OS)、屏幕分辨率、时区、p0p 文件格式标识符、时间戳、用户代理字符串 (UA)、语言设置、插件、扩展。
Canvas 指纹识别是一种基于 HTML5 代码中的 Canvas 元素的浏览器指纹技术。

Canvas 指纹识别利用浏览器的 Canvas API 绘制不可见图像,并提取持久的长期指纹,而无需用户的知情。
以下是为网站创建画布指纹所需步骤的简要概述:
对网络抓取反复被阻止感到沮丧吗?
免费使用 Nstbrowser,它为您处理 IP 轮换和网站解锁。
立即免费试用!
您对网页抓取和 Browseless 有什么好的想法或疑惑吗?
快来看看其他开发人员在 Discord 和 Telegram 上分享了什么!
| 特性 | Canvas 指纹识别 | 浏览器指纹识别 |
|---|---|---|
| 基础 | Canvas 元素的渲染差异 | 多种设备和浏览器属性 |
| 使用的属性 | Canvas 渲染特性 | 用户代理、屏幕分辨率、插件、字体、时区、语言、WebGL、音频上下文等 |
| 复杂性 | 相对简单 | 更复杂 |
| 唯一性 | 高 | 非常高 |
| 持久性 | 高 | 非常高 |
| 隐私问题 | 中等到高 | 高 |
| 检测和阻止 | 更容易检测和阻止 | 更难检测,但可以通过伪装或限制属性来缓解 |
方法论:
canvas 元素:Canvas 指纹识别基于 HTML5 的 canvas 元素进行图形渲染。方法论:
方法论:
canvas 元素:使用 HTML5 的 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 Real 模式下的指纹与我本地真实浏览器的指纹匹配,而每个 Noise 模式配置文件中的 Canvas 指纹都是不同的且唯一的。
优点:
缺点:
Canvas 指纹识别的合法性取决于地区。在某些地区,如果在没有用户知情的情况下使用,可能被视为违反隐私法规。
然而,监管指纹技术的法规仍在发展中,许多国家的法律状况尚不明朗。
在使用 Canvas 指纹识别时,网站运营商应遵守当地的隐私法律和法规。
在本文中,我们讨论了 Canvas 指纹识别,这是一种网站所有者用来识别其用户的现代网络跟踪方法。我们详细解释了它的工作原理以及如何绕过它。
从长远来看,网站跟踪是不可避免的。最好的方法是控制我们在网上的跟踪方式。最佳反检测浏览器 - Nstbrowser 可以帮助实现这一目标。
现代网站解锁和反检测系统技术有助于隐藏您的隐私,并允许进行网页抓取。