私の知る限り、
$_SERVER['REMOTE_HOST'] は「google.com」または「yahoo.com」で終了する必要があります。
しかし、それは最も確実な方法ですか?
他の方法はありますか?
私の知る限り、
$_SERVER['REMOTE_HOST'] は「google.com」または「yahoo.com」で終了する必要があります。
しかし、それは最も確実な方法ですか?
他の方法はありますか?
ユーザー エージェントと IP アドレスで検索エンジンを識別します。詳細については、検索エンジンのスパイダーとウェブボットを識別する方法 を参照してください。このリストも注目に値します。ただし、ユーザー エージェント (またはリモート ホストでさえも) を必ずしも決定的なものとして扱うべきではありません。ユーザーエージェントは、実際には、相手側があなたに伝えていること以上のものではなく、もちろん自由にあなたに何かを伝えることができます。Googlebot になりすますコードを書くのは簡単です。
PHP では、これは と を見ることを意味し$_SERVER['HTTP_USER_AGENT']
ます$_SERVER['REMOTE_HOST']
。
多くの検索エンジンがありますが、正直なところ、一般的に言えば、あなたが本当に気にかけているのはごくわずかです。Google と Yahoo を合わせると、ほぼすべての市場を占めています。しかしもちろん、それはあなたが何を達成しようとしているかによって異なります。
注:コンテンツに関しては、検索エンジンを通常のユーザーとは異なる方法で扱うように十分注意してください (Joel が言うところの「邪悪なハイフン サイト」のように) 。特に悪質なケースでは、これによりサイトがその検索エンジンから削除される可能性があります。それが起こらなくても、何かを期待してサイトにアクセスする一部のユーザーを遠ざける可能性があります。その後、代わりに「この記事を表示するには登録してください」というボックスが表示された場合は、直帰率が高いことに感謝します。
まず第一に、通常のユーザー向けにサイトに含まれるコンテンツとは異なるコンテンツを検索エンジン ボットに提供するために、これを実行しようとしていないことを願っています。あなたがこれを行っていることを彼らが発見した場合、あなたのサイトはリストから完全に削除されます. そのリスクを理解している限り、通常、彼らが使用する固有のユーザー エージェントに関する情報を見つけることができます。
ただし、Web スクレイパー (通常は動作が悪い) を作成する一部の人々は、ユーザー エージェント文字列を Google などの「正当な」クローラーと同じに設定します。ボットの IP アドレス/ホスト名を検索して、実際に Google/Yahoo/などから送信されていることを確認することで、これらをキャッチできます。ホスト名検索で何を探すべきかについての詳細情報 (この記事から):
- Google クローラーは、crawl-66-249-70-244.googlebot.com のように googlebot.com で終わります。
- Yahoo クローラーは、llf520064.crawl.yahoo.net のように、crawl.yahoo.net で終わります。
- ライブ検索クローラーは、msnbot-65-55-104-161.search.msn.com のように search.msn.com で終わります。
- Ask クローラーは、crawler4037.ask.com のように、ask.com で終わります。
$_SERVER['HTTP_USER_AGENT'] を使用して、Googlebot または Yahoo! 啜る。
クローラーが google.com から来ているとは思いませんし、そこから来るボットとして扱いたくない人も何人か知っています。あなたのサイトを検索するすべての人。
必要なことは、さまざまなボットの IP を確認することです。 http://www.google.com/support/webmasters/bin/answer.py?hl=ja&answer=80553
$_SERVER['HTTP_USER_AGENT']
ここでさまざまなユーザー エージェント文字列を確認してください: http://www.user-agents.org/
Google/Bing/Yahoo クローラーの IP アドレス -
http://myip.ms/info/bots/Google_Bing_Yahoo_Facebook_etc_Bot_IP_Addresses.html
あなたが言及したような、よく知っていて動作するロボットでそれを行う最良の方法は、$_SERVER['HTTP_USER_AGENT']で見つけることができるユーザーエージェントによるものです。
私は何かを一緒にハッキングしましたが、$_SERVER['HTTP_USER_AGENT'] を調べて、それらが検索エンジン ドメインから来ているかどうかを確認する必要があります。
function is_crawlers() {
$sites = 'Google|Yahoo|msnbot|'; // Add the rest of the search-engines
return (preg_match("/$sites/", $_SERVER['HTTP_USER_AGENT']) > 0) ? true : false;
}