wordpressに標準装備されているスパム防止プラグインのAkismetは非常に優秀であるといつも感心しているのですが、ブログのPVが増えるにつれ、スパマーのコメント投稿の回数も増え、取りこぼす回数も日に日に増えていくのを感じます。
そこで新しいプラグインを導入してスパムを防御することにしてみました。
メールアドレス必須にするだけでももう少し防げるのでしょうが、やはり一般の人たちにまで強制させたくないので控えています。
そこで登場するのが、認証系のプラグイン。
証明発行なんて大掛かりなものは使いませんが、画像を使ったものはよく見かけます。
俺が着眼したのは算数計算を強要させるプラグインです。
『算数はお好き?』
コメント投稿時にかんたんな数字の足し算を出題して答えを記入してもらうものです。
人間には簡単に解けるものですが、スパム投稿するボットに解けるものはいないのではないかと思っています。
導入方法
- 上記のサイトからファイルをダウンロードし、zipファイルを展開する。
- 展開したファイルの中からdid_you_pass_math_functions.phpとdid_you_pass_math.phpを取り出してwordpressのpluginディレクトリにぶっこむ。(このときdid_you_pass_math.phpはデフォルトの英語版の他にも各国語版が子ディレクトリに格納されていますので好きなのを選択してください。ちなみに日本語版は入っていません。)
- 管理画面でプラグインを有効にする。
以上です。これ以上特に設定するものもありません。
成功すればコメント投稿欄に新しく計算の答えを書く欄が追加されています。
(どうもURL記入欄の下にJavaScriptによって挿入されるようです。)
手順はこれだけなのですが、俺はプラグイン有効化の際に以下のようなエラーが発生し、惑わされました。
Parse error: syntax error, unexpected '}' ... うんたら
知ってる人にはわかるエラーです。
ソースファイルを開くと<?php
が省略されて<?にされている箇所がいくつかありました。
これが原因です。PHPの設定でshort_open_tag
がOffになっていると<?は利用できないからです。
XML宣言などと混同しない為なので設定は変えず、ソースコードの<?を全部<?phpに置き換えました。
これで無事動き出しました。
次にメッセージの日本語化です。これにより日本人向けになるだけでなく、国外のボットは解析が一層困難になる期待が持てます。
変更箇所は少なく単純明快です。did_you_pass_math.phpの14~16行目を以下のように書き換えます。
$dypm_strings['question'] = "%operand1 と %operand2 を足したらいくつですか?(スパム防止)";
$dypm_strings['wronganswer'] = "不正解です。正解しないとコメント投稿はできません。";
$dypm_strings['noanswer'] = "算数問題の答えを必ず記入してください。";
あくまで例です。ここで%operand1
と%operand2
は直上のコメントにも書いてあるとおり、出題用の数字に置き換わるので必ず埋め込んだ状態にします。
さて、このプラグインがどのくらい役に立つのか期待しています。
コメント