ロボット検出コンポーネントを用いた訪問者識別
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreロボット検出コンポーネントは、自動化されたブラウザやロボットからのロボットや不要な相互作用を検出します。このコンポーネントはデフォルトで有効化されており、パイプラインプロセッサ、イベントハンドラ、人間の行動を検出するJavaScriptファイル、そして複数のロボット検出クラスで構成されています。
ウェブサイト上でページがリクエストされるたびに、以下のパイプラインプロセッサーが起動されます:
- Sitecore.Analytics.RobotDetection.Pipeline.InitializeTracker.Robots
プロセッサはまず、Sitecore.Analytics.Tracking.configファイルのAnalytics.AutoDetectBots設定の値を確認することでロボット検出が有効かどうかを確認します。この設定をfalseに変更することでコンポーネントを無効化できます。
接触分類
ContactClassificationクラスには分類定数とヘルパーメソッドが含まれています。以下のヘルパーメソッドは、接触分類をパラメータとして取り、接触が人間かロボットかを示すブール値を返します。
- IsHuman
- IsRobot
- IsAutoDetectedRobot
初期の訪問者分類
SC_ANALYTICS_GLOBAL_COOKIEにはIsClassificationGuessedフィールドが含まれており、真か偽に設定されています。
新しい訪問者がウェブサイトを訪れると、その訪問者の分類がまだ決定されていないため、デフォルトでfalseに設定されます。この段階では、訪問者は人間またはロボットである可能性があります。訪問者の分類が決定されると、このフィールドはtrueに設定されます。
来訪者識別制御
訪問者があなたのウェブサイトのページを閲覧すると、VisitorIdentificationコントロールがページ上に表示されます。まずVisitorIdentification.ascxコントロールがlayouts/systemフォルダに存在しているかどうかを確認します。コントロールが存在する場合、VisitorIdentification.ascxユーザーコントロールの内容がページ上にレンダリングされ、次のようになります。
- 現在のUTC時間を VICurrentDateTime メタタグに保存します。
- 訪問者識別ファイルJavaScriptロードするために layouts/system/VisitorIdentification.js ファイルへの参照を追加します。
JavaScriptによる人間の行動検出
訪問者がページを閲覧すると、VisitorIdentification.js JavaScriptファイルが読み込まれます。ロボットは通常、CSSやJavaScriptファイルを読み込みません。
スクリプトが従うイベントは2つあります:
- OnMouseMove イベント – コンピュータのマウスが動くとトリガーされます。
- OnTouchStart イベント – タブレットや携帯電話の画面に触れたときにトリガーされます。
コンピュータのマウスが動いたり、訪問者がタブレットや携帯電話の画面に触れたりすると、VisitorIdentificationCSS.aspxページを要求するコードが実行されます。このページのURLが作成されます(直接リクエストではありません)。訪問者がロボットの場合、このCSSスタイルシートを読み込む可能性は低いため、人間の訪問者がブラウザにスタイルシートを読み込もうとするため、人間の行動を示しています。この時、VisitorIdentificationCSS.aspxページがリクエストされ、空のスタイルシートが生成されます。このページには、ページへのリクエストが行われるたびに実行されるコードも含まれています。
もし人間の訪問者によってページが起動した場合、このページのコードは以下の変更を行います。
- ビジターの分類コードは0に設定されており、これはビジターが人間として分類されていることを意味します。
Tracker.Current.Session.SetClassification(0, 0, true);
- クッキーの IsClassificationGuessed ブール値はtrueに設定されています。これは訪問者が分類されたことを意味するので、ロボット検出ロジックの実行は不要です
cookie.IsClassificationGuessed = true;
- ASP.NETセッションのタイムアウト設定は、人間の訪問者向けにデフォルトの20分にリセットされます。
タイムアウト設定比較
タイムアウト設定比較は、他のロボット検出対策が完了した後に行われる最終チェックです。JavaScript関数の実行は30秒後に予定されています(デフォルト設定):
timeoutSleep (30000, placeCheckerRequest);
この関数は、VICurrentDateTimeメタタグからUTC時刻を読み取り、tstampパラメータで取得した時間を請求してVIChecker.aspxページに送信します。
VIChecker.aspxページは現在のUTC時刻とtstampパラメータの時刻の差をチェックします。訪問者が人間の訪問者の場合、このコードはページ読み込みから30秒後に実行されます。ロボットは30秒より速くJavaScript実行できるため、30秒以内にリクエストが実行されると、その接触はロボットとして検出されます。その結果、訪問者の分類はロボットに戻されます。
Tracker.Current.Session.SetClassification(925, 925, true);
メディアリクエストイベントハンドラ
以前のロボット検出ロジックでは、訪問者がメディアアイテムのダウンロードを要求すると、その訪問者は人間と特定されていました。しかしxDBのロボット検出コンポーネントでは、このアプローチでは不十分です。
Sitecore.Analytics.Tracking.RobotDetection.configファイルでは、以下のイベントハンドラがこれを強制します:
- Sitecore.Analytics.RobotDetection.Media.MediaRequestEventHandler
このイベントハンドラが読み込まれると、メディアアイテムのトラッキングフィールドを処理しますが、訪問者がメディアアイテムをダウンロードしても分類を人間に変えることはありません。
分類を変更するには、セッションへのアクセスが必要です。Sitecoreでは、カスタムメディアリクエストセッションモジュール(C#クラスファイル)が、トラッキングフィールドに何かを含むメディアアイテムへのリクエストをセッションできるようにします。トラッキングフィールドに何もなければセッションは不要で、これによりリクエストの処理時間が短縮されます。