■ 18.スパムメール(迷惑メール)の防止対策を考える
最近、ここの訪問者から、ホームページ上にメールアドレスを表記しているせいからか、スパムメールが多くて困っているので、その対策はないだろうか?という質問がありましたので、その対策方法を考えてみました。
その質疑応答を、一部加筆して記述してみます。
-
【質 問】
本日質問したいのは、サイト上でのメールアドレス表示のことです。
近頃スパムメールが多くて、困っておりました。
ある方からお聞きしたのですが、サイト上に載せているアドレスの@マークが全角表示になっているために、収集ソフトが拾っていくとの事でした。 -
【応 答】
ふむ〜..
残念ですが、その「ある方」の言ってる意味がよく解かりません。@マークが全角表示になっているために、収集ソフトが拾っていく..
半角だから拾っていき、全角は拾わないというのが一般的なのですが..
どういう意味なのでしょうかね?
あえて、全角のメールアドレスをターゲットにしてるのでしょうか?
納得がいきません。
それなら、全角にしようが、半角にしようが拾われてしまうんじゃないですか?
-
【質 問】
半角、全角関係なく、アドレスが読み込まれない対策として、何かありますか?
画像表示すれば一番いいのでしょうか。 -
【応 答】
確かに、画像で表示するようにすれば、そこからアドレスを拾われることはないでしょう。
しかし、そのメアドを訪問者がコピーして使うということもできなくなります。文字で記述し、なおかつユーザーに表示できる方法を使う以上、どんなにその痕跡を消そうとしても、それは無理です。
文字を化けさそうとしても、結果としてページ上に正しく表示させるなら、その逆を辿るだけで、元の正常な値に変換することは可能だからです。
その手順が簡単か、複雑かの違いだけに過ぎません。
しかも、その答えを訪問する側にわかる形で表示する以上、複雑にする方法にも限界があります。
文字列の中からメールアドレスを取得する方法は、一般的に半角の「@」を見つけ、その文字の前後のピリオドを含む記号や英数字をメールアドレスとして認識するのが一般的です。
また、表示上違和感のない形でメールアドレスをごまかす方法で最も簡単な方法は、その一部あるいは全部を全角にする方法です。
ただ、全角にしてしまうと、そのメアドをコピーして使うということができなくなってしまうという弊害も発生します。
もう少し手を掛けるならHTMLの特殊性を利用して、別のコード体系に変える方法などいくつかありますが、いろいろ考えた結果、ちょっと複雑にはなりますが、Javascriptを使用する方法が結構強力でいいかもしれませんね。
今回考えたのは、次の4つです。
1.Latin-1のコードに変える方法
2.Javascriptで分解する方法1
3.Javascriptで分解する方法2
4.JavascriptでLatin-1コードで生成する方法
例えば、「aaa@bbb.ccc」というメールアドレスなら、最も簡単に「@」マークのところだけを変換してみました。
1.「aaa@bbb.ccc」と記述する
2.文字列の間を半角空白で区切れば、よりいいでしょう。
<script Language="JavaScript"> <!-- document.write("aaa" + "@" + "bbb.ccc"); --> </script>
3.Javascriptで細かく区切って出力する
<script Language="JavaScript"> <!-- document.write("aaa"); document.write("@"); document.write("bbb.ccc"); --> </script>
4.「@」マークはLatin-1コードでは「64」です。
<script Language="JavaScript"> <!-- document.write("aaa"+String.fromCharCode(64)+"bbb.ccc"); --> </script>Javascriptならコードを外部ファイル呼び出しとすればより強固かもしれません。
ただ、Javascriptの場合は、訪問者がJavascriptをオフにしていると表示されないという問題点もあります。 -
【ユーザーからの回答】
atomさんが言われるように、アドレスをコピーして貼り付ける人がほとんどだと思いますので、全角表示は駄目でしょうね。
その旨記入したとしても、サイトに来てくれた方に、手間をかけさせるのも申し訳ないと思いますし。Javascriptで記述するのが一番強力との事ですが、訪問者がJavascriptをオフにしてしまうと表示できない、という問題があるみたいですので、
1.Latin-1のコードに変える方法
というのを、試してみたいと思います。