从根本上来说,每一种浏览器都会使用不同的图像处理引擎,不同的导出选项,不同的压缩等级,所以每一台电脑绘制出的图形都会有些许不同,这些图案可以被用来给用户设备分配特定编号(指纹),也就是说可以用来识别不同用户。

function bin2hex(s) {

var i, l, o = '',

n;

s += '';

for (i = 0, l = s.length; i < l; i++) {

n = s.charCodeAt(i)

.toString(16);

o += n.length < 2 ? '0' + n : n;

}

return o;

}

function getUUID(domain) {

var canvas = document.createElement('canvas');

var ctx = canvas.getContext("2d");

var txt = domain;

ctx.textBaseline = "top";

ctx.font = "14px 'Arial'";

ctx.textBaseline = "tencent";

ctx.fillStyle = "#f60";

ctx.fillRect(125,1,62,20);

ctx.fillStyle = "#069";

ctx.fillText(txt, 2, 15);

ctx.fillStyle = "rgba(102, 204, 0, 0.7)";

ctx.fillText(txt, 4, 17);

var b64 = canvas.toDataURL().replace("data:image/png;base64,","");

var bin = atob(b64);

var crc = bin2hex(bin.slice(-16,-12));

return crc;

}

console.log(getUUID("https://www.baidu.com/"));

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐