twitter ■お問い合わせ当サイトへのリンクサイト仕様

現在位置 > LostTechnology > Tips > メールアドレス収集ロボットから逃れる方法

メールアドレス収集ロボットから逃れる方法

Web上にメールアドレスを公開すると、迷惑メール送信業者が利用しているメールアドレスを収集ツールで送信先リストに追加され、大量の迷惑メールが届くようになります。

運営しているWebサイトで連絡先を記しておきたい場合は、メールアドレスが回収されるのを避けるために、これまでいろいろな対策が考え出されて使われてきました。各所で対策されている代表的なものは以下の通りです。

  1. 全部もしくは一部を全角文字にする
  2. メールアドレスを画像で表示する
  3. HTMLの文字参照を利用してメールアドレスを記述する
  4. JavaScriptで表示時に記述する
  5. メールフォームを利用する

1.は海外の業者には効果があるかもしれませんが、全角英数字を半角にする処理はプログラム的には非常に簡単なものであり、国内の業者にはどれほどの効果があるのか不明です。過度な期待は禁物といえます。また、訪問者にアドレスを入力させるという手間が発生するのもデメリットです。

2.は画像内の文字を解析するようなものが出てこない限り大丈夫ですが、1.と同様入力してもらう手間が必要になるのが欠点といえます。

3.は文字参照を解釈するツールが出てきたため、徐々に迷惑メールが届くようになりました。もはや神通力は切れたといえます。

4.はJavaScriptを無効にしている人や、JavaScriptに未対応の携帯電話などからの利用だとアドレスを伝えることができません。

5.はメールアドレスを公開せずに意見を送っていただくのに有効でありますが、メールフォームを狙った自動投稿ツールもあるので完全には安心できないのが実情です。

利便性を犠牲にせず対応する方法の模索

今回は訪問者がJavaScriptを有効にしている人と無効にしている人に分けて対策を考えていきます。一般的な訪問者の多くはJavaScriptを有効にしているはずですが、全ての人が問い合わせを使えるよう両方に対応しようというわけです。迷惑な業者は対応範囲に入ってもらっては困りますがね(笑)。

JavaScriptを有効にしているユーザー層を分析した場合、初心者でセキュリティリスクを認識しないで有効にしているか、中級者以上でセキュリティ面とのトレードオフを考えた上で利便性を優先しているか、セキュリティ対策・知識を持った上で利用しているユーザー層だと考えてよいと思います。JavaScriptが有効ならば、Ajaxを利用して問い合わせページの表示後に動的に別のHTMLファイルを読み込むようにして、メールアドレス収集ツールを回避してみましょう。

JavaScriptを禁止している訪問者は非常に慎重な人たちですが、多少不便になることは覚悟した上で禁止に設定しているはずです。したがって、こちらは<noscript>メールアドレス画像表示</noscript>もしくは、<noscript>メールフォーム</noscript>というようにします。これでJavaScriptを無効にしていても問い合わせは可能です。使用するメールフォームは送信前に画像認証をするタイプにしておけば、迷惑な自動投稿ツールも避けられます。

以上のような方針であれば、当面は訪問者からの問い合わせの利便性を確保したまま、メールアドレス収集ツールから逃れることが可能だと思われます。それでは、実際に設置する方法を説明していきましょう。ただし、ガチガチのサンプルは今回提示しません。そんなことをしたら、業者側につけこまれて全てが台無しになりますから。対策の方法として、ひとつプランを提示するというものとなります。これをヒントにしていただければということです。

従来部分からの置き換え

これまで「<p>お問い合わせは*****@*****.**.**までご連絡ください。</p>」などと記述していた部分を以下のように変更します。ここではサンプルとしてID「ajax」に読み込むことにしますが、サンプルのIDとは名前を変えたほうがよいでしょう。業者もこのような情報を見ている可能性がありますからね。例ではJavaScriptが無効の場合にメールフォームを埋め込むことを考慮してDIV要素を使っていますが、メールアドレスの画像にするならばP要素でも問題ありません。NOSCRIPT要素内の記述はJavaScriptが無効の環境でのみ使われるため、無効にしてアクセスしている人向けに表示したいものを記述すればOKです。

<div id="ajax"><noscript>(この部分はJavaScript無効時の表示で各自の方針次第で完全に自由。メールフォームを記述してもいいし、メールアドレスの画像を置いてもいいし、不親切になるけど問い合わせの際にはJavaScriptを有効にしてアクセスしてくださいといったメッセージでも可)</noscript></div>

JavaScriptを無効にしている人への表示はここまでで完結です。ではJavaScriptを有効にしている人向けの部分をどうするのか説明していきましょう。今回はライブラリにjQueryを使うことにします。ダウンロードは一般向けとされている(リンク先ファイル名が)jquery-?.?.?.min.jsとなっているMinified版を選びましょう。執筆時は1.2.4.min.jsでしたので、例ではそれを使います。なおサンプルでは、JavaScriptはすべて/scriptから始まる絶対パスで指定していますが、ご利用になるサイト構成に合わせて各自変更してください。

<head>~</head>内で以下のように記述してjQueryを読み込ませます。今後のjQueryのアップデートを考慮して、ファイル名をjquery.jsのように変更して、それにあわせてリンクしておいてもよいかもしれません。ついでに後述する動的読み込みに使うJavaScriptも一緒に読み込むように記述しておきましょう。サンプルは仮にactiveload.jsにしていますが、これもファイル名は各自変更して使ってください。

<script type="text/javascript" src="/script/jquery-1.2.4.min.js"></script><script type="text/javascript" src="/script/activeload.js"></script>

activeload.jsでは動的に別ファイルとして用意したHTMLを読み出す処理を行ないます。例ではadd.htmlを用いることにしましょう。このファイルが検索エンジンなどに見つかると対策がすべて無駄になるため、robots.txt.htaccessで保護してください。例ではrobots.txtで検索エンジンを拒否したsecretフォルダのさらに下に、aclフォルダを作成してその中にファイルがあるものとします。その場合のactiveload.jsの記述例は以下の通りです。関数名などは変更して使ったほうがよいでしょう。動的に読み込むid="ajax"(#ajax)を空にして、指定したファイルを読み込めという指定です。

function loadFM(loadfile) {
	$("#ajax").empty().load(loadfile);
}
$(function(){
	loadFM('/secret/acl/add.html');
});

JavaScriptが有効な時にのみ読み込まれるadd.htmlの中身は自由に記述してください。検索エンジンの参照を拒否したフォルダのさらに下のフォルダに置いたファイルが安全だと思うならば、mailtoから始まるリンクを記述してもよいでしょう。その場合でも文字参照を利用してメールアドレスを記述する程度の最低限の自己防衛はしておくべきですけどね。手に負えない検索エンジンもありますから。少なくとも執筆時(2008/05/20時点)は本サイトのrobots.txtの指定を完全に無視し続けているbaidu(さすがは中華思想だ)は、.htaccessでIP帯域ごと拒否が正解かもしれません。不当な手段でインデックスを増やして自社の利益確保のために、サイト運営者には迷惑をかけているんですからね。

なお、JavaScriptを有効にしている人のみを対象にするのであれば、Ajaxで読み込むファイルをメールフォームにするという手があります。(用意しておくに越したことはありませんが)画像認証がなくてもこの方式ならば当面は自動送信ツールの被害を受けずに済むと思われます。

ちょっと話がそれてしまいましたが、今回提案した対策のほうはいかがでしょうか? この方法ならば利便性の面でやや不便になることを覚悟している人たち以外には影響がないと思います。外部JavaScriptまで解釈するようなアドレス収集ツールが出現するまではおそらく安全でしょう。ユーザー層別にAjaxを活用したり従来の手法を使ったりと処理を振り分けてみるというのは、今後も研究の余地がありそうです。