ここ数日コメントスパムの数が増えてます。
以前はトラックバックスパムの方が酷く、結局トラックバックを閉じることにしたのですが、コメント欄を閉じるのはちょっとやだなぁということで、下記対策を取ってみました。
コメントスパムの書込の内容を見ると、エントリのタイトルから日本語を抜き取って、それをコメント欄に入れているっぽいんですね。
つまり、最近のスパム判定のルールとして、「日本語が含まれないコメントはすべてスパムと判定する」というルールがメジャーになっており、それに対応するためにページをスクレイピングして、タイトルとコメント投稿CGIのアドレスを抜き出しているっぽいのです。あくまで「っぽい」ですけど。
なので、MovableTypeで、mt-comment.cgiの名称を変更して、設定ファイルを書き換えるというやり方は、あまり効果があがらないように思えます。
ということで、今回取った対策は、コメント欄のformのactionにはダミーのパスを記述しておき、onsubmitのイベントで、actionを動的に書き換えてやるという方法。
MT3.xだったら、「テンプレート」→「アーカイブ」→「エントリー・アーカイブ」で、コメントの投稿フォームのところが↓こんな風になっているところを、
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie.checked) rememberMe(this)">
↓こんな感じに書き換えたらOK。
<form method="post" action="<$MTCGIPath$>mt-comm.cgi" name="comments_form" onsubmit="this.action='<$MTCGIPath$><$MTCommentScript$>';if (this.bakecookie.checked) rememberMe(this)">
変更後は、コメントを投稿してみて、ちゃんとJavaScriptが動作することを要確認。
さて、効果あると良いなぁ。