web-dev-qa-db-ja.com

IPからのヒット数をカウントして、コンテンツスクレイパーを制限できますか?

1時間でxページにアクセスする攻撃的なスクレーパー、たとえば1000を禁止します。fail2banを介してこのようなチェックを実装し、アクセスログを介して同じIPからのヒットをカウントする予定です。他の手がかりも探すべきですか? Google、Bingなどの最大のスクレイパーをホワイトリストに登録し、残りを禁止します。数百人のユーザーがIPの背後にいる場合、犠牲者が出る可能性があることを理解していますが、禁止は一時的なものです。

1
giorgio79

はい。あなたはできる。使用しているツールはわかりませんが、ここにいくつかの手がかりがあります。

  • 検索エンジンではありません(だよ!)。
  • 長時間にわたる多数のリクエスト-ユーザーよりも多い。
  • 画像、CSS、またはJSを要求しません(一部は要求しますが、ほとんどは要求しません)。
  • 長期間にわたってエージェント名とOSを変更します。
  • WebホスティングIPアドレスブロック/範囲から来ます。

さまざまな期間のアクセスを確認してください。 1時間、1日、1週間、1か月。これは、ステルスボットが長期間にわたって多数のリクエストを行うためです。リクエストの数がユーザーの数よりも多い場合は、それらをブロックします。ボットは大いに突出します。これに関して混乱はありません。

一部のボットは、自動ブロックを回避するために画像を要求しますが、CSSおよびJS(javascript)を要求する場合としない場合があります。いくつかの意志。上記のいずれにも該当しないページのリクエストがある場合、それはボットです。ページのリクエストがあり、3つのうち1つまたは2つだけの場合、それはボットです。偽のJS(事実上コードは何もしない)ファイルを作成し、ページでリクエストします。ダウンロード速度に影響を与えないように、非常に小さくしてください。あなたはそれが要求されているかどうかを見たいだけです。

一部のボットはユーザーエージェント(ブラウザー)とOSを変更しますが、一部のボットは変更しません。長期間にわたってこれらの要素が変化する場合、それはボットです。

ボットは加入者回線(電話会社)から来る場合がありますが、ほとんどはできません。 IPアドレスを確認し、それがWebホスティング会社に属している場合、それはボットです。加入者回線も使用されます。一定期間にわたって、ボットがどこから来たのかを学習します。ほとんどの場合、簡単になります。

IPアドレスまたはアクセスがボットかどうかわからない場合は、ここに戻って元のリクエストを投稿してください。私は助けることができるはずです。私はこれを毎日終日行います。

私ははるかに長い基準のリストを持っていますが、それらの決定は複雑になり、保護されたプロセスです。ごめんなさい。しかし、上記のリストは、誰でもボット%99を特定するには十分すぎるはずです。

1
closetnoc

残念ながら、データを取得する価値がある場合は取得されます。 IPアドレスを処理することにしたとき、スクレイパーは水平に進み、数千のIPアドレスを持って戻ってきました。私は、保護を尊重しないロボットを停止する方法に関する最新のヒントを探しています。

1
mplungjan