16

サイト上の特定のユーザーがボットであるかどうかを分析するコードを作成する必要があります。ボットの場合は、特定のアクションを実行します。ボットで必要なユーザー エージェントを指定できるため、ユーザー エージェントを確認することは、フレンドリーなボット以外では成功しません。私は無愛想なボットの行動を追っています。私がこれまでに持っていたさまざまなアイデアは次のとおりです。

  • ブラウザIDをお持ちでない場合
  • セッション ID をお持ちでない場合
  • クッキーを書き込めません

もちろん、正当なユーザーがボットのように見える場合もありますが、それは問題ありません。ボットを検出する、またはボットのように見えるものを検出するプログラムによる他の方法はありますか?

4

9 に答える 9

9

ユーザー エージェントは偽装できます。キャプチャがクラックされました。有効な Cookie は、ページ リクエストと共にサーバーに送り返すことができます。Adobe Acrobat Pro などの正当なプログラムは、1 回のセッションで Web サイトにアクセスしてダウンロードできます。ユーザーは JavaScript を無効にすることができます。「通常の」ユーザー行動の標準的な尺度がないため、ボットと区別することはできません。

言い換えれば、ユーザーを何らかの形の対話型チャットに引き込み、チューリング テストに合格することを期待する以外に、ユーザーは本当に優れたボットになる可能性があります。

于 2008-12-04T19:13:53.747 に答える
8

ボットを除外する理由と、誤分類に対する許容度を明確にします。

つまり、実際のユーザーをボットのように扱うことを犠牲にして、すべてのボットを除外する必要がありますか? それとも、パフォーマンスに影響がない限り、ボットがサイトをクロールしても大丈夫ですか?

すべてのボットを除外する唯一の方法は、Web サイトをシャットダウンすることです。悪意のあるユーザーは、トラフィックを実際のユーザーと区別できないほどの数のマシンにボットを配布できます。JavaScript や CSS のようなトリックでは、断固たる攻撃者を止めることはできません。

「幸せな媒体」で十分な場合、役立つかもしれないトリックの 1 つは、CSS を使用してリンクを非表示にし、ブラウザーでユーザーに表示されないようにすることですが、それでも HTML には表示されます。これらの「毒」リンクのいずれかをたどるエージェントはすべてボットです。

于 2008-12-04T19:10:08.653 に答える
3

ここにアイデアがあります:

ほとんどのボットは、CSS、JavaScript、画像をダウンロードしません。彼らはただhtmlを解析します。

ユーザーが上記のすべてをダウンロードするかどうかにかかわらず、ユーザーのセッションを追跡できれば (たとえば、試行をログに記録するスクリプトを介してすべてのダウンロード要求をルーティングすることにより)、生の html のみをダウンロードするユーザーをすばやく識別することができます (非常に少数)。通常のユーザーはこれを行います)。

于 2010-05-25T08:51:08.087 に答える
3

簡単なテストは JavaScript です。

<script type="text/javascript">
document.write('<img src="/not-a-bot.' + 'php" style="display: none;">');
</script>

not-a-bot.php はセッションに何かを追加して、ユーザーがボットではないことを示し、単一のピクセル gif を返すことができます。

URL は、ボットから偽装するために分割されています。

于 2008-12-04T19:09:08.423 に答える
2

一部のユーザーがボットとして表示されても問題ないとおっしゃっていたので、

ほとんどのボットは JavaScript を実行しません。JavaScript を使用して、この IP アドレスを NonBot として識別するサーバーに対して Ajax のような呼び出しを行います。この IP からの将来の接続を良好なクライアントとして識別し、さらなる無駄な JavaScript 呼び出しを防ぐために、それを一定期間保存します。

于 2008-12-04T19:08:18.597 に答える
1

サーバー上のセッションごとに、ユーザーがクリックまたは入力するのが速すぎたかどうかを判断できます。一定回数繰り返した後、「isRobot」フラグを true に設定し、そのセッション内のリソースを節約します。通常、ロボットに検出されたことをユーザーに伝えることはありません。その場合、ユーザーは新しいセッションを開始するだけだからです。

于 2008-12-04T20:34:16.800 に答える
0

ねえ、すべての応答に感謝します。いくつかの提案の組み合わせがうまくいくと思います。主に、フォームへの入力速度を計測する非表示のフォーム要素と、場合によっては「ポイズンリンク」のアイデア。私はそれがほとんどの基礎をカバーすると思います。ボットについて話しているとき、それらすべてを見つけることはできないので、あなたがそうするだろうと考える意味はありません...愚かなボット。

于 2008-12-05T18:02:31.533 に答える
0

まあ、これは本当にサイトの特定のページのためのものです。ボットが追跡を台無しにするためにフォームを送信することは望ましくありません。正直なところ、友好的なボット、Google、Yahoo などは、通常、最初からフォームに入力しないため、問題ありません。誰かがボットである疑いがある場合は、キャプチャ画像などを表示することがあります...合格した場合、ボットではなく、フォームが送信されます...

フォームをフラッシュに入れたり、送信を JavaScript にしたりするような話を聞いたことがありますが、ボットであると疑うまで、実際のユーザーがサイトを使用するのを妨げたくありません...

于 2008-12-04T19:14:01.017 に答える
0

セッションIDをチェックするというあなたのアイデアは、すでに非常に役立つと思います。

別のアイデア: 埋め込みリソースもダウンロードされているかどうかを確認できます。

画像を読み込まないボット (たとえば、時間と帯域幅を節約するため) は、通常、ページに埋め込まれた画像を読み込むブラウザと区別できる必要があります。

ただし、このようなチェックは、時間がかかる可能性のあるある種のサーバー ログを分析する必要があるため、リアルタイム チェックには適していない可能性があります。

于 2008-12-04T19:15:06.147 に答える