- 2008年1月11日 01:48
- ブログ
まず初めに。1500件のスパムの中から友人であるすぽんじ氏のコメントが2件ほど見つかりうち1件は掘り出せました。
ですが、誤ってもう1件は削除してしまいました。申し訳ない('A`)
とりあえず自分で何度投稿してもスパム判定されるのでおかしいなぁと思ったら、Movable Type4から付けられたスパム判定の数値がプラスになっていたことが原因だった。
この判定をプラスにするとスパム判定の基準が厳しくなってよほど真面目で長くて有意義ななコメントでないと排除されてしまうようだ。
ましてや「テストです、にょろーん」などと意味不明なコメントを投稿していればそりゃスパム判定されるわな\(^o^)/
さてさて、そんなこんなでスパム判定は「±0」に戻し現実的なスパム対策を施してみた。
「mt-comments.cgi」をリネームする
基本中の基本。このプログラムをリネームするだけで海外からのロボットスパムがかなり減るとの事。
やり方は簡単。まず「mt-comments.cgi」を「nyoro-n.cgi」など.cgiの拡張子を残し適当に改名。
そして次にシステムにコメントCGIが変わったことを教えるため、以下の記述を追加「mt-config.cgi」を開き、最後の行にでも追加してくりゃれ
CommentScript nyoro-n.cgi
ここまではOKかな?このプログラム名は適当だから自分で好きな名前に改名してくりゃれ。
しかしこれだけではダメ、もといまだまだ甘いようだ。
何故ならソースを覗くときっちりとコメントプログラム名が記述されているからだ。ほらこんな風に⇒action="nyoro-n.cgi"
これでは優秀なスパマーのロボットにはバレてしまうかもしれない…
そこで、このコメントプログラム名をJavaScriptで隠すというなんとも素晴らしい技を発見したので教えよう。
JavaScriptでactionターゲットを偽装
まずインデックステンプレートにある「mt.js」に以下の記述を追加。
function mtCm() {
document.comments_form.action = "<$MTCGIPath$><$MTCommentScript$>";
}
次にモジュールテンプレート一覧でコメントフォームを選択し、中身を編集します。
以下の「action="<$MTCGIPath$><$MTCommentScript$>"」の下線が引いてある部分だけを削除して下さい。
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
↓こんな風になります
<form method="post" action="" name="comments_form" id="comments-form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
そして、最後に</form>タグの次の行にJavaScriptの呼び出しタグを追加
</form> <script type="text/javascript">mtCm();</script> </div>
こんな感じ。これで「action=""」の空の部分に"<$MTCGIPath$><$MTCommentScript$>"が挿入されるって仕組みだ。JSって便利ねー!
ちなみに自分の場合、この通りにやったらエラーが出ちゃったので、何がおかしいのかなぁ~とタグと睨めっこしていたら、自分のスクリプトにはformタグ内に name="comments_form" の記述がなかったのです。
これがないときちんとJavaScriptの呼び出しに答えてくれず、"405 Method Not Allowed"とエラーではじかれるので注意。
405エラーなんて初めてみたよ/(^o^)\
ちなみにこちらのスパム対策は「MT4を運営開始する前に設定しておくと良い9つの項目」を参考に構築しました。
今度はスパムトラックバック対策でもやってみようかな。
- Newer: ギタドラプレイヤーへ100の質問 ~GFV4 & DMV4 ver.~
- Older: Movable Typeのスパムコメントが酷い件