1

Drupalを使用した醸造所のウェブサイトに取り組んでいます。18歳未満の未成年者はウェブサイトを閲覧できないため、アクセスしたページはモジュール(リーガル)を通過し、ユーザーが「続行」をクリックして18歳以上であることを確認すると、サイトがユーザーに表示されます。法定年齢を真として保存します。

問題は、検索エンジンボットがページにアクセスすると、法定年齢確認ページにもリダイレクトされることです。PHPでボットまたはブラウザーを判別するために、次のスクリプトを試しました。

$agent = $_SERVER['HTTP_USER_AGENT'];
if(( eregi("bot", $agent) || eregi("slurp", $agent) )) {

$_SESSION['legalage'] = true;
drupal_goto($_REQUEST['destination']); 

}

しかし、それは機能していないようです。ブラウザ/人間が年齢要件を通過する必要があり、ボットがコンテンツに直接アクセスできるように、この問題を処理する方法について誰かが私に提案できる場合。前もって感謝します。

4

4 に答える 4

4

通常、セッション データを保存するには、クライアントに Cookie が必要です。ボットが Cookie を受け入れない場合、ボットは機能しません。use_trans_sid(すべての URL にセッション ID クエリ文字列を追加するを有効にしない限り)。

年齢確認ページ自体ではなく、年齢確認ページへのリダイレクトを実行するコードの周りでユーザー エージェント チェックを実行してみてください。

余談ですが、使用しないでくださいeregi。非推奨です。代わりに、perl 互換の正規表現関数を使用してください。

于 2009-10-16T08:35:29.397 に答える
1

1つの可能性は、ヘッダーリダイレクトの代わりにjavascriptリダイレクトを配置することです..ボットはそれを処理できず、通常のpplはリダイレクトされます..しかし、javascriptが無効になっているpplのグループが常に存在します...しかし、それはグループは小さく、一般的に18歳以上です:)

于 2009-10-16T09:14:17.723 に答える
1

あなたの論理は正しいです。ただし、ボットがセッション Cookie を受け入れてエコーするかどうかはわかりません。$_SESSION['legalage'] = true; が必要なページの奥深くにあることをお勧めします。ボットのこのロジックを無視するコードも追加します。

参考までに、Google ウェブマスター ツールには、Google ボットがアクセスしたときにサーバーから送信された実際のコンテンツを表示する便利な新機能が追加されました。さあ、使ってみよう!

于 2009-10-16T09:59:11.010 に答える
0

ボット/スパイダー/クローラーの検出は正確な科学ではありません。過去に使用した PHP 配列があり、それをユーザー エージェントに対してチェックしました。配列には、サイトにアクセスさせたい主要なスパイダー/クローラーのすべてではないにしても、ほとんどが含まれています。これはあなたにとって興味がありますか?それとも何か他のものを探していますか?

于 2009-10-16T08:34:19.720 に答える