Web アプリケーションに対してクローラー対策ルールを設定する前に、Web アプリケーションに Anti-Bot SDK を統合する必要があります。このトピックでは、Web アプリケーションに Anti-Bot SDK を統合する方法について説明します。このトピックでは、Anti-Bot SDK を SDK と呼びます。
コンポーネント
SDK には、Web コレクターと非同期 API レスポンスコンポーネントが含まれています。
Web コレクター
Web コレクターは、クライアントブラウザの特性をボット攻撃対策および防御システム全体に統合し、ネットワーク特性を使用して識別できない攻撃を識別します。これにより、保護機能が向上します。
収集された特性を難読化および暗号化した後、Web コレクターは Cookie をルートドメイン名に統合し、リクエストと共に Cookie を送信します。これにより、ブラウザのパフォーマンスへの影響が軽減されます。
Web コレクターは、以下の情報を収集します。
ブラウザの種類とバージョン、画面の解像度、タイムゾーン、タイムスタンプなどのブラウザ情報
一般的なブラウザレベルのボットスクリプトとドライバーのプローブを含む、特定の攻撃と防御のプローブ
キーボード、マウス、タッチイベントなどのユーザー操作
説明キーボードイベントには、どのキーが押されたかではなく、キーが押された時点のみが含まれます。これは、プライバシーの保護に役立ちます。
非同期 API レスポンスコンポーネント
非同期 API レスポンスコンポーネントを使用すると、Web アプリケーションは、ボット攻撃対策および防御システムによって API に送信されるチャレンジレスポンスに応答できます。チャレンジには、JavaScript 検証と CAPTCHA 検証が含まれます。非同期 API レスポンスコンポーネントが使用されると、Web Application Firewall (WAF) がチャレンジレスポンスを API に送信したことを検出すると、コンポーネントが応答します。
非同期 API レスポンスコンポーネントは、セキュリティ機能を提供したり、データ収集やレポートを実行したりしません。
非同期 API レスポンスコンポーネントの動作については、以下をご覧ください。
コンポーネントは、リクエストされたページに含まれる一般的な API リクエストオブジェクト (xmlHttpRequest (XHR)、Fetch、Form など) をグローバルに書き換え、オブジェクトに追加のコード層をカプセル化します。これは、元のオブジェクトの機能には影響しません。
リクエストされたページの JavaScript コードの代わりに、コンポーネントは WAF によってレスポンスが返されるかどうかを確認します。WAF は、チャレンジレスポンスを送信して、クライアントに JavaScript 検証または CAPTCHA 検証を実行するように指示できます。
レスポンスがオリジンサーバーによって返された場合、コンポーネントはレスポンスに対して操作を実行せず、レスポンスをリクエストされたページの JavaScript コードに渡します。レスポンスが WAF によって返された場合、コンポーネントはレスポンスを解析し、JavaScript を使用して必要な計算を実行してから、JavaScript 検証署名を含むリクエストを WAF に送信します。WAF は JavaScript 検証署名を確認し、リクエストをオリジンサーバーに送信します。
互換性
環境の互換性: SDK は、Internet Explorer 8 以降のバージョンのレンダリングエンジンを使用するブラウザと互換性があります。
互換性の依存関係: クライアントブラウザは Cookie をサポートしている必要があります。クライアントブラウザが Cookie をサポートしていない場合、Web コレクターは期待どおりに動作しません。
フックの互換性: 特定のサービスの場合、XHR、Form、Fetch などの同期 API リクエストで使用されるフックネイティブオブジェクトは、非同期 API レスポンスコンポーネントと競合します。
デプロイ方法
自動統合
HTML ページに送信されたリクエストが WAF を通過する場合にのみ、自動統合を使用できます。自動統合により、HTML ページでコードを変更する必要がなくなります。HTML ページは、完全なリフレッシュなしで実行時に更新できます。
シナリオ固有の保護テンプレートを作成するときに、シナリオの設定ステップで自動統合を選択すると、ボット管理モジュールは HTML データを解析し、Web コレクターと非同期 API レスポンスコンポーネントをドキュメントオブジェクトモデル (DOM) に挿入してから、モジュールが HTML ページからのレスポンスを処理するときに、変更されたレスポンスをクライアントに返します。詳細については、「Web サイトのクローラー対策ルールを設定する」をご参照ください。
圧縮された HTML ページに SDK を統合する場合、自動統合は content-encoding:gzip 圧縮方式のみをサポートします。Brotli 圧縮と deflate 圧縮はサポートされていません。
手動統合
手動統合は、自動統合がサポートされていないシナリオに適しています。たとえば、HTML ページに送信されたリクエストが WAF を通過しない場合、または指定された圧縮方式がサポートされていない場合は、自動統合を使用できません。手動統合を実行するには、以下の条件が満たされていることを確認してください。
SDK は、非同期呼び出しが開始される HTML ページに統合されています。
SDK が取得されます。必要なスクリプトを取得するには、次の手順を実行します。Bot Management ページに移動します。[シナリオ固有の保護] タブで、[テンプレートの作成] をクリックします。[シナリオの設定] ステップで、[Web SDK 統合] パラメーターを [手動統合] に設定します。次に、[SDK の取得] をクリックします。
<script src="//o.alicdn.com/frontend-lib/common-lib/jquery.min.js"></script>
オンプレミスデプロイメント
このデプロイ方法は、コンテンツセキュリティポリシー (CSP) で alicdn からのリソースの読み込みが許可されていない場合や、すべてのコンポーネントをオンプレミス環境にデプロイする必要がある場合など、特定のケースにのみ適しています。この方法を使用しないことをお勧めします。
SDK をオンプレミス環境にデプロイするには、オンプレミス環境に JavaScript リソースの 2 つのコピーを作成し、Alibaba Cloud CDN のすべての JavaScript コードをオンプレミス環境にコピーしてから、上記の JavaScript リソースとコードのコピーを他のリソースの前に配置する必要があります。これにより、JavaScript リソースとコードが最初に読み込まれます。