激しいクロールを行うことで有名な中BaiduのBaiduspierと韓NaverのYetiが私のところにもやって来ました。実際には結構前から来てはいたのですが、特に目立った動きはないのであまり気に止めずにいました。先日サーバのチェック中にふとwikiのログを見たところ・・・毎秒数回ないしは数秒に一回、噂のクロールがガンガンきておりました。
blogや静的なページのログを調べると両者ともに他社のクローラと大差ない頻度のアクセスでまったく問題ありません。
アクセス頻度
wikiのログを調べると一日の上限は大体決めているようでBaiduが3500回程度、Yetiが1700回程度のようです。ただしGooglebotが多くても600(これはサイトマップを何度も送った日の模様)、大体150-200の間、Yahooは30回、msnは150-200弱というところを見ると相当多くアクセスしています。
どうやら自動生成される内部リンクの多いMediawikiが特にお好きと見えて、ちょこちょこ変更したら喜んで動的リンクを片っ端からクロールしていってるようです。双方とも拒否する話題が登っていますが、拒否されるとUA偽装や変更など今までにだいぶ悪評が高いようです。やはり実際に来てみるとこの激しさでは拒否したくなる気持ちもよくわかります。
アクセス制限
まあしかし、そこは私もリベラルな人間ですから、一度はiptablesでファイアウォールレベルでの拒否も考えたのですが、まずは紳士的な解決を。もともとwikiの非コンテンツページをGoogleやYahooにクロールされないようrobots.txtを変更しているところでしたので、ついでにBaiduspiderとYetiのクロール頻度を"Crawl-delay 1200"で抑えてもらうことにします。これで一日最大72回程になるはずです。
だいたいbaiduは一日1-2回くらいしかrobots.txtを見にこないようです。Yetiは80回もGETしていってくれます。双方robots.txtには従うと書いてあるので好意的に解釈して数日待つことに。ただ現時点でのクロール頻度があまりに高いので、まずは収まりそうになるまでindex.php以下を.htaccessでアクセス拒否。ファイアウォールで弾いてしまうとrobots.txtも読んでもらえませんからね。
で、変更直後はBaidospiderは一分に一回、Yetiは20〜30秒に一回のアクセスになりました。wiki全体はアクセス拒否していて403ですのでエラーリトライの時間のようです。
2日後の結果
さて約2日放置して本日(5/15)再度ログのチェック。結果、 Baiduspiderの異常なクロールは無事納まったようなのでアクセス許可へ。ちゃんとrobots.txtに従ってアクセス間隔を延ばし、クロール禁止のURLはアクセスしないようになっているようです。いい感じかもしれません。これでしばらく様子見です。
残念ながらYetiはいまだにほぼ毎分一回、一日1300回程度、クロール禁止したページにも普通にアクセスにきています。YetiのクローラのUAには"check robots.txt daily and follows it"とありますがCrawl-delayはサポートしていないかも知れません。もうしばらくアクセス拒否で。明日の夜には収まることを祈りつつ。
昨日(5/16)のログを調べたところ、なんとYetiからのアクセスが0に。ドメイン全体にアクセスがこなくなりました(^^; 別にいいんですが極端ですねえ。
経過の記録
5/13 |
robots.txt更新&.htaccessでほとんど拒否 |
5/14 | 放置 |
5/15 | baiduが納まったため.htaccessからアクセス禁止を外す。 Yetiはいまだにrobots.txtで禁止しているところも含め一日1200~1300回 |
5/16 | Yetiからのドメインへのアクセスが完全になくなる robots.txtでYeti/BaiduのCrawl-delayを600に緩和 |