9

これまでのところ、これらの文字列を既知のユーザー エージェントと照合することで、ユーザー エージェント文字列のリストからロボットを検出できますが、この方法を使用して予想よりも少ないボットを取得しているため、php を使用してこれを行うには他にどのような方法があるのか​​ 疑問に思っていました。

また、ブラウザまたはロボットがユーザー エージェント文字列を使用して別のブラウザを偽装しているかどうかを検出する方法も探しています。

アドバイスをいただければ幸いです。

編集: これは、次のような行を含むログ ファイルを使用して行う必要があります。

129.173.129.168 - - [11/Oct/2011:00:00:05 -0300] "GET /cams/uni_ave2.jpg?time=1318302291289 HTTP/1.1" 200 20240 "http://faculty.dentistry.dal.ca /loanertracker/webcam.html" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.2.23) Gecko/20110920 Firefox/3.6.23"

これは、アクセス時間以外のユーザーの行動を確認できないことを意味します。

4

5 に答える 5

13

ユーザーエージェント文字列のキーワードをフィルタリングすることに加えて、私はすべてのページに隠されたハニーポットリンクを置くことができました。

<a style="display:none" href="autocatch.php">A</a>

次に、「autocatch.php」にセッション(またはIPアドレス)をボットとして記録します。このリンクはユーザーには見えませんが、ボットによって実現されない可能性があります。style属性を取り出してCSSファイルに入れると、さらに役立つ場合があります。

于 2012-11-14T04:09:22.483 に答える
7

前述のように、ユーザー エージェントと IP を偽装できるため、これらを信頼性の高いボット検出に使用することはできません。

私はセキュリティ会社で働いており、ボット検出アルゴリズムは次のようになっています。

  1. ステップ 1 - データの収集:

    a. ユーザーエージェントと IP をクロスチェックします。(どちらも正しい必要があります)

    b. ヘッダーのパラメーターを確認します (不足しているもの、順序など)

    c. 動作の確認 (robots.txt への早期アクセスとコンプライアンス、一般的な動作、ア​​クセスしたページ数、アクセス率など)

  2. ステップ 2 - 分類:

    データの相互検証により、ボットは「良い」、「悪い」、または「疑わしい」に分類されます

  3. ステップ 3 - アクティブな課題:

    疑わしいボットは、次の課題を経験します。

    a. JSチャレンジ(JSを活性化できるか?)

    b. クッキーチャレンジ(クッキーを受け取れるか?)

    c. それでも決定的でない場合 -> CAPTCHA

このフィルタリング メカニズムは非常に効果的ですが、1 人の人物や専門外のプロバイダーでさえ複製できるとは思えません (1 つの理由として、課題とボット DB はセキュリティ チームによって常に更新される必要があります)。

IP/ユーザー名の相互検証に使用できるディレクトリであるBotopedia.orgの形式で、ある種の「自分で行う」ツールを提供していますが、本当に効率的なソリューションを得るには、専門のサービスに頼る必要があります。

いくつかの無料のボット監視ソリューションがあり、私たち自身のものを含めて、ほとんどが私が上で説明したのと同じ戦略 (または同様のもの) を使用します。

GL

于 2012-11-14T11:51:30.750 に答える
5

ユーザーエージェントを比較するだけでなく、アクティビティのログを保持し、ロボットの動作を探します。多くの場合、これには/robots.txtの確認と、画像の読み込みが含まれます。もう1つのトリックは、ほとんどのボットがJavaScriptを有効としてマークしないため、クライアントにJavaScriptがあるかどうかを尋ねることです。

ただし、実際に人である人を誤って取得する可能性があることに注意してください。

于 2012-11-14T04:03:32.430 に答える
2

いいえ、ユーザー エージェントはなりすましの可能性があるため、信頼できません。

ボットは通常、人間の訪問者が飛び回るよりもはるかに速くサイトをクロールするため、Javascript または画像/CSS の読み込みをチェックするだけでなく、ページの読み込み速度を測定することもできます。ただし、これは小規模なサイトでのみ機能します。共有外部 IP アドレスの背後に多くの訪問者がいる人気のあるサイト (大企業や大学のキャンパス) では、ボットのような速度でサイトにヒットする可能性があります。

人間のユーザーは通常そのパターンに適合しない先着順でボットがクロールするため、それらがロードされる順序を測定することもできると思いますが、追跡するのは少し複雑です

于 2012-11-14T04:14:12.197 に答える
1

あなたの質問は、特にユーザー エージェント文字列を使用した検出に関連しています。多くの人が言及しているように、これはなりすましの可能性があります。

スプーフィングの可能性を理解し、スプーフィングの検出がいかに難しいかを理解するには、cURL を使用して PHP の技術を学ぶことをお勧めします。

本質的に、cURL を使用すると、ブラウザ (クライアント) リクエストで送信できるほとんどすべてのものを、IP の顕著な例外を除いてスプーフィングできますが、ここでも、決定されたスプーファーはプロキシ サーバーの背後に隠れて、IP の検出を排除します。

リクエストが行われるたびに同じパラメーターを使用すると、スプーファーを検出できることは言うまでもありませんが、異なるパラメーターでローテーションすると、本物のトラフィック ログからスプーファーを検出することが不可能ではないにしても、非常に困難になります。

于 2013-03-18T15:39:26.310 に答える