web-dev-qa-db-ja.com

CloudFlareのような会社はどのようにしてボットのクロールと電子メールのハーベスターをブロックしますか?

私はこれを CloudFlares ホームページで見ました:

CloudFlareは、クロスサイトスクリプティング、SQLインジェクション、コメントスパム、過度のボットクロール、メールハーベスターなど、さまざまな脅威から保護します。

CloudFlareのような企業は、クローラーボットとメールハーベスターをどのようにブロックできますか?私は彼らがUser-Agent: Evil-Email-Harvester。それでは、メールハーベスターのようなボットを通常のユーザーとどのように区別しますか?

同じIPから複数のサイトへのリクエストを受け取るため、ボットの一種であることがわかると思います。しかし、VPNのような多くの正当なIPについても同様です。どのようにして善悪を区別しますか?

22
Anders

CloudFlareは、ウェブサーバーとクライアント間のガードとして機能します。クライアントが受け取るすべてのコンテンツは、ウェブサーバーによって提供され、CloudFlareによってフィルタリングされます。このように、CloudFlareは、メールアドレスをクライアントに配信する前に正規表現を使用してフィルタリングすることにより、メールアドレスを難読化します。

ウェブサイトにメールが含まれている場合

<a href="mailto:[email protected]">[email protected]</a>

CloudFlareはそれを

<a href="/cdn-cgi/l/email-protection#fed8ddcfcfcbc5d8ddc8cac5d8ddcfcfcbc5d8ddc7c7c5d8ddcfcecac5d8ddc7c9c5d8ddcac8c5d8ddc7c6c5d8ddcfccccc5">&#115;&#64;&#115;&#99;&#104;&#97;&#46;&#98;&#122;</a>

/ cdn-cgi /-フォルダーは、まだWebサーバーをポイントしていますが、送信するすべてのものを自動的にフィルターし、解読して正しいメールアドレスを返すCloudFlare専用です。

もちろん、ボットがそのURLを続行したり、エンコードされた電子メール(パターン)を検索したりできるので、これは完全ではありません(これは単に不可能です)。これはまれなケースであり、今日のほとんどのシンプルなクローラーはあなたのメールを見つけることができません。

このアプローチに頼るべきではありません。CFはすでに非常に人気があり、それらの電子メールアドレスを検出して難読化を解除するのは簡単です。独自の独自の難読化手法を使用すると、クローラーをすべての難読化手法に適応させる作業が多すぎるため、インテリジェントハーベスタに対して安全である可能性が高くなります。

23
James Cameron

単純なボットの動作と「通常のユーザー」の動作には顕著な違いがあり、ほとんどのボットは大部分のサイトで機能するため、比較的単純な傾向があります。たとえば、Security.SEに到着することを検討してください。

  • 人間がページをロードし、最初のいくつかの質問を読んでいる間、数秒以上の遅延があり、次にページのリクエストを受け取り、続いてブラウザが開始したサポートファイル(画像、スクリプト、スタイル)のリクエストを受け取ります。次に、リファラーが別のページにアクセスするときに、そのページでのリクエストが完了するまでに少し時間がかかると予想します。より技術的なユーザーは、タブ付きブラウザーを使用している場合、いくつかの質問を開くかもしれませんが、これらの要求の間に短い一時停止があり(マウスまたはタブを次の質問に移動している間)、再び、前に一時停止を期待しますこれらのページからの手動リクエスト。
  • ボットはページをロードし、すぐにそれを解析して、リンク/メールアドレスを探します。ページが送信された直後に、多数のリクエストが表示されます。ボットによっては、サポートファイルが読み込まれていない場合があります(ボットはスタイルを気にしません)。ボットはそのときに受け取ったページからのリンクで同じことをする可能性が高く、リンクが見つからなくなるまでそれを続けます。

これらの方法は、ボットを人間のように見せるために少し努力してバイパスすることができますが、クロールプロセスの速度が大幅に低下するため、疑わしいボットの所有者はそれほど気にしないようです。

16
Matthew

ジェームズとマシューの回答に加えて(どちらも有効なポイントです):

CloudFlareのようなサービスには、クライアントがさまざまな保護層を通過することを許可するかどうかを決定する検出方法がたくさんあります。

これらの機能に関するWebサイトには多くの情報がありますが、特定のルールや実装の詳細が見つからないため、検出を回避しやすくなります。

同じIPから複数のサイトへのリクエストを受け取るため、ボットの一種であることがわかると思います。しかし、VPNのような多くの正当なIPについても同様です。どのようにして善悪を区別しますか?

事例:VPNに接続している間、私はCloudFlareによって「疑わしい」と見なされることがよくあります。

マシューが言及した多くの要因(読み込み時間、要求されたリソースのタイプ、次の要求の前の一時停止)がCloudFlareを即座にブロックしていないのではないかと思います。
代わりにサービスが提供されます GoogleのReCaptcha 私がボット/クローラーではないことを確認し、後で許可します。

より詳しい情報:
ジェームズの答え: E-mail obfuscation
マシューの答え: Web Application Firewall/WAF

12
Fluffy