ブログ初心者・Web制作の情報サイト
Akismetは商用サイトでは無料で利用できない

Akismetは商用サイトでは無料で利用できない

WordPressでコメント欄を使用する際やアドセンス審査のためにお問い合わせフォームを用意することはよくあります。

その時に同時に考えないといけないのがスパム対策です。スパム対策は「Akismetがあるから大丈夫」と思っていませんか?

もしあなたが無料版のAkismetを使用している場合商用サイトでは使えなくなります。アドセンスやアフィリエイトを利用する場合は別の方法を考える必要があるのです。

この記事ではAkismetの代わりとなるスパム対策方法を紹介していきます。

AkismetのPersonalは商用サイトでは利用できない

Akismetの無料プランであるPersonalは商用利用ができません。Personal契約時の規約に以下の項目があります。

AkismetのPersonalは商用サイトでは利用できない
  • I don’t have ads on my site.
    自サイトに広告を貼っていません。
  • I don’t sell products/services on my site.
    自サイトで商品やサービスを売りません。
  • I don’t promote a business on my site.
    自サイトで商売の宣伝をしません。

例えばアドセンスの審査にまだ通っていなくて広告を貼っていないのであれば使用できますが、審査に通った後も使用していると規約違反になってしまいます。

アドセンスの審査にはお問い合わせフォームが必要と言われてます。その時に無料のスパム対策であるAkismetを導入しようと思う人もいるでしょう(私がそうでした)。

しかし実際にはほとんどの人が広告を貼るのでAkismetは有料になります。無料で使いたい場合は他の方法を探さなければいけません。

そこでAkismetの代わりとなる無料で使える有用なスパム対策を紹介していきます。

Akismetの代わりになるスパム対策

ここではWordPressのスパム対策について紹介します。

スパム対策が必要になる状況は「コメント欄を使用している」場合と「Contact Form 7を使ったお問い合わせフォームを設置している」場合の2つです。

  • コメント欄を使用している場合のスパム対策
    • Throws SPAM Away
  • Contact Form 7を使っている場合のスパム対策
    • メッセージ送信時のチェックボックスの追加
    • Contact Form 7のクイズ機能を使用する
    • Contact Form 7のアクションフィルターを利用する
    • reCAPTCHA

コメント欄はThrows SPAM Awayという便利なプラグインがあるためこれを利用するのがおすすめです。しかしThrows SPAM AwayはそのままではContact Form 7で使用できないので注意してください。

コメント欄を使用している場合のスパム対策

Throws SPAM Away の使い方

Throws SPAM Awayプラグイン

Throws SPAM Awayは海外スパムからコメント欄を守るための国産WordPressプラグインです。主に日本語の入っていないコメント投稿をブロックします。

Throws SPAM Awayはスパムの投稿をエラーメッセージ無しで送信したように見せかけ実際にはブロックします。スパム側はブロックされているか分からないわけです。

Throws SPAM Awayは以下のスパムフィルタを持っています。

  • 日本語の有無による判定
  • NGキーワードによる判定
  • 疑わしいリンク判定
  • ダミー項目を用いたスパム判定
  • IPアドレスによる判定
  • スパムフィルタによる判定

Throws SPAM Away

インストール方法

WordPress管理画面のプラグイン > 新規追加でプラグイン追加画面を開き検索ウィンドウに「Throws SPAM Away」と打てば表示されるのでインストール・有効化しましょう。

Throws SPAM Awayの管理画面

有効化するとメニュー欄にThrows SPAM Awayが追加されました。設定項目は多いですが初期設定は必要なくすぐに使用できます。

Contact Form 7の認証に使用する場合

Throws SPAM AwayはWordPressのコメント機能対して働くものでそのままではContact Form 7のお問い合わせフォームに対応していません

Contact Form 7の認証に使用する場合はfunctions.phpの編集が必要で中級者向けの内容になります。方法は開発者様の記事があるのでそちらを参考にしてください。

Throws SPAM AwayをContact Form 7で使用する方法

Contact Form 7を使っている場合のスパム対策

Contact Form 7のお問い合わせフォームにチェックボックスを追加する

Contact Form 7:チェックボックス

メッセージの送信時に確認用のチェックボックスを追加する方法を紹介します。

スパム対策としては効果が弱いですが誤送信の対策にもなるので追加しておくと便利です。

Contact Form 7:フォーム画面

フォームの編集画面で承諾確認をクリックします。

Contact Form 7:承諾確認画面

「チェックボックスを任意選択にする」のチェックを外し「タグ挿入」を押しましょう。これでチェックボックスが追加されました。

Contact Form 7のクイズ機能を使用する

Contact Form 7のクイズはその名の通り、クイズを出して正しい答えが入力されている場合のみ送信を行う機能です。フォームの下に文字や数字を入力する項目がよくありますが、それと同じような機能を持たせることができます。

クイズを使用すると海外スパムだけでなく日本語スパムもブロック可能です。

Contact Form 7のクイズ機能を使用する

Contact Form 7のクイズ機能を使用する

Contact Form 7のアクションフィルターを利用し日本語のない文章をブロックする

この方法は日本語のない文章をブロックするという点でThrows SPAM Awayと似ていますが簡易的な方法です。functions.phpを使用します。

機能面ではThrows SPAM Awayに劣りますが実装が簡単でThrows SPAM Awayをインストールする必要がありません。手っ取り早くお問い合わせフォームのスパム対策したい場合やコメント欄を使わない場合に適した方法と言えます。

導入方法は下記コードをfunctions.phpに追加するだけです。

functions.phpの編集方法と注意点

function wpcf7_validate_spam_message( $result, $tag ) {
    $subject = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-subject']));
    $message = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
    //題名
    if (!empty($subject)) {
      if (preg_match('/^[!-~]+$/', $subject)) {
        $result['valid'] = false;
        $result['reason'] = array('your-subject' => '日本語で入力して下さい');
      }
    }
    //メッセージ本文
    if (!empty($message)) {
        if (preg_match('/^[!-~]+$/', $message)) {
          $result['valid'] = false;
          $result['reason'] = array('your-message' => '日本語で入力して下さい');
        }
    }
    return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_spam_message', 10, 2 );

このコードは題名メッセージ本文別々に正規表現で日本語有無の判定を行っています。どちらかに日本語が無ければエラーになります。

元コード: Contact Form 7のスパムメール対策

reCAPTCHAを使用する

reCAPTCHAとは人間とWebボットを識別するための認証システムです。2020年5月現在、reCAPTCHA v3まで出ていますがサイトでよく使用されているのはreCAPTCHA v2です。

reCAPTCHA v2の認証は「私はロボットではありません」と表示されるもので追加の認証で信号機や横断歩道の画像を選ぶ時もあります。見たことがある人も多いと思います。

reCAPTCHA v3ではチェックマークも画像選択も無くなりユーザーへの負担が大幅に減っています。これから利用する人はreCAPTCHA v3を使うとよいでしょう。

スパム対策は面倒、でも必要

スパム対策は面倒です。特にWordPressの初心者で分からないことだらけの人にとっては後回しにしたい項目かもしれません。

  • スパム対策をしなくても最初のころはスパムが来ない。
  • スパム対策をしても確認しないので効果がよく分からない。

確かにそうかもしれませんがブログを長く続けているとスパムは次第に増えていきます。スパムは検索エンジンのようにサイトを巡回してコメント投稿できるフォームを探し、自動で迷惑メッセージを送ってくるのです。

スパムコメントはサイト運営者だけでなくユーザーにとっても迷惑なものです。スパムのリンクにユーザーがアクセスして被害を受けないようにするためにもスパム対策は必要でしょう。

不要なスパムに時間を取られないためにもスパム対策はしっかり行っておきましょう。