« 逆に言う::日本語ってムズカシイ | メイン | 雪まつり開幕 »

[おぼえがき] 迷惑メールはイヤだけど、mailto:は使いたい。

JavaScript PHP スパム対策

インターネットで公開しているサイトにメールアドレスをそのまんま載せてしまうと、悪い人たちにクロールされて迷惑メールの標的になってしまうことが多々あります。その対策として、「@」を「 at 」あるいは全角の「@」と記述したり、メールアドレスの部分を画像で表現するなどしている人も多いと思います。
が、それでもやっぱりmailto:でメーラーを起動させたい、そんな悩みをお持ちの方も多いのではないでしょうか。せっかくWebにメールアドレス公開するんだから、1クリックでメーラーを起動できた方がいいもんね。

何かいい方法はないのかなぁと探していたところ、Nさんが素敵なモジュールを発見してくれました。
PHPのPEARにHTML_Cryptというモジュールがあり、これを利用することでメールアドレスを暗号化してサイトに仕込むことができるようです。
マニュアルはコチラ⇒PEAR :: Manual :: HTML_Crypt

モジュールの利用法としては、とっても簡単。

<?php
// オフセット 8を指定して利用したいメールアドレスを暗号化。
$c = new HTML_Crypt('あなたのメールアドレス', 8);
// それを で囲みます
$c->addMailTo();
// 復号されたアドレスを表示するための javascriptの出力。
$c->output();
?>

※ 上記のマニュアルページのサンプルのまんまですが、メールアドレスの箇所だけ直しました。
このphpを実行すると、下記のようなJavaScriptが出力されます。
<script language="JavaScript" type="text/javascript">/*<![CDATA[*/var a,s,n;function j5fb0cb45e8d0261d0a495dbf221bdb91(s){r="";for(i=0;i<s.length;i++){n=s.charCodeAt(i);if(n<128){n=n-8;if(n<32){n=127+(n-32);}}r+=String.fromCharCode(n);}return r;}a="Di(pzmnE*uiqt|wBsqvws}vqHiv|i{6rx*Fsqvws}vqHiv|i{6rxD7iF";document.write(j5fb0cb45e8d0261d0a495dbf221bdb91(a));//]]></script>
これを実行するとこんなmailto:なリンクが表示されます。

見ている分には普通にメールアドレスも見れるし、クリックするとメーラーが立ち上がりますが、ソースを見るとメールアドレスの部分がしっかり暗号化されているので、クローラーには捕捉されなくてすみそうですね〜。

アンタスのホームページにもいくつかこのスクリプトを仕込んでみました。こちらのページなどでご覧いただけます。ちなみに、実際に使う場合にはJavaScript未対応な方のために、<NOSCRIPT>なタグの中で画像なり、at なりを記述しておく必要がありますね。

この方法の難点は毎度プログラムを書かないといけないのですが、僕はそれが面倒なのでメールアドレスを入力したらJavaScriptコードを出力してくれるCGIを作成して利用してたりしてます。
そのCGI、せっかくだからどこかに公開しましょうかね〜。誰か使ってくれる人、いらっしゃいますかね。

トラックバック

このエントリーのトラックバックURL:

迷惑メール防止のための暗号化mailtoタグ生成ツール

以前、「迷惑メールはイヤだけど、mailto:は使いたい。」というエントリでPE... [詳しくはこちら]

暗号化mailtoが見破られた!?

以前から以下のエントリでご紹介していた、暗号化mailtoタグが最近見破られてし... [詳しくはこちら]

コメントを投稿

あわせて読みたい

あわせて読みたい