web-dev-qa-db-ja.com

ユーザーエージェントのスニッフィングを行わずにCookieを使用する位置の年齢確認を修正

特定のブランドのアルコール用の単純な年齢確認jQueryスクリプトを作成しました。ユーザーに「はい」または「いいえ」ボタンが付いた法定飲酒年齢かどうかを尋ねます。はい、ウェブサイトはCookieを保存し、1か月間は年齢確認ができなくなります。

年齢確認スクリプトは、次のようなものを使用して、背後のすべての要素をカバーする画面を埋めます。

.verify {
    position: fixed;
    top:0;
    left: 0;
    width: 100%;
    height: 100%;
}

明らかに、これはユーザーにとってはうまく機能しますが、検索エンジンに対してはそれほど機能しません。 Google/Bingに[はい]ボタンをクリックするように伝えたいのですが、残念ながら、それほど簡単ではないことがわかります。

ナイフ、短剣、隠しマントがなければ、どうすればこの問題に取り組むことができますか?

私は同様の質問を知っています であり、この質問の違いは、一般的な推奨事項ではなく、具体的な設定を念頭に置いていることに注意してください。

3
Simon Hayter

たとえあなたが数秒のタイマーを使用してそれを遅らせたとしても、Googleはおそらくオーバーレイを見るでしょう。 GooglebotがJavaScriptを処理するとき、タイムアウトをスキップ(またはスピードアップ)できるようです。過去に、30秒のタイマーの後に出力を生成し、GSCの「取得してレンダリング」ツールが「見る」ものを確認しようとしました。 Fetch and Renderツールは、多くの場合、すでに「レンダリング済み」の「タイミング」JS生成コンテンツとともに「即時」に戻ります。

ただし、Googlebotが「はい」をクリックした場合でも、Cookieは保存されないため、オーバーレイは永久に存在します。ただし、Googlebotはオーバーレイの下にあるものを潜在的に「見る」ことができますが、「ユーザー」ができない場合、Googleはそれを無視することを選択できます(最近)。

いくつかの可能性:

  1. この特定のJSファイルをrobots.txtでブロックします。 Googlebot(または「ナイス」ボット)はこのJSファイルをフェッチして実行しないため、オーバーレイは表示されません。

  2. Cookieをサポートするユーザーエージェントにのみオーバーレイを表示します。 Googlebotおよびほとんどの検索エンジンボットはCookieをサポートしていません。 Cookieをトリガーとして使用してオーバーレイを非表示(または「非表示」)にしているため、これはとにかく賢明なチェックになります。

    最初のリクエストで無条件に設定される「テスト」Cookieの存在を確認した後にのみ、オーバーレイを表示します。 (おそらく、2番目のリクエストを待つのではなく、AJAX呼び出しを発行して「テスト」Cookieを確認できます。このオーバーレイをすぐに表示したい場合は、2番目のリクエストで十分かもしれませんが。)Googlebot(およびほとんどの検索エンジンボット)は「テスト」Cookieを設定(または厳密に言うと「リターン」)しないため、チェックは成功せず、オーバーレイは表示されません。これにより、ブラウザでCookieを無効にしている「パワーユーザー」に対してオーバーレイが繰り返し表示されることもなくなります。

1
MrWhite