JavaScriptのクロール用に特別なユーザーエージェントをGoogleは持っていない、JSの処理はクロールとは別

[レベル: 中級]

Googleは、JavaScriptをクロールするために特別なUser Agent(ユーザーエージェント)を持ってはいません。
通常のGooglebotがJavaScriptもクロールします。

BB-8
[Image Credit https://goo.gl/vCy291]

JavaScriptのクロール用に特別なUAは存在しない

GoogleのJohn Mueller(ジョン・ミューラー)氏に、フォロワーがTwitterで次のように質問しました。

JavaScriptやAjaxを多用したサイトに対しては、普通のGooglebotとは異なるGooglebotがいるんですか?

ミューラー氏はこのように返信します。

特別なUAはない。だが、クロールの直後にいつもレンダリングするとは限らない。それでたぶん、そういうふうに考えたのではないだろうか?

JavaScript/Ajaxをたくさん使ったサイトを質問したユーザーは運用しているらしく、インデックスへの反映が遅いため、JavaScript専用のクローラがいるのではないかと疑ったようです。

しかし、JavaScriptであろうが通常のGooglebotがクロールします。

JSコンテンツのインデックスへの反映が遅い(遅く見える)理由

その後のやり取りを見ていると、JavaScript/Ajaxコンテンツのインデックスへの反映が遅いと質問者が感じた理由は、主に次の2つの要因によると思われます。

  • JavaScriptの実行は別プロセス
  • キャッシュはインデックスとは異なる

JavaScriptの実行は別プロセス

ミューラー氏が触れているように、JavaScriptはクロールと同時に実行されるわけではありません。
そのページのHTMLのクロールと、そのページにあるJavaScriptの実行は別々に処理されます。
JavaScriptも含めてレンダリングした、そのページの最終的なコンテンツのインデックスができあがるまでには時間がかかることもあります。

以前に詳しく解説しました。

キャッシュはインデックスとは異なる

質問者は、Googleのキャッシュを見てインデックス状態を判断していた可能性があります。
キャッシュを見た場合、そのページのJavaScriptを処理するのはGooglebotではなくあなたが今使っているブラウザです。
レンダリングが完了してGooglebotが実際に見ているページをキャッシュでは確認することはできません。

Googlebotがそのページをどのように見ているかを正確に知るには、Fetch as Googleのレンダリングを使います。

こちらも以前に詳しく解説しました。

ということで、この記事で伝えたかったことをまとめると、

  • JavaScriptのクロールのために特別なGooglebotは存在しない
  • JavaScriptのクロールとその処理は同時とは限らないため、インデックスへの反映にタイムラグが生じることがある

となります。