---
title: "ロボット検出コンポーネントを用いた訪問者識別"
slug: "visitor-identification-using-the-robot-detection-component"
abstract: "自動ブラウザやロボットからのロボットや望ましくない相互作用を検出するSitecoreロボット検出コンポーネントの概要。"
---
# ロボット検出コンポーネントを用いた訪問者識別

Sitecoreロボット検出コンポーネントは、自動化されたブラウザやロボットからのロボットや不要な相互作用を検出します。このコンポーネントはデフォルトで有効化されており、パイプラインプロセッサ、イベントハンドラ、人間の行動を検出するJavaScriptファイル、そして複数のロボット検出クラスで構成されています。

ウェブサイト上でページがリクエストされるたびに、以下のパイプラインプロセッサーが起動されます:

-   Sitecore.Analytics.RobotDetection.Pipeline.InitializeTracker.Robots

プロセッサはまずコンテキストサイトでロボット検出が有効かどうかを確認します。必要に応じて [ロボット検出を無効](https://doc.sitecore.com/xp/ja/developers/105/sitecore-experience-platform/configure-robot-detection-functionality.html "Configure robot detection functionality")にすることも可能です。

## 接触分類

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#クラスファイル)が、トラッキングフィールドに何かを含むメディアアイテムへのリクエストをセッションできるようにします。トラッキングフィールドに何もなければセッションは不要で、これによりリクエストの処理時間が短縮されます。