TEST12138

TEST12138

长路漫漫,唯心作伴。

ブラウザのフィンガープリント

大家は時々ウェブサイトを閲覧することがあります。閲覧する際にはプライベートウィンドウを開くことがあります。
開いた後はプライベートであると考えられますが、実際にはどうでしょうか。
実際の状況は非常に恐ろしいかもしれません。
それはあなたが誰であるかだけでなく、あなたが何をしたかも知っており、しかもあなたが考えている以上に多くを知っています。
誰かが言うかもしれません、「ただの IP アドレスでしょう?」と、「プロキシを使用すればいいじゃないか」と。
もし私が IP アドレスを使用しなくてもわかると言ったらどうでしょうか。
それでは、どのようにしてそれを実現するのでしょうか。
それは、ブラウザの指紋と呼ばれる技術のおかげです。これは非常に成熟した技術です。
クッキーやログインなしで、正確にユーザーを特定することができます。
実装原理も非常にシンプルです。
世界中にはたくさんのデバイスがありますが、同じデバイス環境を見つけるのは難しいです。
例えば、IP アドレス、ブラウザのバージョン、ブラウザの言語、ブラウザのフォント設定、タイムゾーンなどです。
これらの情報に基づいて、1 つまたは複数のハッシュ値を生成します。これらのハッシュ値はほぼ唯一である可能性が高いです。
完全に重複しないことを保証することはできませんが、一意性は非常に高いです。
例えば、キャンバスを使用してハッシュを生成します。
簡単に書いてみましょう。

		function getCanvasFingerprint() {
			const canvas = document.createElement('canvas')
			canvas.width = 200;
			canvas.height = 200
			const ctx = canvas.getContext('2d');
			ctx.fillStyle = 'rgb(128,0,0)';
			ctx.fillRect(10, 10, 100, 100);
			ctx.fillStyle = 'rgb(0,128,0)';
			ctx.fillRect(50, 50, 100, 100);
			ctx.fillStyle = 'rgb(0,128,0)';
			ctx.fillRect(30, 30, 80, 80);
			ctx.font = '20px Arial';
			ctx.fillStyle = 'rgb(0,0,0)';
			ctx.fillText('hello', 60, 110);
			const dataURL = canvas.toDataURL();
			const hash = hashCode(dataURL)
			return hash
		}

		function hashCode(str) {
			let hash = 0;
			for (let i = 0; i < str.length; i++) {
				const char = str.charCodeAt(i);
				hash = (hash << 5) - hash + char;
				hash |= 0;
			}
			return hash
		}
		const canvasFing = getCanvasFingerprint()
		console.log(canvasFing)

通常のブラウジングでは、生成される値は 291669864 です。

image

プライベートブラウジングでも 291669864 です。

image

どうすれば異なる値になるのでしょうか。
別のブラウザやデバイスに変えてみてください。

image

Screenshot_20230802_151336

同じキャンバスを描画しても、なぜ生成される値が異なるのでしょうか。
これは、異なるブラウザ、同じブラウザの異なるバージョン、異なるオペレーティングシステム、異なるハードウェアによって、描画エンジンに多かれ少なかれ差異があるためです。同じキャンバスを描画しても、肉眼では気づきにくい差異があり、データに反映されることになります。
これは多くの要素に影響を受けるものであり、ブラウザにプラグインをインストールすることさえ影響を与える可能性があります。ブラウザの設定や操作環境の設定なども含まれます。
これは単なるキャンバスの例ですが、他の生成されたハッシュ値と組み合わせると、単一のプロキシだけでは役に立ちません。
これは主に広告(ショッピング広告など)や不正防止(票の不正投票、再生回数の不正操作など)に使用されますが、根本的にはユーザーを識別するためのものです。したがって、あなたが閲覧しているウェブサイトがあなたを識別したい場合、それは非常に簡単です。

ただし、ブラウザの指紋というものがあります。これにより、同じブラウザ内で異なる指紋を切り替えることができますが、有料です。
実装方法も非常にシンプルで、異なる指紋方法に対応するために、対応する API を変更します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。