web-dev-qa-db-ja.com

Yandexによる高帯域幅の使用を防ぐ

私はYandexの行をrobots.txtファイルに入れましたが、Yandexが私のWebサイトに積極的にインデックスを付けることがあります。そのため、一部をハードコーディングしてユーザーエージェントを確認し、ユーザーエージェントが次のような場合はキャッシュファイルを提供します:"Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

しかし、statcounterログを確認すると、最近、他のYandex関連のボットがサイトを頻繁にクロールすることがわかりました。それらは次のようなものです。私はcPanelログからこの情報を取得しました。

Beeline (128.69.243.12)
Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Referer: http://yandex.ru/yandsearch?text=example.com&lr=213

Beeline (89.178.108.247)
Referer: http://yandex.ru/yandsearch?text=example.com&lr=213
Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)

これらのボットのキャッシュページをブロックまたは提供するにはどうすればよいですか?

$_SERVER['HTTP_USER_AGENT']を確認すると、リファラーに「yandex.ru」が表示されません。リファラーが空になります。 cPanelログでリファラーを見つけることはできますが、HTTP_USER_AGENTからリファラーを取得できませんか??

また、この問題に関連するIPが多すぎて、定期的に変更されているため、IPを禁止したくありません。それでは、このボットをどのようにして見つけることができますか?

誰かが同様の問題を抱えていますか?ありがとうございました

3
trante

http://help.yandex.com/search/?id=1112639 で説明されているように、robots.txtクロール遅延を使用します

例:

User-agent: Yandex
Crawl-delay: 2 # specifies a 2 second timeout

このボットの禁止を開始する前に、ログが実際にYandexであり、ユーザーエージェントがyandexであるように見せかけている他の誰かではないことを確認する必要があります。競合他社がボットをブロックまたは遅延させ、ランク付けできるようにするために使用する戦術。 DNSルックアップを実行します: http://help.yandex.com/search/?id=1112029

ユーザーエージェントに依存するキャッシュコピーをさまざまな方法で提供できます。 Apacheを使用する場合は、mod_rewriteルールを使用して実行できます。 PHPを使用する場合は、$ _ SERVER ['HTTP_USER_AGENT']変数をスニッフィングするか、 function get_browser() を使用することで実行できます。キャッシュの作成方法もさまざまで、101通りの方法で実行できます。ただし、最高のパフォーマンスを得るには、常にキャッシュを使用する必要があります。

2