可能不会,但你永远无法确定。
一、为什么网站会“试图提取 HTML5 画布图像数据”?HTML5 画布元素允许使用 Javascript 操作 2d 图像。在许多其他操作中,它可以将图像或视频绘制到画布上,然后逐个像素地操作它们。虽然这有很多合法用途,但它也可用于检测不同 Web 浏览器如何呈现图像、视频和文本的细微差异,以获取有关用户 Web 浏览器的信息。然后可以将该信息发送回服务器。
Youtube 包含相当多的 Javascript 代码,其中大部分都被大大缩小了。这使得审计它几乎是不可能的。但是我.getImageData
在文件 base.js 中找到了 4 个用于提取画布数据的函数。
a=a.o.getImageData(c,d,e,f).data;for(b=0;b<a.length;+=4)if(255<a[b]+a[b+1]+a[b+2]+a[b+3])return!0;return!1
这似乎是为了检查图像一部分的整体亮度水平,并检测它是“亮”还是“暗”。
f=e.getImageData(0,0,b,c),k=b*c,l=0;l<k;l++){var m=4*l;f.data[m]=f.data[m+1]=f.data[m+2]=Math.floor(35*Math.random());f.data[m+3]=255}e.putImageData(f,0,0);
这将用随机灰色噪声替换整个图像并将其写回画布。我怀疑它是为“无法显示此视频”错误消息创建背景的代码的一部分。
b=b.getImageData(0,0,1,1).data;return b[0]==b[2]&&b[1]==b[3]
这部分代码出现两次。它检查画布的第一个像素是否为灰度颜色。
这些片段看起来都没有可疑之处,并且似乎可以在视频播放器的上下文中使用此功能。但是看一眼缩小后的混乱情况以及有多少代码,很难确定它没有将任何信息泄露给服务器的情况。另外,仅仅因为我用这 4 个案例获得了 Javascript,并不意味着你会得到相同的结果。他们可以根据一百万个变量向不同的用户发送不同的 javascript。