用語集

ブラウザフィンガープリンティングとは何か?

Browser fingerprintingとは、ウェブサイトがブラウザから一連の属性(User-Agent、画面サイズ、フォント、プラグイン、キャンバスハッシュ、WebGLシグネチャなど)を収集し、それらを固有のシグネチャに組み合わせることで訪問者を識別・追跡する技術です。

現代のフィンガープリンティングが収集するシグナル、「新しいIP」だけでは人間らしく見えない理由、およびスクレイパーのフィンガープリントをクリーンに保つ方法を理解する。

解説

Browser fingerprintingは、ブラウザからさまざまな属性を収集し、安定した識別子に変換します。クッキーがなくても、User-Agent、言語、タイムゾーン、画面解像度、インストールされたフォント、キャンバスレンダリングハッシュ、WebGLレンダラー文字列、オーディオコンテキストフィンガープリント、その他数十のシグナルの組み合わせは、驚くほどの精度で単一のブラウザをセッションをまたいで識別できるほど固有です。

大きく分けてパッシブとアクティブの2種類のfingerprintingがあります。パッシブfingerprintingは、ブラウザが暗黙的に公開する属性(User-Agent、Accept-Language、sec-ch-uaクライアントヒント)を読み取ります。アクティブfingerprintingは、ブラウザのレンダリングエンジン、オーディオエンジン、GPU、タイミング特性を調べるJavaScriptを実行し、ハッシュを計算します。

スクレイピングと自動化において、fingerprintingが重要なのはIPローテーションだけでは不十分だからです。10,000件のレジデンシャルIPをローテーションしても、すべてのリクエストが同じキャンバスフィンガープリントと同じPlaywrightデフォルトのUser-Agentを持っていれば、接続先は10,000件すべてのリクエストを同一のスクレイパーインスタンスに関連付けることができます。現代のアンチボットシステム(Cloudflare、Akamai、PerimeterX、Datadome)はすべて、IP分析と並行してfingerprintingを多用しています。

仕組み

ブラウザがフィンガープリントコードを含むページを読み込むと、スクリプトはブラウザのプロパティ(UA、言語、プラグイン、画面、タイムゾーン)を列挙し、特定のテキストやグラデーションを使って非表示のキャンバスを描画してレンダリングされたピクセルを読み取り(キャンバスフィンガープリント)、WebGL コンテキストを作成してGPU ベンダーとレンダラーの文字列を読み取り(WebGL フィンガープリント)、audio API でトーンを生成してスペクトルを読み取り(オーディオフィンガープリント)、ハードウェアシグナルのために特定の操作(math.tan、performance.now のドリフト)のタイミングを計測します。

これらの値はすべてフィンガープリントID にハッシュ化されてサーバーに送り返されます。これらの属性が十数個組み合わさるだけで非常に高いユニーク性を持つため、生成されたID はクッキーの削除、新しいセッション、異なるIP をまたいでブラウザを安定して識別します。

パッシブフィンガープリンティング

ブラウザがHTTPヘッダーとJavaScriptグローバル変数を通じて暗黙的に公開する属性を読み取ります: User-Agent、Accept-Language、sec-ch-ua ヒント、画面サイズ、タイムゾーン、言語。低コストで、あらゆる環境で動作します。

アクティブ / キャンバスフィンガープリンティング

非表示のキャンバスに描画してピクセルハッシュを読み取るJavaScriptを実行。GPU/ドライバーの組み合わせが異なると微妙に異なるレンダリングが生成され、キャンバスフィンガープリントはデバイスごとに高い安定性を持ちます。

WebGLフィンガープリンティング

GPU ベンダー、レンダラー文字列、サポートされている拡張機能について WebGL コンテキストを調査します。ヘッドレスブラウザや仮想化された GPU は、独特のシグネチャを生成することが多いです。

音声フィンガープリンティング

AudioContext API を使用してオーディオ波形を生成し、結果として得られる周波数スペクトルを読み取ります。オーディオ処理は OS およびオーディオドライバーによって微妙に異なり、デバイスごとの安定したハッシュを生成します。

TLS / ネットワークフィンガープリント(JA3、JA4)

TLSハンドシェイク自体(暗号リスト、拡張機能、ALPNの順序、GREASE値)をフィンガープリントします。アプリケーション層が介入する前に、基盤となるHTTPクライアント(curl、Python requests、Playwrightなど)を識別します。

主な使用事例

ログイン、サインアップ、フォームページでのボット防御
アカウントの重複排除(1フィンガープリント = 1ユーザー)
金融および広告購入フローにおける不正スコアリング
Cookieを使わずにリピート訪問者を追跡
アプリケーション層でのスクレイパー検出
FAQ

よくある質問

よくある質問: ブラウザフィンガープリンティング.

アンチBot システムはIPだけでなくブラウザのフィンガープリントを識別するからです。10,000件のリクエストが10,000個のIPから送信されていても、すべてが同一のキャンバスフィンガープリント、同一のTLS JA3、同一のUser-Agentを持っていれば、システムはそれらを1つのスクレイパーとして関連付けることができます。多数の異なるユーザーに見せるためには、IPローテーションとフィンガープリントの管理の両方が必要です。

はい、そのまま使用できます。デフォルトのPlaywright/Puppeteerブラウザには、アンチボットベンダーが容易に検出できる特徴的なシグナル(navigator.webdriver=true、特定のプラグインリスト、chrome-appオブジェクトの欠如)があります。ステルスプラグインまたはカスタム起動プロファイルを使用して、これらを隠蔽し、実際のユーザーフィンガープリントに合わせてください。

実際のユーザーフィンガープリントにできる限り近づける: 対応するsec-ch-uaヘッダーを持つ最新のChrome User-Agent、現実的な画面サイズ、プロキシのジオに合致したタイムゾーン、本物らしいcanvas/WebGL/audio(またはランダム化するステルスライブラリを使用)、そしてChromeに似たハンドシェイクを生成するTLSクライアント。これらすべてをresidentialプロキシと組み合わせることで、スクレーパーとしてフィンガープリントされにくくなります。

CanvasおよびWebGLフィンガープリントはデバイスごとに最も安定しています。TLSハンドシェイク(JA3/JA4)はHTTPクライアントごとに最も安定しています。Canvas + TLS + User-Agentの組み合わせは、ほとんどのスクレイパー設定を一意に識別するのに十分です。そのため、アンチボットベンダーは3つすべてを重ね合わせます。

はい、ただし制限があります。puppeteer-extra-plugin-stealth、undetected-chromedriver、BrowserScanスタイルのランダマイザーなどのツールは、canvas、WebGL、オーディオ、その他のアクティブシグナルを偽装します。問題は一貫性です。リクエストごとにフィンガープリントがランダム化されても、cookie/セッションがリクエスト間で維持される場合、そのミスマッチ自体がフィンガープリントになります。

モバイルIP自体はCGNATにより高い信頼性を持ちます。ブラウザのフィンガープリントはIPタイプとは独立しており、デスクトップUser-Agentを使用したモバイルプロキシはミスマッチとして検出される可能性があります。モバイルスクレイピングには、モバイルプロキシと本物のモバイルブラウザフィンガープリント(モバイルUA、モバイルsec-ch-ua-mobile=?1、モバイル画面サイズ)を組み合わせてください。