>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
JavaScript

サイトの保護技術と収集されている情報を確認する方法

Scrapfly Anti-bot Detector banner

パーサー書いたことや実際のウェブサイトでE2Eテストを構築したことのある人なら 누구나、スクリプトが突然403ステータスを返したり、空白ページへの無限リダイレクトに遭遇した経験があるでしょう。DevToolsでNetworkタブとApplicationタブを行き来しながら推測に費やす:Cloudflareがリクエストをブロックしたのか、DataDomeが不可視のチェックリストを忍び込ませたのか、それともページスクリプトがCanvasやWebGLのフィンガープリントを密かに取得しているのか。

ScrapflyチームはScrapfly Anti-bot DetectorというオープンソースのChrome拡張機能をリリースしました。セキュリティ研究者、ペネトレーションテスター、パーサー開発者向けのツールで、ページをリアルタイムで分析し、どの保護システムが有効か、どのフィンガープリント技術が今すぐトリガーされているかを表示します。

Detection overview

この拡張機能で検出できること

この拡張機能はManifest V3で動作し、外部サーバーにデータを送信しません。すべての分析はブラウザ内でローカルに実行されます。

検出した保護メカニズムを3つのカテゴリに分類します:

  • Bot対策システム。Cloudflare、Akamai、DataDome、PerimeterX、Imperva、Kasada、Shape Security、AWS WAFを検出します。
  • CAPTCHA。reCAPTCHA、hCaptcha、FunCaptcha、GeeTest、Cloudflare Turnstileを見つけます。
  • デジタルフィンガープリント技術。Canvas、WebGL、AudioContext、フォント、WebRTC、Performance API、Navigatorプロパティ、Storageなど、21種類のフィンガープリント手法を追跡します。

| 検出 | 履歴 | ルールエディタ | |---|---|---| | Detection | History | Rules |

マルチレイヤー検出の仕組み

Bot対策システムはめったに明示的なレスポンスヘッダーで自身を明かしません。通常、ロジックをスクリプト、Cookie、グローバルオブジェクトに分散させます。この拡張機能は5つの分析レイヤーを同時に使用します。

まず、DOMを検査します。拡張機能は特徴的なマークアップ要素、クラス名、接続された外部スクリプトを探します。

並行して、Service Workerがネットワークリクエストを監視し、ヘッダー、Cookie、リクエストURL、送信ペイロードのボディをフィルタリングします。

最も興味深い部分は、ブラウザAPI呼び出しの傍受です。ページスクリプトの実行開始前(document_startステージ)に、拡張機能がページのメインコンテキスト(MAIN world)にフックを挿入します。保護スクリプトがキャンバスに非表示要素を描画したり、オーディオコンテキストパラメータをリクエストしようとすると、フックが呼び出しを記録し、パラメータを収集し、分離されたブリッジを通じて検出モジュールに渡します。

フックは永久にアクティブなままではありません:非活動状態が2秒間続いた後、またはページ開始から8秒後に自動的にアンロードされます。

| データ抽出ツール | 設定 | |---|---|---| | Advanced Tools | Settings |

詳細分析のための組み込みツール

検出されたベンダーの単純なリストだけでなく、拡張機能にはAdvanced Toolsセクションが含まれています。これは自動化デバッグに必要なパラメータを抽出するという実用的な問題を解決します。

  • reCAPTCHA、hCaptcha、Turnstileについては、SiteKey、コンテナセレクター、登録済みJSコールバックを見つけます。
  • AkamaiとDataDomeについては、生成されたセンサーデータを傍受し、保護Cookieの有効性を分析します。
  • FunCaptchaとGeeTestについては、公開鍵とチャレンジパラメータを解析します。
  • ImpervaとShape Securityについては、特定のヘッダーと関連するバリデーションスクリプトをスキャンします。

このツールは、ブラウザがターゲットページに最終リダイレクトを行う前に、中間チャレンジページからデータをキャプチャできます。

プロジェクトアーキテクチャとビルド不要

ソースコードはバンドラー、Webpack、TypeScriptなしで純粋な最新のJavaScriptで書かれています。プロジェクトをローカルで実行するには、リポジトリをクローンし、開発者モードでChromeにフォルダを読み込むだけです。

リポジトリ構造は明確なレイヤーに分かれています:

core/
├── manifest.json              # Конфигурация Manifest V3
├── background.js              # Service Worker, сетевой анализ
├── content.js                 # Content script в ISOLATED world
├── content-main-world.js      # JS-хуки в MAIN world
├── detectors/                 # Правила детекции в формате JSON
   ├── antibot/              # Cloudflare, Akamai, DataDome, Imperva
   ├── captcha/              # reCAPTCHA, Turnstile, hCaptcha
   └── fingerprint/          # Canvas, WebGL, Audio, Storage
└── modules/                   # Менеджеры состояния и обработчики

すべての検出シグネチャとルールはdetectors/ディレクトリのJSONファイルに抽出されています。組み込みのルールエディタを通じて拡張機能インターフェースで直接編集でき、カスタム正規表現、グローバルなwindowオブジェクト変数のチェック、カスタムCookieシグネチャを追加できます。

パフォーマンス最適化のため、著者はコンパイル済み正規表現にLRUキャッシュを使用し、ReDoSによるハングアップのリスクを排除し、高信頼度マッチでのアーリーリターンを持つ12時間 результатキャッシュを使用しています。

テストは組み込みのnode:testランナーで書かれており、外部依存関係は不要です。1つのコマンドで構文チェックとテストを実行できます:

npm run verify

どんなタスクに役立つか

まず第一に、この拡張機能はクローラー開発者とデータアナリストの時間節約になります。難読化されたコードとネットワークログを手動で掘り下げる代わりに、数秒で正確にどの保護技術と格闘しているのか、ページがどの環境シグネチャをチェックしているかを理解できます。

2番目のシナリオは、独自の保護の監査です。本番環境でWAFやBot対策モジュールを設定している場合、拡張機能は外部の観測者があなたのルールを見ることができるか、チャレンジが正しく動作しているかを明確に示します。

最後に、Manifest V3の動作方法、MAINとISOLATEDコンテキスト間の安全なデータ転送、パッシブフィンガープリント手法について学びたい人にとって、これは優れた学習材料です。このプロジェクトはNPOSL-3.0でライセンス供与されており、Chrome Web Storeで入手可能です。

関連プロジェクト