web-dev-qa-db-ja.com

Youtube.comがHTML5のキャンバスデータを抽出しようとしている:Youtubeはユーザーのブラウザーの指紋をとろうとしていますか?

Torブラウザを使用してYoutubeビデオを視聴しようとすると、Torブラウザは警告ウィンドウを開きます。

This website (www.youtube.com) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.

Should Tor Browser allow this website to extract HTML5 canvas image data?

スクリーンショット: http://imgur.com/aPTdy7k

noと応答すると、ビデオが再生されなくなります。

Youtubeは訪問者の指紋をとろうとしていますか? HTML5のキャンバス抽出を許可せずにYouTube動画を視聴するにはどうすればよいですか?

5
supercobra

おそらくそうではないかもしれませんが、確信が持てません。

まず、なぜWebサイトが「HTML5キャンバス画像データの抽出を試みた」のですか? HTML5のcanvas要素を使用すると、JavaScriptで2D画像を操作できます。他の多くの操作の中で、画像や動画をキャンバスに描画し、それらをピクセル単位のレベルで操作できます。これには多くの正当な用途がありますが、さまざまなWebブラウザーが画像、ビデオ、テキストをレンダリングする方法の微妙な違いを検出して、ユーザーのWebブラウザーに関する情報を取得するためにも使用できます。その後、その情報をサーバーに送り返すことができます。

Youtubeにはかなり多くのJavascriptコードが含まれており、そのほとんどは大幅に縮小されています。そのため、監査はほとんど不可能になります。しかし、base.jsファイルでキャンバスデータを抽出するために使用される.getImageData関数の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]

コードのこの部分は2回現れます。キャンバスの最初のピクセルがグレースケールカラーかどうかをチェックします。

これらのスニペットはいずれも疑わしく見えず、ビデオプレーヤーのコンテキストでこの機能を使用する可能性が高いようです。しかし、これが最小化された混乱であり、そこにあるコードの量を一目で見ると、サーバーに情報が漏洩する状況がないことを確認するのは困難です。また、これら4つのケースだけでJavascriptを入手したからといって、同じ結果になるとは限りません。何百万もの変数に応じて、さまざまなJavaScriptをさまざまなユーザーに送信できます。

6
Philipp