ボットがページをクロールしたときに、余分なスクリプト(トラッカー、CRMなど)をスキップすべきでしょうか?

3
2021.12.27

ボットはUser-Agent(12)で識別できますが、それほど単純ではありません。利点は、ボット用の大きくておそらく無駄なリソースをスキップして、コアコンテンツだけを提供することです。

これに対するベスト・プラクティスは何でしょうか?ボット用の余計なリソースをスキップすることに価値があるのか?もしそうなら、ボットを検出するためのベストプラクティスは何か?

例えば、特定の ?bot=true クエリ文字列を使用して、手動でチェックする(そして、それらのページがインデックス可能でないことを確認する)ことは問題ないのでしょうか、それともSEOに悪影響を及ぼすでしょうか?

回答
1
2021.12.30

ロボットに見せないようにすべきかどうかは、お客様のトラッカーやCRMの詳細を知っていないとアドバイスできません。以下のような場合には、ボットが表示されないようにするとよいでしょう。

  • ボットヒットのトラッキング統計がおかしくなる。
  • CRMのキーワードがユーザーごとに異なっていたり、すべてのユーザーに表示されない場合。
  • CRMのメインコンテンツを覆うようなポップアップが表示されている。

User-Agentヘッダーを使って、トラッカーやCRMの削除など、ボット用にページを変更することはできません。Googleは、Googlebotのためにページを変更することを「クローキング」と呼び、そのようなサイトにはペナルティを課します。代わりに、ボットがこれらをヒットしないようにする承認された方法があります。

robots.txtを使う

トラッカーやCRMをボットにクロールされないようにするには、robots.txtファイルにそれらを含めることが有効です。もしあなたのHTMLに

<script src=/crm.js></script>
<img src=/track.gif>

を含んでいる場合は、robots.txtでそれらを禁止することができます。

User-Agent: *
Disallow: /crm.js
Disallow: /track.gif

トラッカーやCRMがサードパーティによってホストされている場合、そのサードパーティがすでにrobots.txtでそれらを禁止しているかもしれません。サードパーティがブロックしていない場合は、サードパーティにリダイレクトするローカルURLにリンクして、robots.txtでリダイレクトURLをブロックすることができます。

ユーザーの行動をトリガーにする

ボットに何かを見られないようにするもう1つの方法は、ボットがしないことに基づいてトリガーをかけることです。これは特にCRMに関連しています。例えば、"Do you need help?Chat now "というメッセージをボットに見せないようにすることができます。

  • クッキーに基づいて、2回目(またはそれ以降)のページビューでのみ何かをトリガーする。ボットはページビューの間、クッキーを保持しません。
  • JavaScriptを使用して、ページ上の遅延後に何かを起動します。ほとんどのボットはJavaScriptを実行しません。Googlebotを含むいくつかのボットは実行します。GooglebotがJavaScriptを実行する場合でも、1ページあたり約5秒しか実行しません。ユーザーがページ上に10秒滞在した後に何かを起動したとしても、ボットはそれを見ることができません。
  • ユーザーとのやりとりでJavaScriptを使って何かをトリガーする。ボットがJavaScriptを実行したとしても、ページとのインタラクションをシミュレートすることはできません。ユーザーがクリックしたり、スクロールしたり、マウスを動かしたり、その他の操作をしたときにトリガーされるものは、ボットからは見えなくなります。

?bot=trueを使用すると、SEO上の問題が発生します。ボットをそこにリダイレクトすると、検索エンジンがそのURLパラメータをクロールしてインデックスします。そうなると、ユーザーはボットのページに誘導されてしまいます。

1
2021.12.30

余計なスクリプトをスキップするようボットに指示すること自体が余計なことのようですが

駄洒落で失礼しました。私平和的に来ました(そしてあなたの目的を尊重します)。

しかし、あなたの質問に答えるとすれば、それは価値がありません。Googlebotのような成熟した検索エンジンのボットは、この時点で十分に訓練されています。サイトを理解したり、コンテンツ(.js)をレンダリングするのに役立つリソースでなければ、これらのリソースは無視されるでしょう。

例えば、?bot=trueのようなクエリ文字列でこれを実現するとましょう。まずボットを検出し、クエリ文字列にURLを追加し、最後にPHPでリソースをデキューするか、JavaScriptでDOMからリソースをヨーインクする必要があります(キモい)。

他にも方法はあると思いますが、それはさておき。

つまり、クローラブル/インデックス可能なURLを2倍にする代わりに、一握りのスクリプト(Googlebotはおそらくいずれにせよ無視するでしょう)を省略することになります。

https://example.com/
https://example.com/?bot=true

これを避けるためには、新しいクエリストリングページを作成する際に、以下のアノテーションをエンキューする必要があります。

  • <meta name="robots" content="noindex noarchive" />
  • <link rel="canonical href="https://example.com/">

未解決の質問

  • ユーザーエージェントを検出するための最良の方法は、特徴の検出である。スニッフィングは避けるべきです。続きを読む

  • ボットをブロックするための最良の方法は、robots.txtを利用することです。通常の状況では、プライバシーに関わるコンテンツをブロックすることにのみ関心があります。