ロボット検出コンポーネントを使用した訪問者の識別
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreロボット検出コンポーネントは、自動化されたブラウザーやロボットからのロボットと不要なインタラクションを検出します。このコンポーネントはデフォルトで有効になっており、パイプラインプロセッサ、イベントハンドラ、JavaScriptファイル(人間の動作を検出する)、およびいくつかのロボット検出クラスで構成されています。
Webサイトでページがリクエストされるたびに、次のパイプラインプロセッサがアクティブになります。
-
Sitecore.Analytics.RobotDetection.Pipeline.InitializeTracker.Robots
プロセッサは、まず、Sitecore.Analytics.Tracking.configファイルのAnalytics.AutoDetectBots設定の値を確認して、ロボット検出が有効になっていることを確認します。このコンポーネントを無効にするには、この設定をfalseに変更します。
連絡先の分類
連絡先の分類
Sitecore.Analytics.Pipelines.ClassificationStrategy.ContactClassificationクラスには、分類定数とヘルパー メソッドが含まれています。次のヘルパー メソッドは、連絡先の分類をパラメーターとして受け取り、連絡先が人間かロボットかを示すブール値を返します。
-
IsHuman
-
IsRobot
-
IsAutoDetectedRobot
最初の訪問者の分類
最初の訪問者の分類
SC_ANALYTICS_GLOBAL_COOKIE永続セッションCookieには、trueまたはfalseに設定されたIsClassificationGuessedフィールドが含まれています。
新しい訪問者がWebサイトにアクセスすると、訪問者の分類がまだ決定されていないため、IsClassificationGuessedフィールドはデフォルトでfalseに設定されます。この段階では、訪問者は人間またはロボットである可能性があります。訪問者の分類が決定されると、このフィールドはtrueに設定されます。
訪問者識別コントロール
訪問者識別コントロール
訪問者がWebサイトのページを表示すると、VisitorIdentificationコントロールがページに表示されます。まず、VisitorIdentification.ascxコントロールがlayouts/systemフォルダーに存在するかどうかを確認します。コントロールが存在する場合は、VisitorIdentification.ascxユーザー コントロールのコンテンツがページに表示され、次の処理が行われます。
-
現在のUTC時刻をVICurrentDateTimeメタタグに保存します。
-
訪問者識別JavaScriptファイルを読み込むための参照をlayouts\system\VisitorIdentification.jsに追加します。
JavaScriptによる人間の行動の検出
JavaScriptによる人間の行動の検出
訪問者がページを表示すると、ブラウザーはVisitorIdentification.js JavaScriptファイルを読み込みます。通常、ロボットはCSSファイルやJavaScriptファイルをロードしません。
スクリプトがサブスクライブするイベントは2つあります。
-
OnMouseMoveイベント – コンピューターのマウスが移動したときにトリガーされます。
-
OnTouchStartイベント – タブレットまたは携帯電話の画面がタッチされたときにトリガーされます。
訪問者がコンピューターのマウスを動かしたり、タブレットや携帯電話の画面に触れたりすると、VisitorIdentificationCSS.aspxページを要求するコードが実行されます。このページへのURLが作成されます (直接の要求ではありません)。ロボットとは異なり、人間の訪問者はこのCSSスタイルシートをブラウザに読み込もうとします。これが発生すると、VisitorIdentificationCSS.aspxページが要求され、空のスタイルシートが生成されます。このページには、ページに対する要求が行われるたびに実行されるコードも含まれています。
人間の訪問者がページの実行を引き起こした場合、このページのコードは次の変更を行います。
-
訪問者分類コードは0に設定されており、訪問者は人間として分類されます。
-
CookieのIsClassificationGuessedブール値をtrueに設定します。これは、訪問者が分類されたため、ロボット検出ロジックを実行する必要がなくなったことを意味します
-
ASP.NETセッションタイムアウトの設定は、人間の訪問者のデフォルト(20分)にリセットされます。
タイムアウト設定の比較
タイムアウト設定の比較
最終的なロボット検出手段は、タイムアウト設定の比較です。Sitecoreは、JavaScript関数の実行を30秒後 (デフォルト設定) にスケジュールします。
JavaScript関数は、VICurrentDateTimeメタタグからUTC時刻を読み取り、取得した時刻をtstampパラメータで送信するリクエストをVIChecker.aspxページに行います。
VIChecker.aspxページでは、現在のUTC時刻とtstampパラメータの時刻の差がチェックされます。訪問者が人間の訪問者の場合、このコードはページが読み込まれてから30秒後に実行されます。ロボットはJavaScriptを30秒より速く実行できるため、リクエストが30秒未満で実行されると、連絡先はロボットとして検出されます。その結果、訪問者の分類はロボットに戻されます。
メディア要求イベント ハンドラ
メディア要求イベント ハンドラ
以前のロボット検出ロジックでは、訪問者がメディア項目のダウンロードを要求した場合、訪問者は人間として識別されました。xDBロボット検出コンポーネントでは、このアプローチでは不十分です。
Sitecore.Analytics.Tracking.RobotDetection.configファイルでは、次のイベント ハンドラーによってこれが強制されます。
-
Sitecore.Analytics.RobotDetection.Media.MediaRequestEventHandler
このイベント ハンドラーが読み込まれると、メディア アイテムの追跡フィールドが処理されますが、訪問者がメディア アイテムをダウンロードしても、分類は人間に変更されません。
分類を変更するには、セッションにアクセスする必要があります。Sitecoreでは、カスタム メディア リクエスト セッション モジュール (C# クラス ファイル) は、トラッキング フィールドに何かを含むメディア アイテムへのリクエストのセッションを有効にします。トラッキングフィールドに何もない場合、セッションは不要になり、リクエストの処理時間が短縮されます。
セッション処理
Webサイトに新しいリクエストが行われるたびに、ASP.NETセッションCookieが存在するかどうかを確認します。ない場合は、アクセスしたページに関する情報を保持するための新しいプライベートセッションが作成されます。リクエストがロボットからのものか人間からのものかは事前に判断できないため、ASP.NETは常にセッションを作成する必要があります。
Sitecoreが訪問者をロボットと判断すると、セッション ステート プロバイダーに設定されたセッション タイムアウトではなく、セッション タイムアウトが自動的に1分に短縮されます。ロボット セッションのタイムアウト のデフォルトを変更できます 。
セッションの終了は、セッション終了イベントを引き起こします。これは、セッション状態プロバイダーがセッション終了イベントを発生させ、セッション状態プロバイダーが訪問者が人間かロボットかを判断できないためです。ただし、デフォルトでは、Sitecoreはロボット セッションのエクスペリエンス データを保持しません。