« 牛乳を全部飲んだ | メイン | Windows Server に HDD を増設 »

2004年10月25日

Cookie のチェックを行うようにした

CEEK.JP NEWS において、一部 User Agent からの検索が合った場合は、クローラーと区別するために Cookie のチェックを行うようにしました。ご不便をおかけします。

というのは、メールアドレス収集ボットが鬱陶しかったから。このクローラーには、以下の特徴があります。

・OS: Windows 98
・ブラウザ: MSIE 6.0
・リンク先を全てクロール

これらの情報を基に調べていると、自分のアンテナに入っている ともちゃ日記 に Cookie を食べない。という情報が含まれていたので、同じ対策をするようにしました。

とはいっても、全ての方の Cookie をチェックするのもアレなので、上記条件に合致するブラウザ、OSの方のみチェックさせていただいてます。ので、クッキーを食べていないブラウザは、初回検索時に「Please confirm Cookie.」など、正しいかどうかわからない英文が少々表示されますので、リロードしてくださいな。

最初は、以下のようなソースを書いてました。

if ($ENV{'HTTP_USER_AGENT'} eq 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)' && !$ENV{'HTTP_COOKIE'}) {
    print "Set-Cookie: Cookie=OK; Expires=Thu, 31-Dec-2099 23:59:59 GMT; path=/; domain=news.ceek.jp\n";
    if (!$ENV{'HTTP_COOKIE'}) {
        print "Content-type: text/html\n\n";
        print "Please confirm Cookie.";
        exit;
    }
}

うひょー。これで Cookie 食わないブラウザをはじけるぜ。とか、思っていたんだが、よく考えると Cookie が環境変数に入るのは、アクセスした瞬間なんだから、2度目の HTTP_COOKIE の中身も、1度目と同じになることに後ほど気がついて凹んだ。つーことで、2度目の条件文は、省きました。

こんなこと書いて、メールアドレス収集ボットに対策されたらどうしようか。

2004年10月25日 15:23 | Development

トラックバック

コメント