2010-12-14 8 views
2

googlebotなどのトップ検索エンジンのスパイダーだけを検出し、自分のサイトのコンテンツにアクセスさせる非常に堅牢な方法を開発したいと思っています。そうでなければ通常のユーザー登録/ログインが必要です。トップレット検索エンジンのボットを検出するにはどうすればよいですか?

私は、ユーザーが登録せずに一部のコンテンツにアクセスできるようにするために、Cookieも使用しています。クライアントブラウザでクッキーが無効になっている場合、フロントページ以外のコンテンツは提供されません。しかし、私は検索エンジンのスパイダーがクッキーを受け入れることはないと聞いたので、これも正当な検索エンジンのボットを止めるだろう。これは正しいです?

私が聞いた1つの提案は、IPアドレスから逆引きを行い、例えばgooglebot.comに解決した場合、前方DNS検索を行い、元のIPを元に戻すと正当であり、 googlebot。私はLinuxのサーバー上でJavaを使用しているので、私は探しているJavaベースのソリューションです。

私は、このようなグーグルヤフービングアレクサなどとしてトップの良い検索エンジンのスパイダーを入れると、サーバーの負荷を軽減するために他人を締め出すています。しかし、その非常に重要なトップスパイダーは私のサイトのインデックスを作成します。

答えて

3

あなたの質問へのより完全な答えを得るには、1つのアプローチだけに頼ることはできません。問題は、あなたがしたいことの相反する性質です。基本的には、良いボットがあなたのサイトにアクセスしてインデックスを作成して検索エンジンに表示できるようにする必要があります。悪いボットがあなたのすべての帯域幅を吸い取ったり、あなたの情報を盗んだりするのを阻止したいのです。防衛の

最初の行:

あなたのサイトのルートにrobots.txtファイルを作成します。詳細については、http://www.robotstxt.org/を参照してください。これは、最も理にかなっているサイトの領域で良好で、よく行動するボットを維持します。 robots.txtは、あるボットと別のボットに対して異なる動作を提供する場合、User-Agent文字列に依存していることに注意してください。ユーザエージェントおよび/またはIPアドレスに

フィルタ:防衛のhttp://www.robotstxt.org/db.html

セカンドラインを参照してください。私はすでにそのことを示唆して批判されていますが、誰が何を変装しているのか、それとも悪いのかを驚かすことはありません。再び、それはすべての悪い行為を止めるつもりはありませんが、それはデュー・デリジェンスのレベルを提供します。後でUser-Agentを活用する方法について詳しく説明します。防衛の

3行目:

は、Webサーバーのアクセスログを監視します。ログアナライザを使用して、トラフィックの大部分がどこから来ているかを把握します。これらのログには、IPアドレスとユーザーエージェント文字列の両方が含まれているため、実際にその人物が誰であるか、そして本当にその人物が誰であるかを検出できます。http://www.robotstxt.org/iplookup.html

あなた自身がログアナライザを使用して、異なるクライアントからの要求レートを調べます。特定のしきい値(おそらく10 /秒など)を超えるものは、後でレート制限の候補になります。代替サイトコンテンツのためのユーザーエージェント活用

:私たちは私たちのサイトを打っても、正当なボットからユーザーを保護するために取らなければならなかった

をアプローチは、ユーザエージェントに基づいてトラフィックを分割することです。基本的には、User-Agentが既知のブラウザであれば、フル機能のサイトを持っています。既知のブラウザではない場合は、ボットとして扱われ、単純なHTMLファイルがメタ情報だけで与えられ、彼らが仕事をするために必要なリンクが用意されていました。ボットのHTMLファイルは1日4回静的に生成されていたため、処理のオーバーヘッドはありませんでした。同じ機能を提供するHTMLを取り除かずに、RSSフィードをレンダリングすることもできます。

最後の注意:

(すなわちrobots.txtを無視して、サーバー上にたくさんのストレスを置く)あなただけの非常に多くのリソースを持って、そしてすべての合法的なボットは行儀ではありません。時間の経過とともにアプローチを更新する必要があります。たとえば、あるIPアドレスがクライアント(またはクライアント)が作成したカスタム検索ボットであると判明した場合、完全にブロックするのではなく、そのIPアドレスをレート制限する必要があるかもしれません。

本質的には、ユーザーにサービスを提供することと、検索エンジンでサイトを利用できるようにすることとのバランスを取っています。サイトをユーザーに対応させておくだけで十分です。必要に応じてより先進的な戦術に頼るようにしてください。

0

は、このサイトをチェックアウト:

http://www.user-agents.org/

彼らはまた、あなたがダウンロードして組み込むことができ、データベースのXMLバージョンを持っています。ブラウザ、リンク/サーバーチェッカー、ダウンロードツール、プロキシサーバー、ロボット/スパイダー/検索エンジン、またはスパム/不良ボットのいずれかで、既知の「ユーザーエージェント」ヘッダーIDを分類します。

注: サイトをスクラップするために一緒にハッキングしたJavaランタイムを表すユーザーエージェント文字列がいくつかあります。その場合、誰かが独自の検索エンジンスクレーパーを行っていたことが判明しましたが、オフサイト/切断された使用のためにすべてのコンテンツをダウンロードするスパイダーかもしれません。

+0

誰でも任意のユーザーエージェントをリクエストに入れることができます。したがって、UAによるフィルタリングは役に立ちません。 –

+0

彼は検出するために何ができるのか尋ねました。これはあなたができることの一つです。そしてあなたができることに関係なく、悪いスパムボットでさえ自分自身を識別します。卑劣になっているほとんどの人は、単に自分のユーザーエージェントを変更するよりも少し良いです。 –

2

googlebotなどのトップ検索エンジンのスパイダーだけを検出し、自分のサイトのコンテンツにアクセスできるように、非常に堅牢な方法を開発したいと思います。そうでなければ通常のユーザー登録/ログインが必要です。

普通の方法は、robots.txtファイルを構成して、必要なクローラを許可し、残りのファイルを許可しないことです。もちろん、これはルールに従ったクローラに依存しますが、ユーザエージェント文字列やIPアドレスチェックなどのようなものには戻らないものについては

"robots.txt"ある:設定が簡単である

  • サイトへの影響は最小限です。適切に動作しているクローラがファイルを取得し、(クローラを許可しなかったと仮定した場合)ただ消えます。
  • サイトのどの部分をクロールできるかを指定できます。

また、ユーザーが登録せずに一部のコンテンツにアクセスできるようにするため、Cookieも使用しています。クライアントブラウザでクッキーが無効になっている場合、フロントページ以外のコンテンツは提供されません。しかし、私は検索エンジンのスパイダーがクッキーを受け入れることはないと聞いたので、これも正当な検索エンジンのボットを止めるだろう。これは正しいです?

私はそう信じています。あなたがやっていることについてGoogle's viewを参照してください。

私が聞いた1つの提案はいくつかのいずれかの合法的ではなく、その後、IPアドレスから逆引き参照を行うことであり、それはたとえば、googlebot.comのために解決される場合は、順方向DNSルックアップを行うと、元のIPを取り戻す場合googlebotとして偽装する

これはおそらく高価です。 Robots.txtは簡単なアプローチで、最初のインスタンスで実装するのが簡単です。

+0

'robots.txt'ファイルは正規のクローラでのみ動作します。それはまたエージェントを禁止するだけです。 (多くのスパムボットやダウンロードクローラのような)ボットを誤ってしまうと、 'robots.txt'ファイルを完全に無視して、何とかしたいことをするでしょう。 –

+0

@Berin - 私は知っています。第2段落の最後の文を見てください。 –

2

のGooglebotを識別するための正しいかつ迅速な方法は次のとおりです。

  1. チェックユーザーエージェント文字列
  2. Googlebotは、Googlebotの賃金として特定クライアントのみ

DNSでIPを確認した場合IP/DNS検証のための1回限りの価格。もちろん、IPごとに結果をローカルキャッシュすることを当然想定しています。

ユーザーエージェントのチェックでは、単純なJava文字列機能を使用できます。 userAgent.contains("Googlebot")ような何かhttps://support.google.com/webmasters/answer/1061943か、他に応じて、あなたがこのライブラリを使用することができます:DNSについてhttps://github.com/before/uadetector

、それはGoogleがhttps://support.google.com/webmasters/answer/80553

を推奨しています何あなたのサーバーにアクセスして、ボットが本当にGooglebotが (または別のGoogleであることを確認することができますユーザーエージェント)に、その名前がgooglebot.comドメインにあることを確認してから そのgooglebot名を使用してフォワードDNSルックアップを実行することにより、逆DNSルックアップを使用します。これは、 スパマーや他の厄介者があなたのサイト にアクセスしてGooglebotであると主張している場合に便利です。例えば

ホスト66.249.66.1 1.66.249.66.in-addr.arpaドメイン名ポインタcrawl-66-249-66-1.googlebot.com。

ホストcrawl-66-249-66-1.googlebot.com crawl-66-249-66-1.googlebot.comは66.249.66.1

ビンビンと同じように動作に対応していますbingbotを参照してください。http://www.bing.com/webmaster/help/how-to-verify-bingbot-3905dc26

私は同じことが必要なので、ライブラリにJavaコードを入れて、GitHubに公開しました。https://github.com/optimaize/webcrawler-verifier Maven Centralから入手できます。 http://www.flowstopper.org/2015/04/is-that-googlebot-user-agent-really-from-google.html