F.Ko-Jiの「一秒後は未来」

User-Agentによってはgzipが有効にならないことがある?

この記事ではアフィリエイト広告を利用しています。

Googleを支える技術」の244ページに次のような記述があった。

たとえば以前のクローラーでは、Webアクセスのときの「User-Agent」が次のようになっていました。

Googlebot/2.1 (+http://www.google.com/bot.html)

Bigdaddy以降は、これが次のように変わっています。

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

この変更により、Webページのgzip圧縮が有効になるケースが多くなり、結果的にネットワークへの負担をさらに減らせるということです。

つまりヘッダに Accept-Encoding: deflate, gzip をつけていてもgzipを有効にしてくれないサーバがあるということ。

色々とネットを探ってみると、GoogleのMatt Cutts氏のブログの「Crawl caching proxy」という記事の中で言及されていた。

For example, the pre-Bigdaddy webcrawl Googlebot with user-agent “Googlebot/2.1 (+http://www.google.com/bot.html)” would sometimes allow gzipped encoding. The newer Bigdaddy Googlebots with user-agent “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” are much more likely to support gzip encoding.

GoogleがクローラーをBigdaddyという集中管理システムに移行したのが2005年末から2006年にかけてらしいので、そんなに古い話でもない。今でもそのようなサーバはちらほらあるということだろう。

たとえば Apacheのmod_deflateのドキュメントにはgzipを扱えないNetScape 4.x系のブラウザに対してgzipを無効にする設定が書かれていたりする。

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

こんな感じでヘッダのUser-Agentからgzipの有効/無効を判定することはあるようだ。サーバによって設定が様々だから、以前のGoogleのUser-Agentだとgzipを無効にされるケースがあったということになる。

ブラウザとgzipの関係については Which browsers can handle ‘Content-Encoding:’? あたりが詳しい。

つまりはクローラーのユーザーエージェントは Mozilla/5.0 (compatible; で始まる文字列にしておいたほうがよさそう、ということになる。

だから検索エンジンのクローラーはほとんどこの書式なのね。勉強になった。


Googleを支える技術 ~巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など