ブログに戻る

ブラウザフィンガープリントには何がある?代表的な16種類を詳しく解説

Webサイトは、十数種類の情報を組み合わせたブラウザフィンガープリントで訪問者を識別します。本記事では、IP、タイムゾーン、UA、Canvas、WebGL、AudioContextなど代表的な16の指紋要素について、その意味と仕組みを順番に解説します。

Webサイトにアクセスすると、相手側はブラウザが外部に公開するさまざまな情報を静かに収集できます。たとえば、OS、画面解像度、インストール済みフォント、グラフィック描画に使うGPUなどです。これらは単独ではごく一般的な情報ですが、組み合わせるとかなり固有性の高い「ブラウザフィンガープリント」になります。Cookieを削除したり、シークレットモードを利用したりしても、Webサイトがこの指紋を使ってユーザーを識別できる場合があります。

複数アカウントを運用するチームにとっては、それぞれのフィンガープリント要素を理解することで、環境パラメータをどのように設定すべきか、なぜ一部の値を相互に整合させる必要があるのかが分かります。ここでは、代表的な16種類のブラウザフィンガープリントを順番に見ていきます。

ネットワーク・位置情報系のフィンガープリント

IPアドレス。 インターネットに接続するたびに、通信事業者は端末にIPアドレスを割り当てます。現実世界の郵便住所のような役割を持ち、データが正しい宛先へ届くようにします。WebサイトはIPを使って訪問者のネットワーク上の接続元を判断し、位置情報の推定、コンテンツの最適化、異常ログインの検知などのセキュリティチェックを行います。IPにはIPv4(例:192.168.1.1)とIPv6(例:2001:0db8:85a3::8a2e:0370:7334)の形式があります。

地理的位置情報。 IPから、訪問者がいる国、地域、都市をおおよそ推定でき、場合によってはさらに詳しい位置情報が得られることもあります。Webサイトはこれをローカライズされたコンテンツ、言語設定、地域別広告などに利用します。

タイムゾーンと現地時刻。 タイムゾーンはIPから推定できるほか、ブラウザスクリプトで直接読み取ることもできます。注意すべきなのは整合性です。たとえばIPが米国を示しているのに、ブラウザのタイムゾーンが北京時間になっている場合、この不一致は不正対策システムから異常として検知されやすくなります。

ブラウザ基本情報系のフィンガープリント

User Agent(UA)。 ブラウザがWebサイトに送信する文字列で、ブラウザの種類やバージョン、OSなどの情報を含みます。たとえばWindows上のChromeのUAには、ブラウザエンジンやシステムのバージョン情報が含まれます。WebサイトはUAをもとに互換性のあるコンテンツや画面を提供します。

ブラウザ言語。 ブラウザに設定された優先言語で、HTTPリクエストヘッダーを通じてサーバーへ送信されます。重要なのは、ブラウザの表示言語と外部に公開される言語フィンガープリントは一致しなくてもよいという点です。言語フィンガープリントがプロキシIPの地域と一致していれば、ブラウザ画面が中国語表示でも環境全体の整合性には影響しません。

フォント。 端末ごとにインストールされているフォントの組み合わせは異なり、ブラウザはスクリプトを使って利用可能なフォントを列挙できます。標準外のフォントを大量に入れている端末では、フォント一覧そのものが強い識別情報になる場合があります。

画面解像度。 物理的な画面解像度だけでなく、ツールバーやタブバーを除いたブラウザの表示領域サイズも含まれます。端末ごとにディスプレイ構成が大きく異なるため、よく使われるフィンガープリント要素です。

ハードウェア同時実行数とデバイスメモリ。 ブラウザはhardwareConcurrencyを通じてCPUの論理コア数を、deviceMemoryを通じて概算のメモリ容量を公開できます。後者は通常2の累乗単位で報告され、ブラウザのプライバシー保護設計により上限は8GBです。

Do Not Track。 ユーザーはブラウザ設定で「追跡しない」フラグを有効にできます。興味深いのは、多くのユーザーがこの設定を変更しないため、有効にすることで逆にデフォルト設定のユーザー群から目立ち、識別可能な特徴の一つになることです。

グラフィック・メディア系のフィンガープリント

Canvasフィンガープリント。 WebサイトはブラウザにCanvas上で図形や文字を描画させ、そのレンダリング結果を解析できます。画面、フォント、グラフィックカードの違いによって、端末ごとにピクセル単位のごく小さな差が生まれます。これらを組み合わせるとかなり固有性の高い「デジタル指紋」になるため、Canvasは識別能力の高いフィンガープリント方式です。

WebGLとWebGPU。 WebページからGPUを使って3Dグラフィックを描画できるグラフィック関連APIです。Webサイトはこれらを通じてグラフィックカードのモデルなどのハードウェア情報を取得し、ハードウェアレベルのフィンガープリントを作れます。ブラウザ上の3Dゲームでその働きを体感できますが、同時に重要なフィンガープリント情報源でもあります。

メディアデバイスのフィンガープリント。 MediaDevices APIを使うと、カメラやマイクなどのデバイスについて、種類、名称、解像度、接続方式などの情報を取得できます。プライバシー保護のため、現在のブラウザでは通常、こうした情報を読み取る前にユーザーの許可が必要です。

AudioContextフィンガープリント。 AudioContextはブラウザが音声処理に使用するAPIです。端末ごとのオーディオハードウェアやソフトウェアは音の処理方法にわずかな違いがあり、その差を取得して「音声フィンガープリント」を作れます。これも比較的高い識別力を持ちます。

レイアウト・その他のフィンガープリント

ClientRects。 Webページのレンダリング時、ブラウザはページ要素の位置やサイズを継続的に計算します。その結果は端末、ブラウザ、ウィンドウサイズによって異なります。Webサイトはこうしたレイアウト情報を組み合わせて、識別に使える特徴を作ることができます。

SpeechVoices。 端末で利用可能な音声合成の選択肢(言語、アクセント、話者など)をもとにするフィンガープリントです。端末ごとの音声構成が完全に一致する可能性は低いため、これも識別情報として利用できます。

ネットワークと位置情報、ブラウザ基本情報、グラフィックとメディア、レイアウトなどの信号をまとめたブラウザフィンガープリントの階層構造

フィンガープリントを理解して、整合した環境を設定する

上記16の要素のうち、IP、タイムゾーン、言語、UA、Canvas、WebGL、AudioContextなどは、複数アカウント運用への影響が特に大きい項目です。ブラウザ環境を設定するときに重要なのは、各パラメータを「特殊」にすることではなく、セット全体に整合性を持たせることです。プロキシIPが米国なら、タイムゾーン、言語、UAも同じ地域を示すようにします。逆に、パラメータ同士が矛盾しているほうが目立ちやすくなります。

PurpleMarkのWeb版では、環境作成時に上記の主要項目をカバーしています。具体的には、OSとChromiumエンジンのバージョン、User-Agentと解像度、ブラウザ言語、タイムゾーンと地理的位置情報(IPに追従またはカスタム)、フォント一覧、WebGLメタデータ、WebGPU、WebRTCとプロキシUDP、さらにCanvas、AudioContext、メディアデバイス、ClientRects、SpeechVoices、Do Not Track、ハードウェアアクセラレーション、MACアドレス、ポートスキャン保護などの設定です。シンプルな原則として、ビジネスアカウントの対象地域を基準にし、ネットワーク、システム、言語、高度なフィンガープリント設定を同じ地域に合わせ、その環境を長期的に安定させます。

なお、環境分離によって下げられるのは、同じ環境を共有することでアカウント同士が関連付けられるリスクです。アカウントを長期的に安定させられるかどうかは、コンテンツの品質やプラットフォームのルールに沿った運用ができているかにも左右されます。フィンガープリント設定はその一要素にすぎません。

よくある質問

ブラウザフィンガープリントは変わりますか?

変わります。端末設定の変更、新しいソフトウェアのインストール、ブラウザやOSのアップデートなどによってフィンガープリントが変化する可能性があります。そのため、複数アカウント用の環境を一度設定したら、なるべく安定させ、頻繁に変更しないことが推奨されます。

Cookieを削除しても識別されますか?

その可能性はあります。Cookieは識別手段の一つにすぎません。Canvas、WebGL、AudioContextなどのフィンガープリントはCookieに依存しないため、Cookieを削除しても残ります。「シークレットモード=見えなくなる」ではない理由の一つです。

すべてのWebサイトがブラウザフィンガープリントを収集しますか?

すべてのサイトが積極的に収集しているわけではありませんが、大手のSNS、EC、広告プラットフォームでは、リスク管理、不正対策、広告ターゲティングなどにフィンガープリントを利用することが一般的です。一般ユーザーへの影響は限定的ですが、複数アカウント運用者にとっては影響が大きくなります。