Googlebot(および他のクローラー)がサイトをクロールする方法を理解したかった。具体的には、document.referrerを渡すかどうか、およびlocalStorageキーを保持するかどうか、そのため、これらのクローラーを検出してLogstashにデータを記録するスクリプトをGoogleタグマネージャー経由で実装しました。
これは、クローラーユーザーエージェントを検出するために使用している条件です(クローラーの場合はtrueを返します)。
function() {
if(navigator.userAgent.indexOf('robot de Google') < 0 &&
navigator.userAgent.indexOf('Googlebot') < 0 &&
navigator.userAgent.indexOf('bingbot') < 0 &&
navigator.userAgent.indexOf('msnbot') < 0 &&
navigator.userAgent.indexOf('BingPreview') < 0 &&
navigator.userAgent.indexOf('Yahoo! Slurp') < 0) {
return false;
} else {
return true;
}
}
これは、GTM Pageviewイベントの画像ピクセルを介してLogstashにリクエストを送信するタグです。
<script type="text/javascript">
(function (d) {
var pagePath = encodeURIComponent(document.location.pathname);
var pageReferrer = encodeURIComponent(document.referrer) || "null";
var userAgent = encodeURIComponent(navigator.userAgent);
var viewCount = Number(localStorage.getItem("preview_view_count")) + 1 || 1;
localStorage.setItem("preview_view_count", viewCount);
var js;
js = d.createElement('img');
js.style = 'display:none;';
js.alt = 'tracking img';
js.src = 'http://MY_LOGSTASH_ENDPOINT_DOMAIN/pixel.gif?EVENT=LogCrawl&USER_AGENT=' + userAgent + '&PAGE_PATH=' + pagePath + '&PAGE_REFERRER=' + pageReferrer + '&VIEW_COUNT=' + viewCount;
d.body.appendChild(js);
})(window.document);
</script>
Logstashを見ると、Googlebotから過去4日間で40ヒットしか表示されていませんが、Search Consoleは1日あたり50,000ページをクロールしています。
誰かが以前にGTMでGooglebotをログしようとしたことがありますか?スクリプトに何か問題があるのか、またはGooglebotがほとんどの場合Javascriptを実行しないのかを把握しようとしています。
どんなアイデアでも大歓迎です。ありがとう。
Search Consoleは、ダウンロードされたファイルの総数(!)を報告します( source )。これにはJS/CSS /画像ファイルなどが含まれ、キャッシュの量に応じて非常に膨大な数になります。
そのため、サーバーログを分析することで、クロールされたHTMLページのより正確な数値を取得できます(その場合、Googlebotからのヒットを確認することを忘れないでください、多くの偽装者がいます)。
タグについて:localStorageはGooglebotでサポートされるべきですが、複数のページのインプレッションで機能する可能性は低いです。したがって、ifVIEW_COUNTから40ヒットを直接取得した場合、代わりにログに戻って自分でそれらのヒットを追加することができます。
(とても興味深い!)