web-dev-qa-db-ja.com

クローラー/スパイダー/スクレーパーからSHTMLページを保護する方法は?

クローラー、スパイダー、スクレーパーから保護したいA LOTのSHTMLページがあります。

SSIの制限を理解しています。以下の実装は、希望するテクノロジー/テクノロジーと組み合わせて提案できます。

あまりにも多くのページをリクエストしすぎると、24時間ブラックリストに追加され、リクエストするすべてのページでコンテンツの代わりにキャプチャが表示されるという考え方です。キャプチャを正しく入力すると、ブラックリストから削除されます。
ホワイトリストがあるため、GoogleBotなどはブロックされません。

これを実装する最良/最も簡単な方法アイデアはどれですか?

サーバー= IIS

24時間ごとに古いタプルをDBから削除するのは簡単なので、それを説明する必要はありません。

6
Adam Lynch

スパイダートラップを作成します。

  1. /spider-trap/somepage.htmlのようなページを作成します
  2. robots.txtのページをブロック:許可しない:/ spider-trap /
  3. このページへのリンクを配置しますが、人間の目には隠します
  4. 何でもIPをブロックするこのページにアクセス
  5. このページには、人間が読み取れるヒントとIPキャプチャのロック解除が表示されます。
1
Eric Yin

サーバーテクノロジを指定しなかったため、この回答は適用されない可能性がありますが、SSIページを、Webサーバーが実行しているIDのみがアクセスできるディレクトリに移動することはできますが、匿名IDはアクセスできませんか?

0
Dave Wise

まあ、あなたはすべてを画像形式にレンダリングすることができます...そのようなことはme問題を引き起こす傾向があり、たとえばImageMagickを使用して確実に行うことができます。私は多くの政府のサイトをスクレイプする傾向があり、スキャンされた文書に膨大な量の情報を保存します。 Blech。なんて痛い。しかし、OCRを賢明に使用すると、この種のセキュリティが損なわれます。

表示できる場合は、スクレイピングできます。唯一の手段は、着信リクエストを監視し、ページリクエスト間の間隔をチェックすることにより、「機械的な」トラフィックを特定することです。 IPが1秒間に複数のページを要求している場合、ほぼ確実にスクレーパーまたはスパイダーです。または、10秒ごとに1ページを要求する場合、または他の信じられないほど正確な間隔を要求する場合。 Googleは学習アルゴリズムを使用して、スクレーパーのようなトラフィックを見つけますが、つまずいた回数を数えることができます(ただし、Googleコンテンツに遭遇することはめったにありません)。

ただし、賢いスクリプターには、ランダムな量の遅延が組み込まれています。彼らが忍耐強いなら、それらを止めるためにあなたができることは事実上何もありません。おそらくIPごとに上限を設定しますか?最大のユーザーを疎外する危険があります。

不明なHTTP_USER_AGENTをブロックしようとする人もいますが、それは時間の無駄です。robots.txtファイルを尊重するのと同じ人を止めるだけです。

0
Satanicpuppy

Robots.txtファイルでボットに指示を提供していますか?

Content属性に「noindex」値を持つメタ要素を使用していますか?

Googleウェブマスター(または問題が発生しているクローラー)のインターフェースで遅いクロールレートを指定しましたか?

0
Will Peavy