E-Mailアドレスの@を置き換えるスパム対策は無意味かも?

ここ数年、ウェブページにメールアドレスを直接記述しない風潮があります。これは、スパムメール送信先アドレスを収集する走査プログラム(ロボット)にメールアドレスを収集されないようにするためです。

直接記述しないとは、『myname@mydomain.or.jp』とそのまま書かないということで、代わりに次の方法でアドレスを記述します。

  1. @を別の文字に置き換える
  2. ヒントを記述する
  3. JavaScriptで生成する
  4. 画像として貼り付ける

1は『myname@mydomain.or.jp』と@をマルチバイト文字にしてみたり、『☆』にしてみたりする方法で、もっともよく見かけますが、ロボット対策としてはかなり弱いです。

# address.txt
myname0@mydomain.or.jp
myname1☆mydomain.or.jp
myname2@mydomain.or.jp
myname3 @ mydomain.or.jp
# spam.pl
open(F, 'address.txt');
read(F, $text, 1024);

while ($text =~ /([\w]+)[^\w]*([\w\.]+\.jp)/g) {
	printf("%s@%s\n", $1, $2)
}
>perl spam.pl
myname0@mydomain.or.jp
myname1@mydomain.or.jp
myname2@mydomain.or.jp
myname3@mydomain.or.jp

スパムの送信先をドメインで選択できる実装を考えると、アドレスをパターンでチェックしている可能性が高く、1の対策に対する対策が適用されたロボットも稼動していると考えられます。
もちろん、対策のないロボットもいることを考えると少なからず効果はあるはずなのですが、一度スパムが届くようになったアドレスに届くスパムは、なぜか日に日に増えていくので、全く収集されないにこしたことはありません。


ロボットを作ることを考えると、2と4が厄介です。ただし2は、形式化されてくると対応は簡単になるので、一番は4の画像として貼り付ける方法でしょう。もちろん、ノイズ入りで。

また、ロボットの挙動についての資料がある程度あるのなら、サーバ側で弾くことができるかもしれません。逆に考えて、ダミーのアドレスをみんなで貼り付けまくることで、ロボットをうんざり/(^o^)\させる方法もわくわくしてしまいます。

なんにしても、この手の問題はウルトラすばらしいアイデアを1つ採用して、標準化してほしいと思います。

<a href="mailto:e-mail@address">

の記述はそのうち必要なくなるのでしょうか?