WordPressのブログを長く運営していると、投稿に対して無関係なスパムコメントが大量につくようになる。その数たるや、当ブログのような零細ブログであっても1日に数十件、多い時は100件を超える程になる。
これらのスパムコメントを、コメント欄に無条件に表示するようにしてしまっていては、ブログの訪問者に管理されていないサイトであるとの印象を与えるし、また検索エンジンからもスパムリンクを放置しているサイトということで、低い評価をもらってしまう。つまりSEO的にもかなり問題がある。
そこで、コメントはまず承認制にして、スパムコメントでないコメントを管理者のチェックにより表示させるようにしなければならない。でも、日に100件のコメントをいちいちチェックするのは面倒極まりない。
標準でついてくるAkismetプラグイン
WordPressの配布元もスパムコメントの問題については把握しており、いちいち人間の目を通してスパムチェックを行わなくても良いように、自動判別してくれるプラグインが付属している。それがAkismetで、ダッシュボードのプラグイン>インストール済みプラグインから勝手にインストールされていることが確認できる。
Akismetを有効にするには、インストール済みプラグインから有効化を選ぶだけでは不十分だ。Akismet API keyというものを、リンクから飛んで取得しないと行けない。そして(一応申告制なのでごまかせるのかもしれないが)ビジネスユースの場合には有料でキーを取得しなければならない。ということで、運営ブログがビジネスユースなのかそうでないのか判別がつきにくいケースなどでは、有料プランにするべきか不明瞭なこともあり、どうも導入に消極的になってしまう。
特定IPからのコメントをスパム判定する
そこで、Akismetを導入しないでもスパムチェックの手間を省く方法を考える。一日に100件のスパムコメントの中には、似たような内容のものが多いということに気付くだろう。実際、コメント元のIPアドレスは100種類も無く、同一IPアドレスからのスパム投稿が多い。つまり、IPアドレスのブラックリストを作ってしまい、リストに当てはまる投稿者のコメントをスパムに振り分けるようにしてしまえば良いのである。
特定IPをブラックリストに放り込むには、ダッシュボードの設定>ディスカッションでディスカッション設定のページに移動、コメントブラックリストという入力フィールドにIPアドレスを列挙すれば良い。単語の一致でも指定できるので、スパムコメントにありがちなブランド名等でもフィルタリングが行える。
IPアドレスは、スパムコメントの下に書いてある、192.168.0.0のような数字である。ただ、これをいちいち控えて、ブラックリストに加えて…という作業は面倒臭い。
Spammer Blockerプラグインを使う
そこで、コメントの一覧からスパム認定を行ったコメントのIPを自動で記録し、次回以降そのIPからのコメントはブロックするという挙動のプラグイン、Spammer Blockerを使うと便利である。
インストールはダッシュボード>プラグイン>新規追加から行えばよい。
インストールして有効化すると、一度スパム認定を行ったIPからのコメントをブロックする。スパム認定を行うわけではなく、そもそも投稿自体をブロックするので、スパムコメントがデータベース上に増えていくこともない。
なお、このSpammer BlockerによってブロックされているIPは、前段で説明したコメントブラックリストに蓄積される訳ではなく、独自のデータベースに貯まっていくことになる。ダッシュボード>設定>Spammer Blockerから設定画面が見られるが、Banned IP addressというセクションに一覧があるので、スパム認定の解除や管理などはここで行えば良い。
このプラグインを導入してからというものの、スパムコメントが多くても1日5件くらいまでに抑えられるようになった。つまり、1日5件くらいまでは新しいアドレスからスパムが来ていたということになるのだが、完璧なブロックを志すなら、コメントブラックリストやAkismetと組み合わせて対処するしかないのだろう。
ピンバック: スパムコメントが3日で1万件以上… | AkisiのWEB制作日記