CreepJS: ブラウザの指紋テストはあなたをどのように見ているか
ごく普通のウェブページを1つ開いただけで、何もクリックする前に、何百万ものブラウザの中からあなたのブラウザを特定できてしまいます。ログインも、Cookieも、許可を求めるプロンプトも必要ありません。履歴を消去し、シークレットモードに切り替え、VPN経由で通信しても、多くの場合、ページはあなたを認識できます。これはあなたのアドレスからではなく、ウェブブラウザが無料で提供する何千もの小さな癖から機能しているのです。CreepJSは、あなたがどれほど危険にさらされているかを証明するツールであり、その動作を一度見れば、ウェブはもはや匿名ではなくなります。このガイドでは、CreepJSとは何か、どのようにあなたを認識するのか、ブラウザのプライバシー侵害に対抗する方法、そして複数の暗号通貨アカウントを運用している人がなぜCreepJSに関心を持つべきなのかを説明します。
ブラウザフィンガープリンティングとは何ですか?
ブラウザフィンガープリンティングは、タグを使わない識別方法です。デバイスにCookieを保存して後で読み取るのではなく、スクリプトがページを読み込むだけでブラウザが明らかにする数十もの詳細情報を静かに収集し、それらを組み合わせて、多くの場合ユーザー固有の単一の値を作成します。画面解像度、インストールされているフォント、タイムゾーン、ユーザーエージェント文字列、グラフィックカードが画像を描画する方法など、それぞれはごくありふれた情報ですが、これらを組み合わせることで、特定のブラウザを特定でき、他のブラウザはほとんど特定できません。
その組み合わせはどれほどユニークなのでしょうか? EFFの画期的な調査で、ピーター・エッカーズリーは、自らテストを行った訪問者の間ではブラウザの83.6%がユニークであり、プラグインの詳細を含めると94.2%に上昇し、フィンガープリントには約18.1ビットの識別情報が含まれていることを発見しました。2018年に行われた、ある大手サイトへの200万人の訪問者を対象とした後の調査では、一般ユーザーは共通の設定に集中するため、実際のユニーク性は33.6%程度と低くなりました。真実はその中間にあり、いずれにせよ、ブラウザが珍しいほど、そのユニークなフィンガープリントによって身元がばれやすくなります。
この技術は、多くの人が想像するよりもはるかに普及しています。 プリンストン大学が上位100万のウェブサイトを調査したところ、約1.6%のサイトでキャンバスフィンガープリンティングが使用されていることが判明し、人気サイトの5%を超えました。その後の調査では、2021年までに上位10万サイトの約10%で使用されていると推定されています。また、その影響は均一ではなく、AmIUniqueの調査によると、デスクトップブラウザの約90%がユニークであるのに対し、ハードウェアがより均一な傾向にあるモバイルでは約81%にとどまっています。いずれにせよ、フィンガープリンティングは、あなたが普段アクセスしている多くのページで、ひっそりと利用されているのです。
CreepJSとは何ですか?また、誰が作ったのですか?
CreepJSは、あなたのデータを販売しようとするトラッカーではありません。これは、開発者のAbraham Juliot氏が、ほとんどのプライバシー保護対策がいかに脆弱であるか、そしてフィンガープリンティングが実際にどのように機能するかを示すために作成した、オープンソースのフィンガープリンティングライブラリおよびミラーサイトです。ブラウザでライブデモにアクセスすると、テストが実行され、ブラウザの識別可能性と信頼性に関するレポートが返されます。
このプロジェクトはGitHub上で、寛容なMITライセンスの下、約2,400のスターを獲得して公開されており、20種類以上のテストカテゴリを1ページにまとめています。これは、実際のボット対策ツールというよりは、研究ベンチマークとして理解するのが最適でしょう。プライバシー研究者やアンチ検出ベンダーが、自らの成果を評価するための基準として活用するツールです。もしあなたのステルス設定がCreepJSに耐えられないなら、本格的な商用フィンガープリンティングサービスにも耐えられないでしょう。まさにこの理由から、このツールは誰もが勉強する非公式の試験となっているのです。
このツールが作成するレポートは、無料ツールとしては異例なほど詳細です。主要な信頼度スコアに加え、測定したすべてのシグナルを一覧表示し、操作されていると思われるシグナルには印を付け、ページを再読み込みした際のフィンガープリントの安定性も示します。そのため、開発者はプライバシー設定の変更が実際に効果があったのか、それとも単にそう感じただけなのかを知りたいときに、まずこのツールを利用するのです。
CreepJSの内部動作
ほとんどのフィンガープリンティングチェックは、単に設定を読み取るだけです。しかし、CreepJSはさらに一歩進んで、ブラウザに実際に何らかの処理を実行させます。例えば、画像を描画したり、3Dレンダリングを行ったり、生成された音声に対してオーディオフィンガープリンティングを実行したり、タイマーを起動させたりといった処理です。そして、それぞれの処理がどのように実行されるかを解析します。何をするかよりも、どのように実行されるかを偽装する方がはるかに難しいため、CreepJSは高い評価を得ているのです。
CreepJSが収集するシグナル
このツールは幅広い情報源から情報を収集しており、それぞれのブラウザ属性からデバイスに関する異なる情報が漏洩します。以下の表は、主な属性とその情報漏洩内容を示しています。
| 信号 | それが明らかにするもの |
|---|---|
| キャンバス | デバイスがテキストや図形をレンダリングする際の、ごくわずかなピクセルの違い |
| WebGL / GPU | 3Dレンダリングを通じて公開されるグラフィックハードウェアとドライバー |
| ウェブオーディオ | オーディオスタックが生成された音波をどのように処理するか |
| インストール済みのフォント | お使いのシステムで使用されている正確なフォントリスト |
| 画面解像度 | ディスプレイサイズ、色深度、ピクセル比 |
| ユーザーエージェント | ブラウザ、バージョン、およびオペレーティングシステムに関する主張 |
| WebRTC | VPNをすり抜けて漏洩する可能性のあるローカルネットワークの詳細 |
スクリプトは、通常のJavaScriptとブラウザAPI(ブラウザが報告するプラグインを含む)を介して、これらの情報のほとんどを読み取ります。CreepJSは、Webワーカーや非表示フレーム内で同じプローブを実行して回答を相互検証します。これは、改ざんされたブラウザは、メインウィンドウでは1つの回答を返し、他の場所では異なる回答を返すことが多いためです。
信頼スコア、エントロピー、そして嘘
CreepJSは、すべてのシグナルをハッシュ値に集約します。このハッシュ値は、あなたのプロファイル全体を表すコンパクトな値です。そして、そのハッシュ値に基づいて信頼スコアを算出します。このスコアは、あなたの行動の希少性よりも、ブラウザの一貫性や予測可能性を重視した指標です。シンプルで一貫性のある設定は、たとえ一般的なものであっても高いスコアを獲得します。
このアプリの巧妙な点は、嘘発見機能です。CreepJSは「嘘」、つまりブラウザを不正操作した際に生じる小さな矛盾を監視します。例えば、ユーザーエージェントがmacOSを主張しているにもかかわらず、インストールされているフォントやグラフィックスタックが明らかにWindowsを示している場合などです。ある値を偽装すると、別の場所に不一致が生じ、その不一致は隠そうとした元の信号よりも大きな問題となることが多いのです。
CreepJSはラベルチェックだけにとどまりません。特定の操作にかかる時間を計測したり、JavaScriptエンジンが計算結果を丸める方法を検査したりします。なぜなら、エンジンのバージョンによって三角関数の丸め方が微妙に異なるため、偽のバージョン番号を使っても実際のエンジンの計算方法を変えることはできないからです。こうした目立たないチェックを積み重ねていくと、自信満々の偽装も、まるでコスチュームのように見えてきます。
CreepJSが明らかにするヘッドレスブラウザについて
スクレイパーやボット開発者を不安にさせるのは、まさにこの点です。デフォルトのSeleniumやPlaywrightセッションには、navigator.webdriverフラグがtrueに設定されていたり、HeadlessChromeユーザーエージェントが使われていたり、実際の人間のブラウザとは明らかに異なるシグナルが含まれているため、通常のブラウザ自動化ツールはほぼ瞬時に反応します。ステルスパッチはこれらの兆候を弱めますが、完全に無効化することは稀です。
CreepJSを用いた独立したテストにより、未加工のボットと高度なボットの性能差が明らかになった。以下の数値は、各ツールを同じフィンガープリントテストで検証したアンチボット検出に関する記事から引用したものである。
| 自動化設定 | CreepJSの検出 |
|---|---|
| バニラ・セレニウム/劇作家 | 約100%検出 |
| ステルスプラグイン搭載の劇作家 | 約40%が検出された |
| 検出されないChromeDriver | 約31%が検出された |
| カモフラージュフォックス(強化版ファイアフォックス) | ヘッドレススコアはほぼ0% |
ウェブスクレイパーを開発する人にとっての教訓は明白だ。フラグを1つオフにするだけでは不十分だ。CreepJSはプロファイル全体が整合性を保っているかどうかをチェックし、CreepJS上で半ば偽装された自動化ツールは、正直なツールよりも評価が低いことが多いからだ。目標は、レポートする情報が何もなくなるまでブラウザを分解することではない。空のプロファイル自体が疑わしいからだ。目標は、ヘッドレスセッションが実際の画面上の実際のブラウザとまったく同じようにレンダリング、動作、および計測されるようにすることであり、これは単一の設定をfalseに切り替えるよりもはるかに難しい課題である。
仮想通貨アカウントのCreepJS検出を回避する
CreepJSの解説記事でめったに見かけない視点をここに示します。取引所やエアドロッププラットフォームが訪問者の指紋認証を行う理由は、カジノがフロアを監視するのと同じ理由です。つまり、一人の人物が密かに多数のアカウントを運用しているのを捕まえるためです。そして、共有された指紋認証によって、多数の「別個の」ウォレットを一つのマシンに紐付けることができるのです。
取引所とエアドロップがあなたの指紋を記録する理由
ここでの利害は実際のお金です。LayerZero プロトコルが2024年5月にエアドロップのシビル攻撃対策を実施したとき、803,093のアドレスがマルチアカウントファーミングの疑いがあるとフラグ付けされ、最終的に申請者の約59%が削除されました。デバイスとブラウザのフィンガープリンティングは、プラットフォームがこれらのアカウントを関連付けるために使用する最も強力なツールの1つです。新しいウォレットは数秒で作成できますが、真に新しいフィンガープリントを作成するのははるかに困難です。
アンチ検出ブラウザの実際の動作
ここで登場するのがアンチ検出ブラウザです。このカテゴリには、Multilogin、GoLogin、AdsPower、 Dolphin Antiなどが含まれます。指紋を隠すのではなく、各プロファイルに完全で内部的に一貫性のある独自のプロファイルを与えるため、各アカウントは変装した同一人物ではなく、異なる普通の人物のように見えます。需要は爆発的に増加しており、AdsPowerだけでも、2020年の約10万人のユーザーから2025年には約900万人に成長すると報告しています。これらのブラウザが成功しているのは一貫性です。完全に一貫性のあるプロファイルは、3箇所で巧妙にパッチを当て、4箇所目で矛盾しているプロファイルよりも優れているからです。内部的には、各プロファイルは一致する一連の値を送信します。信憑性のあるユーザーエージェント、フォントリスト、GPU文字列、画面サイズ、タイムゾーンはすべて同じ想定デバイスに属し、優れたツールは、1つのフィールドを編集して残りがまだ適合することを期待するのではなく、それらを単一のユニットとして回転させます。ただし、ここで正直な注意点が1つあります。指紋認証をクリーンに保つことはログイン時のプライバシーを保護しますが、自己管理や慎重な運用セキュリティ対策に取って代わるものではありません。また、多数のアカウントを運用することはプラットフォームの利用規約に違反する可能性があります。
CreepJSの信頼スコアを下げる方法
具体的な手順書は想像以上に少なく、その背後にある逆説的なルールは、偽物っぽく見えるよりも、普通で一貫性のある見た目のほうが良いということです。以下に、作業を進めるための合理的な順序を示します。
1. 実際の一般的なデバイスプロファイルから始め、個々の値を中途半端に偽装したいという衝動を抑えてください。なぜなら、あなたが作り出した不一致はすべて、CreepJS が嘘としてフラグを立てる可能性があるからです。
2. 完全な匿名性を求めるなら、 Tor Browserを使用してください。Tor Browserは、画面をレターボックスで固定サイズに分割し、すべてのWindowsマシンが同じWindowsを、すべてのMacが同じmacOSを報告するようにすることで、群衆に紛れ込むことができます。
3. Brave を考えてみましょう。Brave の farbling は、セッションごとに小さなランダムなひねりをキャンバスと音声の読み取りに加えるため、値が安定した 1 つの ID を形成するのではなく、サイト間で変化します。
4. 奇抜な拡張機能や変わった設定は避けましょう。変わった選択はエントロピーを高め、あなたをより個性的にするだけで、個性が薄れることはありません。
5. 複数のアカウントを使用する場合は、プライバシーアドオンを大量に使用するのではなく、一貫性のあるプロファイルを備えた適切なアンチ検出ブラウザを使用し、ライブのCreepJSデモで再テストして、見出しのスコアだけでなく、嘘がどれだけカウントされるかを確認してください。
実際に重要なアカウントから始め、正直にテストを行い、その数値を最初の試みで満点を取らなければならない成績ではなく、フィードバックとして捉えましょう。

ブラウザフィンガープリンティングを回避する限界
指紋認証に完全に勝つことは決してできず、ただ周囲に溶け込むことしかできない。そして、CreepJSは、その溶け込みがいかに薄弱であるかを示すために存在している。指紋認証対策ツールは改良されてきたが、検出方法も同様に改良されてきた。より広範な傾向も、プライバシーにとって好ましいものではない。Google は、長年廃止を約束してきたサードパーティCookieを2025年4月まで存続させ、その年の初めには、広告主に対する指紋認証の禁止をひっそりと解除した。英国のデータ規制当局はこの動きを無責任だと非難した。指紋認証は衰退するどころか拡大しており、現実的な目標は真の不可視性ではなく、群衆の中に紛れ込む低エントロピーで一貫性のあるプロファイルである。
あなたの指紋、CreepJS、そしてプライバシー
CreepJSを一度自分自身で実行してみてください。そして、その信頼スコアが本来の目的である警鐘となるのを待ちましょう。目的は幽霊のように振る舞うことではなく(それではかえって奇妙に見えるだけです)、普通で一貫性のある人物に見え、目的に合ったツールを使うことです。匿名性を求めるならTor、多くのアカウントを管理しているなら一貫性のある検出回避プロファイルを使うべきです。フィンガープリンティングは、本気で取り組むべき、周囲に溶け込むためのゲームなのです。ですから、本当の質問は単純です。自分のブラウザがウェブに何を伝えているかを最後に確認したのはいつですか?
