JavaScriptによる、メールフォーム向け機械的スパム投稿への対策(効果あり)

表題の件ですが、以前別の方法(非js)で、スパム対策を施していたのですが
あまり効果は上がらず、困っておりました。
そこで今回試したのはjavascriptによるもの。

あまりjavascriptは使いたくなかったのですが、
最近はjavascriptが比較的多用されていることもあり、
いいだろう。。。と自分に言い聞かせて。。

JavaScript でスパム投稿対策 << PHPで翻訳三昧

JavaScript でスパム投稿対策

上記の方法、試してみました。
inputのaction(コメント投稿時の遷移先)に、
始めはダミーが書かれてあり、投稿と同時に正式のものに
書き換えるという仕組みなんですね。
単純ながら素晴らしい発想と思います。
とくに単純な仕組みで、効果はバツグンだ!なら言う事ないですしね。

というわけで実装し、しばらく運用してみました。
その結果は。。
効果はバツグンだ!
でした。

1週間くらいですが、施策前は毎日パラパラきていたのが
今は1通もスパム投稿こなくなりました。
本当に素晴らしいです。

javascriptを切った状態だと当然投稿できなくなるわけなので
PCの場合はjavascriptを有効にしてもらうしか手立てはないのですが
モバイルの場合、困ります。

そんな場合は簡易的ですがユーザーエージェントなどで切り替え
モバイルの場合はスパム対策しない、などしてあげればどうでしょうかね。
まぁスパムロボットに偽装されてきたら通れてしまい、
元も子もないのですが、今のところ、
そんなかんじでもスパムは来ないですね。

にしても、この方法は現段階では
効果はバツグンなので、オススメできます。
あまりオススメしちゃうとスパム側もまた何かしら
考えてくるのかしら。。

以下、技術的メモ(2011年01月02日追記)

●htmlヘッド内
<script type=”text/javascript”>
function validateForm()
{
// フォームの送信先を正規のURLに変えます。
$(‘postForm’).action = ‘ここに正規url’;
return true;
}
</script>

●フォーム部分(例
<form id=”postForm” method=”post” action=”dmypost” onSubmit=”return validateForm()” target=”_self”>