ウェブマスタークイズの奇問、「Googleには夜間だけクロールしてほしい。どうするべき?」

Googleが1月20日に公開した「ウェブマスタークイズ」には挑戦したでしょうか?

僕は前半を日本語訳したところ、日本の公式ブログで日本語版がすぐにアップされてしまい心が折れそうになりましたが、気を取り直して提出しました。

全問正解の自信があると言いましたが、それは前半20問の時点の話で後半の20問は頭を悩ませる問題もあり、満点の自信はありません。

難問というより、奇問がいくつかありました。

たとえば29番の問題です。

29. Google には夜間だけクロールしてほしい。どうするべき?
a) info@google.com 宛にメールを送る
b) robots.txt ファイルに “Allow: 11pm7am”を追加する
c) サーバーに許容範囲を超えるリクエストが来ている間、すべてのユーザに 503 ステータスコードを返す
d) robots.txt を動的に変更して、昼間の間、サイトのクロールをブロックするようにする

こちらは英語の原文です。

29. Your server has limited bandwidth resources and you would like Google only to crawl at night. What should you do?
a) Send an email to info@google.com
b) Add “Allow: 11pm7am” to your robots.txt file
c) Have your server respond with HTTP result code 503 to all users when it’s bogged down
d) Dynamically change your robots.txt to disallow crawling during the day

WebmasterWorldでもスレッドにも挙がっている設問で、「これが正解」という選択肢が見当たりません。

a)の「info@google.com 宛にメールを送る」は消去法で真っ先に消えますね(まさか選んでないですよね?)。

b)の「robots.txt ファイルに “Allow: 11pm7am”を追加する」は、そんなディレクティブは存在しないので“バツ”…、と言いたいところなのですが、Googleが出願したパテント(特許)にはXMLサイトマップにクローリングの速度と時間を指定するシンタックスがあるそうです。

<crawl_rate from=08:00UTC to=17:00UTC>medium</crawl_rate>
<crawl_rate from=17:00UTC to=8:00UTC>fast</crawl_rate>

WebmasterWorldでは、これが正解だというメンバーもいました。
でも、回答で記述しているのはrobots.txtであって、サイトマップファイルではないですよね。
さらにサイトマップで実装されているかも不明です。
よって、正解とは考えづらいです。

残るは、c)の「サーバーに許容範囲を超えるリクエストが来ている間、すべてのユーザに 503 ステータスコードを返す」と、d)の「robots.txt を動的に変更して、昼間の間、サイトのクロールをブロックするようにする」になります。

僕は、最初d)が正しいと思いました。
robots.txtのアップロードをタスク化することはプログラムを組めば、そんなに難しくないからです。
でも、これも違うようです。

実はWeb担の安田編集長に答え合わせをしてもらったところw、Googlebotはrobots.txtを1日に1回だけダウンロードすると教えていただきました。

というより、僕が自分のコーナーでピックアップしてました。(笑)

robots.txtのダウンロードは1日1回
(Google Webmaster Central Help Forum)
こちらもグーグルのジョン・ミューラー氏によるrobots.txtのTIPSだ。氏によると、グーグルはほとんどのサイトで、1日に1回robots.txtをチェックするそうだ。

Googleウェブマスターツールで確認したところ、どのサイトも最終ダウンロードが、確かに24時間以内であった。robots.txtの変更や間違い修正を行っても、1日以内には見てもらえるということになる。逆にいうと、最後にrobots.txtがダウンロードされた2時間後にrobots.txtを変更しても、しばらくはその内容が反映されないということにもなるが。

つまり、Googlebotはアクセスする度にrobots.txtを見るわけではないんですね。
おそらくキャッシュのような状態で、ある時点のコピーを保持しているんでしょう。

したがってアクセスをブロックするrobots.txtをアップロードしても、必ずしも最新のファイルを見てもらえるとは限らず、アクセスされることがありえます。

よって、d)もハズレっぽいです。

となると最後まで残っているのは、c)ということになります。

一定数以上のセッションが発生したときにそれ以上接続を受け付けず、503エラーを返すのは可能です。

Apacheはやったことがないですがmod_limitipconnというモジュールを使えばできるようですし、IISは管理コンソールの該当箇所にチェックを入れて最大接続数を入力するだけです(ただIISは503ではなく403.9っぽい)。

許容範囲を超えたときは、Googlebotにも503エラーを返しアクセス不可にできます。

ただし、「夜間だけ」という条件をみたすことができていません。
「夜間はアクセスが少ない」という暗黙の条件設定があるのでしょうか。

最終的には d)を選んだのですが、WebmasterWorldのレスにもあるように「e)どれもあてはまらない」を作りたくなる設問でした。

なお、僕の全問の回答を公開します。

「ここはこっちじゃない?」「これはどうして?」というのがあれば、コメントしてください。
僕の答えが必ずしも正しいわけではないので、一緒に考えましょう。