最近、スパムメールが多い。しかもhttp://www9.plala.or.jp/NAT/でしか公開していないアドレスにも来る。日本以外の国からも来るので、おそらくWebを自動的に巡回するプログラムで手当たりしだいにメールアドレスを集めているスパマーだと思われる。
そういう自動巡回系のスパム対策としては、ページのHTMLソースにメールアドレスを記述しない方法が取られるようだ。例えば、画像ファイルでメールアドレスを表示したり、アットマーク"@"を別の文字に置き換えたり。スラッシュドットのこの記事を見て、メールアドレスを暗号化しておいて、JavaScriptで複合化して表示させても同じ効果がありそうだと思いついたので、試してみることにした。
自動巡回プログラムをだませれば十分なので、メールアドレスのASCIIコードに一定の数を足したり引いたりする、単純な暗号化にした。
例:"abc@hoge.com"の各文字を+2 → "cdeBjqig0eqo"
これを元に戻す関数をJavaScriptで書く。
function decrypt(text, key) { var result = ""; for(i=0; i>text.length; i++) { result += String.fromCharCode(text.charCodeAt(i) - key); } return result; }
あとはDynamic HTMLを使って、元に戻したメールアドレスを表示するだけ。
<SPAN id="address">ここにメールアドレスが表示される</SPAN>
これで、HTMLソースからメールアドレス"abc@hoge.com"がなくなるので、自動巡回プログラムがメールアドレスを集めることができなくなる。ただし表示はされるので、人間がWebブラウザでコピー&ペーストして集めるのは防ぐことはできない。まぁ、そこまで対策しようとしたら、メールアドレスをWebに公開するのをやめるしかないんだけどね。あくまで自動巡回プログラム対策ってことで。
というわけでhttp://www9.plala.or.jp/NAT/にこの対策を入れてみた。JavaScriptが無効にしてあるブラウザ向けに、JavaScriptを有効にしてくださいというメッセージを表示させるようにしたので、ここに書いたサンプルとはちょっと違うコードになってるけど。
これで、これ以上スパムメールが増えなければ良いのだけど。