▼ [spam] アドレス収集ボットからアドレスを隠蔽する
2007/07/18 1:09
ウェブサイトにメールアドレスを掲載するとボット (bot = robot) に収集され、そのうちspamが大量に押し寄せるようになる。私のアドレスも10年ほど前から無防備に晒していたため、今では1日に500通ほどのspamが送信されてくる。(実際には、前述の通り中国・韓国を国ごと拒否することで緩和されているが。)
これらのbotに対抗するため以下のような方法が採られてきたが、利便性が損なわれる、実効性が低いなどの問題があり、決定打とはなっていない。
- 画像でメールアドレスを掲載
- ASCII以外の文字 (いわゆる全角) で掲載
- 実体参照で掲載
- JavaScriptで出力する
- 途中、無関係の文字列 "REMOVE-THIS-PART" 等を入れる
今回考えた方法では、無関係の文字列 "REMOVE-THIS-PART" を入れつつ、それをCSSやJavaScriptで非表示・削除することで、それらのいずれかに対応しているUAであれば通常通りに表示される。(ただし、JavaScriptに対応していないまたは無効にしてある場合には、コピー・ペーストにより "REMOVE-THIS-PART" が出現する。)
- メールアドレスを記載する場合には、以下のように "hidden" クラスに属する任意の要素を入れ、その中には適当な文字列を入れておく。その際、実際にはこの文字列を除く必要があることが分かる文字列が望ましい。
<p>sakura@<span class="hidden">REMOVE-THIS-PART.</span>example.com</p>
- スタイルシートに以下の設定を行う。
.hidden { display: none; } - 以下のJavaScriptコードを読み込ませる。(HTMLファイル中に記載、または別ファイルにして読み込ませる。
- ロード時に上記関数を呼び出す。とりあえず、bodyの開始タグに以下の設定をすれば動く。
<body onload="delete_hidden()">
function delete_hidden()
{
var elems = document.getElementsByTagName("*");
for(var i = 0; i < elems.length; i++) {
var elem = elems[i];
if(elem.className == "hidden") {
var parent = elem.parentNode;
parent.removeChild(elem);
}
}
}
この方法が十分に機能するかどうかは分からないが、JavaScriptを理解するbotでも無い限りは大丈夫… と信じたい。
▼ コメント(0件)
- TB-URL(確認後に公開) http://diary.asuka.net/07/tb/
