ラウザフィンガープリント情報を取得するには?抽出方法の共有

Cookieを削除し、シークレットモードをオンにして、IPアドレスを変更しても、ウェブサイトを開くとあなたが誰であるか認識されてしまいます。表示される広告は以前と全く同じで、リスク管理の警告も相変わらず表示されます。
その裏で機能しているのがブラウザフィンガープリント(Browser Fingerprinting)です。これはCookieとは異なります。Cookieはパソコン内のファイルであり、いつでも削除できます。しかし、フィンガープリントは端末には保存されず、ウェブページを閲覧するたびにその場で計算されます。キャッシュをクリアしたり、アカウントを変更したりしても影響を受けず、デバイスの設定に大きな変更がない限り、ウェブサイトはあなたを同一人物として認識できます。
本記事では、ブラウザフィンガープリントとは何か、ウェブページがどのようにフィンガープリントを抽出するのか、自分で確認する方法、そして複数アカウントを運用するシナリオでどのようにフィンガープリントを主体的に制御するのかについて、体系的に解説します。
一、ブラウザフィンガープリントとは
ブラウザフィンガープリントは、ウェブサイトがあなたの閲覧環境における数十の固有の特徴を組み合わせて生成する一意の識別子です。ブラウザのバージョン、オペレーティングシステム(OS)、画面解像度、フォント一覧、グラフィックカードのモデルなど… 個々の特徴は多くの人が共有していますが、数十項目を組み合わせると、重複する確率は極めて低くなります。公開テストによると、フィンガープリントの一意性は90%以上に達することが多いです。
Cookieとの決定的な違いは、Cookieがウェブサイトによってあなたのパソコンに書き込まれるものであり、見つけて削除できるのに対し、フィンガープリントはウェブサイトがデバイス自体の情報を読み取るものであり、訪問するたびにその場で計算され、ローカルには保存されず、削除できない点にあります。
ウェブサイトは主に以下の側面からフィンガープリントを収集します。
・ブラウザの種類、バージョン番号、OS(User-Agent)
・画面解像度、色深度、デバイスピクセル比
・タイムゾーンとシステム言語の設定
・インストールされているフォント一覧
・CanvasおよびWebGLのグラフィックレンダリング結果
・音声処理の特徴(AudioContext)
・WebRTCのネットワーク情報(実際のIPアドレスが漏洩する可能性あり)
・ブラウザの拡張機能およびMIMEタイプ
二、ウェブページはどのようにフィンガープリントを抽出するのか
すべてバックグラウンドでJavaScriptによって実行され、ユーザーは全く気付くことなく数秒で完了します。以下の段階に分けられます。
ステップ1:基本的なパッシブ情報
ブラウザがウェブページをリクエストする際、自動的にUser-Agent、言語、タイムゾーンなどの情報が付与されます。ウェブサイトは navigator.userAgent、screen.width、screen.height などのAPIを通じてこれらを直接読み取ります。これらの情報は普通に見えますが、すでに多くのユーザーを絞り込むことができます。例えば、同じ1920×1080の解像度でも、WindowsとmacOSではレンダリング方法が異なります。
ステップ2:Canvasフィンガープリント
ウェブサイトは、ブラウザに隠されたCanvas(キャンバス)上にカラーグラデーションのあるテキストを数行描画させ、toDataURL() を使用してピクセルデータを読み取ります。グラフィックカードのドライバ、フォントレンダリングエンジン、アンチエイリアスアルゴリズムの違いにより、最終的なピクセル出力が完全に一致することはほぼ不可能です。このプロセスでユーザーが認識できるのは、せいぜい1×1ピクセルの非表示要素であり、通常は何も見えません。
ステップ3:WebGLフィンガープリント
Canvasよりもさらに詳細です。ウェブサイトはWebGL APIを呼び出してシンプルな3Dモデルをレンダリングし、そこからGPUベンダー、具体的なモデル(Intel IrisかNVIDIA GeForceか)、レンダリング精度、シェーダーのコンパイルパラメータを読み取ります。多くの強力なリスク管理システムは、WebGLを重要な判断基準としています。
ステップ4:フォントと音声による補完
ウェブサイトはJavaScriptを通じてシステムフォントを列挙します。非表示要素の幅を測定したり、Canvas上に異なるフォントで描画してピクセルを比較したりします。Windowsのデフォルトである「メイリオ(Meiryo) / Yu Gothic」、macOSの「ヒラギノ角ゴ / 游ゴシック」など、OSごとの差異は明確です。音声に関しては、ウェブサイトがブラウザにオシレーター音を生成させ、処理された波形データを読み取ります。サウンドカードやドライバの浮動小数点演算の精度が異なるため、結果に差異が生じます。
最終生成
すべてのデータ収集が完了すると、フロントエンドのJSはそれらを一つの大きなオブジェクトにまとめ、ハッシュアルゴリズム(Hash)を使用してハッシュ値を計算し、サーバーに送信します。サーバーは既存のデータベースと照合し、類似度がしきい値を超えた場合、同一ユーザーであると判定します。
三、自分のブラウザフィンガープリントを確認する方法
難易度順に3つの方法があります。
3.1 オンライン検出ツール
以下のウェブサイトを開くだけで自動的に検出され、Canvas、WebGL、フォントなどの各フィンガープリントの詳細なレポートが表示されます。
・BrowserScan:総合的な検出を行い、一意性のスコアと各項目の詳細を提供します。
・ToDetect:日本からのアクセスにも対応しており、フィンガープリントのスコアとリスク項目を表示します。
・AmIUnique:世界規模でのフィンガープリントの独自性を表示します。
・BrowserLeaks:技術者向けで、JSON形式の完全なレポートを提供します。
3.2 ブラウザの開発者ツール
F12キーを押して開発者ツールを開き、「Console(コンソール)」タブに切り替えて、以下のコマンドを入力することで各項目を確認できます。
・navigator.userAgent —— ブラウザのバージョンとOS
・screen.width および screen.height —— 画面解像度
・navigator.language —— 言語設定
・Intl.DateTimeFormat().resolvedOptions().timeZone —— タイムゾーン
・navigator.hardwareConcurrency —— CPUコア数
・navigator.deviceMemory —— デバイスのメモリ容量
3.3 FingerprintJSを使用したセルフテスト
フロントエンドの基礎知識があるユーザーに適しています。FingerprintJSはオープンソースのライブラリであり、HTMLページに読み込んだ後、FingerprintJS.load().then(fp => fp.get()) を実行することで、visitorIdおよびCanvasのハッシュ値、フォント一覧、拡張機能情報を含む完全なフィンガープリントコンポーネントを取得できます。
四、検出後における、複数アカウント運用時のフィンガープリント管理
一般ユーザーにとっては、自身のフィンガープリントの状況を把握するだけで十分です。しかし、越境ECやSNSの複数アカウント運用を行っており、数十から数百のアカウントを管理している場合、検出するだけで変更しなければ実質的な意味はありません。必要なのは、各ウィンドウに独立した、互いに紐付かないフィンガープリント環境を持たせることです。
現在、このシナリオでよく使われる解決策がフィンガープリントブラウザ(アンチ検出ブラウザ)です。BitBrowser(比特ブラウザ)を例に挙げると、これは拡張機能レベルの表面的な偽装ではなく、Chromiumコアレベルでウィンドウごとに独立したフィンガープリントを生成します。
・Canvas および WebGL:微小なノイズを注入し、レンダリングごとのハッシュ値を変化させます。
・フォント一覧:異なるシステムのフォントの組み合わせをシミュレートします。
・User-Agent:Windows、macOS、Androidなどに切り替え可能です。
・解像度、タイムゾーン、言語:プロキシIPと自動的にマッチングします。
・WebRTC:実際のIPアドレスの漏洩を防ぎます。
・AudioContext:異なるサウンドカードの特徴をシミュレートします。
各ウィンドウのCookie、LocalStorage、キャッシュは完全に分離されており、データが交差することはありません。独立したプロキシIPと組み合わせることで、ウィンドウ間の関連付けを完全に防ぎます。このソフトウェアは10個の無料環境を提供しており、日常的なテストや中小規模の運用ニーズを満たします。
五、よくある質問(FAQ)
Q:ブラウザフィンガープリントとCookieの違いは何ですか?
A:Cookieはウェブサイトがローカル環境に書き込むファイルであり、ブラウザの設定から削除できます。一方、フィンガープリントはデバイスのハードウェアおよびソフトウェアの特徴に基づいてウェブサイトがリアルタイムに計算するものであり、ローカルには保存されず、削除できません。シークレットモードでもフィンガープリントの収集を防ぐことはできません。
Q:シークレットモード/プライベートブラウジングはフィンガープリント追跡を防げますか?
A:防げません。シークレットモードは、ブラウザが閲覧履歴やCookieなどのローカルデータを保存するのを防ぐだけであり、Canvas、WebGL、フォント一覧、画面解像度などのデバイス特徴は引き続きJavaScriptで読み取ることができます。リスク管理システムから見れば、シークレットモードと通常モードのフィンガープリントに違いはありません。
Q:検出ツールでフィンガープリントの一意性が高いと表示されましたが、心配する必要がありますか?
A:一般ユーザーは気にする必要はありません。一意性が高いということは、デバイスの構成が比較的識別しやすいことを示しているだけで、直接的に安全ではないことを意味するわけではありません。しかし、複数アカウントを運用する場合、フィンガープリントが独自すぎるとプラットフォームにマークされやすくなるため、理想的なフィンガープリントは「よくある一般的な構成」であり、目立たないことです。
Q:User-Agentを変更するだけで十分ですか?
A:全く不十分です。User-Agentは最も表面的な情報であり、プラットフォームの本当の判断基準は、Canvas、WebGL、フォント一覧といったハードウェアレベルの特徴に依存しています。もしUAをmacOSに変更しても、Canvasのレンダリング結果がWindowsのグラフィックカードの特徴を暴露していれば、データが矛盾していること自体がリスク管理システムによって異常としてマークされます。
Q:フィンガープリントを完全に消去することは可能ですか?
A:できません。ブラウザがウェブページを正常に表示するためには、必ず基本情報を提示する必要があります。また、フィンガープリントが欠落していること自体が疑わしいシグナルとなります。正しいアプローチは、フィンガープリントを隠すことではなく、本物に見え、かつ互いに分離されたフィンガープリント環境を生成し、各ウィンドウがそれぞれ異なる実際のデバイスからのアクセスであるかのように見せることです。



