ブラウザの指紋は、あなたの「シテルス」の自動化がキャッチされる理由です。 また、同じマシンから同じコードを実行している2つの自動化スクリプトがワイルドに異なる成功率を持つことができる理由です。 1つは実際の訪問者のように見えます、もう1つはボットのように見えます、そして違いは、開発者が意識的に放出されることはありません。
このガイドは、それらの信号が何であるか、アンチボットシステムがどのようにそれらを読み、そしてなぜ信号のcombinationが個々の表面よりも重要であるのかを完全に参照しています。 それはAIエージェントのビルダー、自動化オペレータ、およびそれのために設計する前に完全な信号の積み重ねを理解する必要があるセキュリティエンジニアのために書かれています。
ブラウザの指紋とは何ですか?
ブラウザの指紋は、ウェブサイトが訪問者のブラウザ、デバイス、ネットワークの測定可能なプロパティを収集し、その訪問者を認識、識別、識別、または検出するために使用される分類にそれらのプロパティを結合するプロセスとして定義されます。 訪問者がクッキーを受け入れるかどうかは、データがブラウザの環境自体を記述しているので、データが保存されていないためです。
指紋は単一の値ではありません。これは、キャンバスの読み戻し、AudioContextの出力、ナビゲーターのプロパティ、画面の寸法、フォントリスト、タイムゾーン、ネットワーク特性の数十の信号のベクトルです。これは、個別に弱い識別子ですが、集合的にセッションを識別または分類するのに十分ユニークです。 によると Electronic Frontier Foundation(電子フロンティア財団)のPanopticlick研究平均的なブラウザは、何百万人もの訪問者の間でユニークな指紋ベクトルを示しています。
特に自動化検出のために、アンチボットシステムは、自動ブラウザのパターン特性に対して観察された信号ベクトルを比較します。彼らは「誰がこの人ですか?」と尋ねていません。彼らは「実際の人間のブラウザ、または既知の自動化パターンと一貫性のある信号のこの組み合わせですか?
ブラウザの指紋の仕組み
ブラウザの指紋は、JavaScript と (sometimes) のネットワーク層プローブを実行して、測定可能なブラウザプロパティを読み取り、結果のベクトルを予測パターンと比較することによって動作します。 プロセスは 3 段階で発生します。
フェーズ1:パッシブコレクション
どのスクリプトが実行される前に、ネットワークレイヤーは既にシグナルを公開しています。TLS Client Hello fingerprint、HTTP/2フレームの注文、Accept-Language headers、IP 地理。これらは、接続レイヤーで読み込まれ、ページ上のJavaScriptは必要ありません。
フェーズ2:アクティブスクリプトベースのコレクション
ページの読み込みが終わったら、JavaScript は navigator プロパティを読み込み、レンダリング キャンバスをクエリし、可聴性の高いオーディオを再生し、フォントを列挙し、WebRTC の動作をチェックし、画面のメトリックを検査します。このフェーズは、ほとんどの指紋の表面のサンプルが行われます。
フェーズ3:クロスサーフェスコヒーレンスチェック
ベクトルは内部の一貫性のために評価されます。主張される navigator.platform = "MacIntel" 実際のAppleハードウェアと一貫した方法でGPU文字列、フォントリスト、オーディオ特性、タイムゾーンと一致する必要があります。 ベクター全体でMismatchesは、個々の表面だけよりも強力なボット信号です。
この第3相は、ほとんどのページレベルの「シテルス」アプローチを破るものです。すべての依存した表面を揃えることなく、単一のプロパティをパッチ表示することで、特に探している検出システムが一貫性の失敗を生み出します。
ネットワーク層の指紋
ブラウザがページのJavaScriptの単一行を実行する前に、ネットワーク層の指紋がサンプル化されます。 それらは、オペレーティングシステムやブラウザのバイナリから始まり、ページ環境からではなく、スプーフィに特に困難です。
TLS指紋(JA3/JA4)
TLS Client Hello message — は、HTTPS 接続の開始時に送信され、クライアントがサポートする cipher スイートが特定の順序で、拡張機能、サポートされた楕円曲線、および署名アルゴリズムが含まれています。 この組み合わせのハッシュは、JA3 (またはその新しいバリアント、JA4) 指紋と呼ばれます。 異なる Chromium バージョンは、異なる JA3/JA4 ハッシュ、および TLS ハンドシェイクをビルドする自動化ライブラリ(Chromium を通過するよりもむしろ)、実際のブラウザとは異なるブラウザから生成されます。 SalesforceのオープンソースJA3仕様 文書、技術はセキュリティ研究およびボット検出で広く利用されています。
HTTP/2 指紋
HTTP/2フレームの注文とコンテンツ — SETTINGS、WINDOW_UPDATE、HEADERS — クライアントの実装によって異なります。 Real Chrome は特定のフレームの注文を送信します。多くのオートメーション HTTP/2 クライアントは別のものを送ります。これはネットワークのエッジで読みます。
ヘッダーの順序および包装
HTTPヘッダはspecで順序を外していますが、実際のブラウザは特定のケーシングで一貫した順番に送信します(User-Agent コメントはありません。 user-agent)。オートメーションライブラリは、多くの場合、異なる注文やケーシングを生成します。
IP地理とASN
IP アドレス自体はメタデータ: 地理位置, ASN (それが所属するネットワーク), 評判. 既知のクラウドプロバイダからのデータセンター IP は、ISP から住宅 IP よりも強力なボット信号です. として、. MaxMind の GeoIP ドキュメント 説明、地理位置データベースは、住宅、データセンター、およびモバイルIPと合理的な精度で区別します。
レンダリングの表面
レンダリングの指紋は、GPU、ドライバー、グラフィックスが同一の入力に対してサブトリーに異なる出力を生成するという事実を悪用します。 彼らは、物理的なハードウェアを反映しているため、ソフトウェア構成ではありません。
Canvas 2D指紋
ページには、特定のテキストと図形を隠す <canvas> 要素は、ピクセルデータを読み込み、ピクセルデータを読み込みます。 toDataURL(). 正確なピクセル値は、オペレーティングシステム、ブラウザのバージョン、フォントレンダリングライブラリ、およびGPUに基づいて異なります。同じブラウザで同じキャンバステストが同じハッシュを生成します。スプーフィングは、キャンバステストだけでなく、すべてのバリエーションが検出スクリプトが実行される可能性があることに一致する必要があります。
WebGLの指紋
このページでは、GPUベンダーとレンダラー文字列(例:Apple Inc.)/「Apple M2 Pro」のWebGLを尋ね、テストジオメトリをレンダリングし、フレームバッファを読み込みます。 文字列とレンダリング結果の両方が指紋可能です。 WebGLは、サポートされている拡張機能、パラメータ制限、シェーダー精度を調べます。すべての指紋関連性。
クライアントのリベットとバウンディングボックス
レンダリングされた DOM 要素の寸法(getBoundingClientRect())は、サブピクセルレベルでフォントレンダリングとブラウザバージョンによって異なります。フォントが同一であっても、オペレーティングシステムとGPUドライバ間での反aliasingが異なります。
オーディオ表面
AudioContextの指紋
ページの先頭へ OscillatorNode, トーンを生成します。, アナライザを介してそれを処理, 結果の波形を読み取ります. 出力は、オーディオライブラリに基づいて変化します, サンプルレートの処理, プラットフォーム間でのフローティングポイントの実装. これは、一貫性を損なうために、より硬い面の1つです.
音声合成音声
speechSynthesis.getVoices() システムにインストールされているテキストツースピーチボイスのリストを返します。 リストはOSに依存しない(macOSには特定のセット、Windowsは異なるもの、Linuxは分布によって異なるものがあります)であり、OSだけではありません。
ナビゲーター表面
ザ・オブ・ザ・ navigator オブジェクトは、ブラウザのアイデンティティプロパティのスタックを公開します。 多くのステルスセットアップは、いくつかパッチを当てます。 一貫性のあるアイデンティティは、契約中のすべてのものをパッチする必要があります。
User-Agent(ユーザーエージェント)文字列
最も明らかなプロパティと最も一般的にパッチ適用されます。 2026年までに、洗練された検出は、ユーザーエージェントを多くの信号の1つとして扱います。クリーンなUAが、Linuxスタイルの navigator.platform フラグ自体です。
プラットフォーム
navigator.platform "MacIntel", "Win32", "Linux x86_64" などを返します。 ユーザエージェント、フォントリスト、オーディオ出力、および GPU 文字列と一致する必要があります。
言語とAccept-Language
navigator.languages ユーザーの優先言語を返します。 一致する必要があります Accept-Language HTTPヘッダとタイムゾーン×IP地理。 ユーザーレポート ["en-US", "en"] フランクフルトIPから Europe/Berlin 疑わしいです。
ハードウェアの通貨
navigator.hardwareConcurrency 論理CPUコア数を報告します。 要求されたデバイスに対しては、MacBook Airは64コアを持たないため、サーバー VMは4つを持っていません。
デバイスのメモリ
navigator.deviceMemory 数値の小数セットに丸めしたGBのRAMを推定します。 要求されたデバイスクラスのために盗用する必要があります。
プラグインとMIMEタイプ
現代のChromeは、デフォルトで空のプラグインリストを報告します。 古いブラウザは、PDFビューア、Flashなどを報告しました。 多くのステルスセットアップは、このことを取得します。 — 以前のブラウザーから現在のChromeであると主張するセッションでプラグインを報告します。
ディスプレイとロケール表面
スクリーンメトリック
screen.width, screen.height, screen.availWidth, screen.availHeight, window.devicePixelRatio. 実際のデバイスクラスと一致する必要があります。 1366×768 画面と devicePixelRatio = 3 は不可視です。組み合わせは実際のハードウェアに拘束されます。
タイムゾーン
Intl.DateTimeFormat().resolvedOptions().timeZone IANAタイムゾーンの識別子を返します。 IPの地理と言語の好みに一致する必要があります。
フォント
ブラウザで利用可能なフォントリストは、高エントロピーの指紋面です。異なるオペレーティングシステムは、異なるデフォルトフォントを出荷します。インストールされたソフトウェアは、より多くの追加します。検出システムは、キャンバス測定(多くのフォントの文字を描画し、異なる幅を生成する)を介してフォントを列挙します。フォントリストは、要求されたOSに一致する必要があります。
色の全域およびHDRサポート
現代のブラウザが露出 screen.colorGamut そしてHDR関連の媒体の問い合わせ。これらは主張された表示クラスに一致しなければなりません。
ネットワークおよびアイデンティティの漏出表面
WebRTC IPの漏出
WebRTCのSTUNプロトコルは、ブラウザがプロキシの背後にある場合でも、ローカルIPアドレスを明らかにすることができます。 明示的な処理がなければ、プロキシ・ルーティング・ブラウザは、WebRTC ICE候補を介して、実際の住宅IPを漏らすことができます。 これは、プロキシされた自動化のサイレント・キラーです。 標準の緩和は、リレー専用のモードを介してWebRTCを強制するものです。これにより、漏れを防ぎますが、プライバシー意識や自動設定として保護できます。
DNS漏洩
ブラウザがプロキシを使用する場合でも、DNS の解像度はローカルのリゾルバーを通過し、実際の ISP を公開します。DNS-over-HTTPS はこれを部分的に配置しますが、独自の指紋信号を紹介します。
Permissions APIの状態
ザ・オブ・ザ・ Permissions API は、通知、位置情報、カメラなどの権限の状態を報告します。すべての権限を介したデフォルト拒否状態は、ボット信号であり、実際のユーザーは様々な履歴を持っています。
なぜ指紋コヒーレンスが本当の問題なのか
指紋コヒーレンスは、すべての観察可能な表面が現実世界のハードウェアが生成する方法で、他のすべての表面と一貫している指紋ベクトルのプロパティです。 これは、ほとんどの「シテルス」アプローチを破る原則です。
ステルスプラグインはパッチできます navigator.webdriver false に、ユーザーエージェントをオーバーライドし、キャンバスの読み込みバックにノイズを追加します。 簡単にできないことは、次のことを確実にします。
- ユーザエージェントは、macOS で Chrome 131 と言います
- 「MacIntel」のプラットフォームレポート
- フォントリストは、実際の macOS インストールと一致します。
- GPU ベンダーの文字列は、Apple チップと一致します。
- AudioContext出力は、AppleのCoreAudioと一致します
- タイムゾーンは、太平洋または東部(ベルリンまたは東京ではありません)です。
- Accept-Languageはタイムゾーンにマッチします
- プロキシIPは、米国、タイムゾーンと一貫性のある地域で
- 画面の寸法は、Apple表示のために可塑性です
これらのいずれかがオフの場合、検出システムはセッションをフラグします。個々の表面が疑わしいためではなく、combinationが不可視であるためです。 そのため、ティア3ステルスプラグイン(ページレベルのパッチ)が天井を持っている:個々の特性を損なうことができますが、それらは簡単にすべての依存した表面に一貫性のあるプロファイルを生成することはできません。
エンジンレベルの指紋パッチ — クロミウムのバイナリ自体内の変更 — すべての表面が単一の一貫したアイデンティティモデルから派生しているプロファイルを生成することによってこれを解決します。 ツールのような Clawbrowser 埋め込まれた Rust ライブラリを使用して、一貫性のある指紋プロファイルを生成し、ブラウザの起動時に共有メモリにロードします。そのため、レンダラーと GPU コードは、ページレベルの接着剤なしで同じプロセスローカル値を読みます。
そのアイデンティティモデルは、プロファイルの永続性、ネットワークのルーティング、および閲覧データをどれだけ制御するかに影響します。 Clawbrowser対Browserbase比較 ローカル指紋管理とクラウドブラウザのインフラストラクチャ間のトレードオフについて説明します。
コヒーレンス障害の現実世界例
例1:ドイツ住宅プロキシパラドックス
オペレータはドイツで住宅のプロキシを買い、ドイツ人の仕事板を掻く。彼らのスクリプトは使用します playwright-stealth, 米国Chromeを主張するためにナビゲーターのプロパティをパッチ. セッションは、 en-US, America/New_York, ドイツの住宅IP. Cloudflareのボット管理は、すぐに不一致をフラグします. 修正は、より良いステルスパッチではありません — それは、すべてのドイツに一致するように、局所、タイムゾーン、IPを設定しています.
例2:ヘッドレスコンテナ指紋
開発ラップトップは、フルフォントのインストールとApple GPUでmacOSを実行します。 CI環境は、デフォルトのDebianフォントセットとllvmpipeソフトウェアレンダリングでDockerでLinuxを実行します。 同じPlaywrightスクリプト、同じステルスプラグイン、同じアカウント - 完全に異なる指紋ベクトル。 この制作をデバッグすると、「スクリプトが壊れている」というように見えますが、実際の問題は環境の漂流です。
例3:再使用キャンバス指紋
スクレイピング操作は、1,000セッションでユーザーエージェントを回転させます。1,000回のセッションでは、同じマシン、同じキャンバスの読み込み、同じWebGLのレンダラー文字列を共有します。検出システムは、ユーザーエージェントの回転に関係なく1つのアイデンティティとしてグループ化します。なぜなら、キャンバス/ WebGLのハッシュは、すべて同じです。
ブラウザの指紋対. クッキー
| アスペクト | クッキー | ブラウザの指紋 |
|---|---|---|
| 貯蔵の場所 | ブラウザディスク | どこにも - リクエスト時に派生 |
| ユーザー制御 | クリア、ブロック、または拒否することができます | オフにすることはできません |
| パージストエンス | 有効期限や削除まで | セッション全体で主張する、デバイス同一のアイデンティティ |
| スコープ | パードメイン | Per-browserインスタンス |
| 追跡のための使用 | 明示的な同意が必要(GDPR) | 追跡および保証/反ボットのために両方使用される |
| 返されたユーザーを識別できますか? | はい、クッキーが主張する場合 | 多くの場合、エントロピーに応じて |
重要な実践的な差別:クッキーは、ほとんどの管轄区域でユーザーの同意を得ることが必要です。セキュリティ目的のために指紋(不正検出、ボット緩和)は、一般的に正当な利益を除いて下がります。これは、指紋ベースの検出が見えないときにクッキーバナーが存在する理由です。
よくある質問
指紋信号は、実際に使用するアンチボットシステムは何種類ですか?
生産システムでは、数十万が一を使用しています。 正確なカウントはベンダーによって異なりますが、グループからのパブリックリサーチは、 FingerprintJSオープンソースプロジェクトのドキュメント 標準の指紋ベクトルで60以上の信号を記述し、企業アンチボットベンダーは、通常、もっと読む。
ブラウザで指紋を無効にできますか?
一部。 Tor Browser や Brave のようなブラウザーは、多くの表面を標準化することで指紋のエントロピーを削減しようとすると、FirefoxのResist Fingerprintingモードは同様の作業です。これらは、識別性を低下させるが、それを排除しない、そして、アンチ ボット システムが「指紋耐性 ブラウザ」として識別できる独自の指紋署名を作成します。
なぜVPNが指紋を防止しないのですか?
VPN は IP アドレスを隠します。1 本の指紋面が多々あります。それらはキャンバス、WebGL、オーディオ、ナビゲータープロパティ、画面、フォント、タイムゾーン、またはその他のブラウザ側の信号について何もしません。VPN は、IP が「Frankfurt」と言ったときに、他のすべての表面が「California」と述べているときに、実際にあなたの状況を悪化させることができます。
ブラウザの指紋は合法ですか?
はい、ほとんどの管轄区域では、特にセキュリティ目的のために使用した場合(不正検出、ボット緩和)。マーケティングまたは行動追跡のための指紋は、Cookieに類似したプライバシー規制(GDPR、CCPA)下がります。法的景観は進化しています。特定のコンプライアンスに関する質問については、適格な法的専門家に相談してください。
ブラウザの指紋とデバイス指紋の違いは何ですか?
ブラウザのフィンガープリントは、ブラウザのAPIやネットワークの動作により利用可能なシグナルを読みます。デバイスフィンガープリントには、ネイティブアプリ、モバイルSDK、およびブラウザがアクセスできないオペレーティングシステムレベルのデータからの追加の信号が含まれています。 2重なる重なり、「ブラウザフィンガープリント」は通常、Webアクセス可能なサブセットを参照してください。
結論:コヒーレンスはスプーフィングを打ち負かす
20 以上の信号からの流出は「すべての信号をパッチ」ではありません。それは、信号が相互作用し、他の人を揃えずに 1 をパッチを当てるだけで、より悪い指紋を生成します。指紋のコヒーレンス - すべての表面は、互いに整列し、ネットワークのエグレス - 唯一の耐久性のある回答です。
これは、指紋に対処するための最も高い残量の場所がブラウザのバイナリ自体内にある理由です, プロファイル・バウンドプロキシ・ルーティングで、IPの地理がタイムゾーンにマッチすることを確認します, ロケール, そして、言語の好み. ページのレベルのパッチは、地面を失うことになります; エンジン層で生成された一貫性のあるプロファイルは、構造的修正になります.
Clawbrowser この原則の周りに構築されます。 プロファイルは、プラットフォーム、フォント、タイムゾーン、プロキシの地理的なライニングなど、現実世界の組み合わせに合わせて生成され、回避可能なCAPTCHAとアンチボットチェックをトリガーする矛盾信号が単に現れません。 ランタイムアーキテクチャと表面による表面的なカバレッジの詳細については、を参照してください Clawbrowser ドキュメント.
続きを読む


