▲ Closeではまず、スパム投稿の仕組みを理解するところから始めましょう。
スパム投稿がどうやって実現されているかと言いますと
知らんがな( ゚Д゚)
知らんけど多分、
httpのプロトコルに則ってWebサーバにリクエスト投げて、
掲示板のページのソースをGetして、
Formタグの中身を解析して、
NameとかCommentとかのそれっぽい名前のINPUTに対して投稿内容を割り当てて
Submitしてると思うよ。
もし私がスパムロボット作るならそうする。
で、そんなスパムロボットからどーやって守るかというと、
ページを開かないとわからない情報を投稿の条件にすればいいわけです。
このBlogのコメント投稿時にもキーワードとして数字を入力させる仕組みありますよね。
あれは人の目で見ないと判別が極めて難しい。スパムロボットでは対応できない。
ただ、利用者に手間がかかっちゃうんですよね~。
なので別の方法を取ります。
下記のJavaScriptを掲示板スクリプトのHTMLソースに突っ込み、BODY onLoad で呼び出します。
function L_SpamBlocker_Initialize(){
try{
var obj = document.forms;
for ( i = 0 ; i < obj.length ; i++ ){
obj[i].innerHTML += "<INPUT type='hidden' name='submit_key' value='aaaaa'>";
}
}
catch (e){
alert(e);
}
}
何をしてるかというと、全てのFormタグの中に投稿キーを突っ込んでます。JavaScriptで動的に。
スパムロボットはJavaScriptの中身まで理解できないので、このキーを割り当てることはできないはず。
あとは投稿時の処理に、投稿キーのチェックを入れればOK。
・・・そこを解析するのが面倒なんですけどね。
ちなみに、「最初からHTMLソースにhiddenで投稿キーの枠を用意しておいて、ページロード時にvalueを変更する」という手段を以前とったことがありますが、それは失敗でした。
リセットボタン押したら投稿キーもリセットされちゃいます(;・ω・)
ここまで読んでもらって言うのもなんですが。
探せばもっといい方法あるよ、きっと(´ρ`)