はじめに
私はこのブログを運用していますが、以前からスパムの問い合わせが届くようになりました😱
日本語スパム・英語スパムの両方で、今のところ日に10通程度届きます。
大抵のスパムは自動化されており、一度目をつけられると、ボットが手当たり次第に送ってくるでしょう。
さらにスパムが増えると、正しい問い合わせを見逃す可能性が高くなりますので、スパム対策を行いました。
Contact Form 7プラグインのバージョン 5.1 以上を対象としています。
(最新は5.4でした)
他にも私のブログで、WordPressについて解説している記事がありますのでご覧ください。
スパム対策
reCAPTCHA
reCAPTCHAは、Googleが提供しているスパム対策です。
無料で利用することができます。
月間1,000,000 回までですので、多くの場合は問題ないでしょう。

以前のバージョンでは、「私はロボットではありません」というチェックボックスでしたが、現行のv3では、バッググラウンドで動作するので、画像の選択などはありません。

Akismet
Akismetもスパム対策ですが、個人利用であれば無料ですが、商用利用の場合は有料になります。

商用利用の定義が記載されていました。

Is my site commercial?
https://akismet.com/plans/
If your site has advertising or affiliate links, sells products or services, solicits donations or sponsorships, or is in any way related to a business, nonprofit, or educational organization — your site is considered commercial.
While we rely on customers to self-select their plan, we do perform periodic audits of accounts to ensure the correct plan was selected.
私のサイトは商用ですか?
サイトに広告またはアフィリエイトリンクがある場合、製品またはサービスを販売する場合、寄付またはスポンサーシップを求める場合、または何らかの形で企業、非営利団体、または教育機関に関連している場合、サイトは商用と見なされます。
お客様が自分でプランを選択することを前提としていますが、正しいプランが選択されているかどうか、定期的に監査をしています。
Google Adsenseの広告や、アフィリエイトなどでも商用利用とのことでした。
私の場合、個人ブログではありますが、Adsenseを利用していました。
Plusプランの場合、月額900円(年払い)です。
アクセス数が多いサイトで、スパムによる業務圧迫など、そういったケースであれば有益かと思います。
私は今回、Akismetの導入は見送りました。

Contact Form 7にreCAPTCHAを設定
reCAPTCHAに登録
まずは、reCAPTCHAの設定を行います。
以下のサイトにアクセスします。
Googleアカウントでログインする必要があります。
アカウントを持っていない場合は作成します。

対象のサイトの情報を入力します。

利用条件を確認し、送信ボタンをクリックします。

reCAPTCHAにサイトを追加することができました。
ここでのサイトキーとシークレットキーは後ほど使用します。

Contact Form 7の設定
WordPressの管理画面から「お問い合わせ→インテグレーション」を開きます。

reCAPTCHAのインテグレーションのセットアップをクリックします。

reCAPTCHAに登録した後に表示された、サイトキーとシークレットキーを入力し、「変更を保存」ボタンをクリックします。

セットアップが完了しました。

Contact Form 7の確認
Contact Form 7自体の設定は不要のようです。(自動で反映)
サイトを開くと、右下に「reCAPTCHAで保護されています」と表示されたらOKです。
(微妙に邪魔なんですが・・😅)

とりあえず上記が表示されると、正常に動作しているようで、v2の時のように試験する術はないようです。
reCAPTCHAのマイページで結果が見れます。反応しているようです。
数日様子を見ていますが、まったく迷惑メールが来ません。👍

400, 403エラーが表示される場合
reCAPTCHA導入後、問い合わせを行うと、送信が完了しない現象が発生しました。
開発ツールで確認すると以下のようなエラーが発生していました。
https://xxx.com/wp-admin/admin-ajax.php?action=rest-nonce
https://xxx.com/wp-json/contact-form-7/v1/contact-forms/xxx/feedback?_locale=user
キャッシュプラグイン(WP Fastest Cache)の影響のようでした。キャッシュをクリアして直りました。
キャッシュをクリアした直後は直るのですが、暫く経つとエラーが発生していました。
仕方がないので、一旦キャッシュプラグインは無効にしました。

reCAPTCHAのアイコンを非表示にする方法
以下の公式サイトに、アイコンを非表示にする方法が記載されていました。
I’d like to hide the reCAPTCHA badge. What is allowed?

ちなみに、Invisible reCaptcha for WordPressというプラグインがあり、こちらの導入でもアイコンを非表示にできますが、現時点でPHP 8環境のためか、警告が表示されました。
Warning: The magic method InvisibleReCaptcha\MchLib\Plugin\MchBasePublicPlugin::__wakeup() must have public visibility in /home/xxx/public_html/wp-content/plugins/invisible-recaptcha/includes/plugin/MchBasePublicPlugin.php on line 37
プラグインの更新日がやや古いため、本件に関しては公式のやり方で対応するのがベストだと思います。
さいごに
本当にスパムって迷惑極まりないですよね。
余計なストレスを溜めないために、早めの対策をオススメします。😊
他にも私のブログで、WordPressについて解説している記事がありますのでご覧ください。
コメント