自分だけのクイズ作成 - Quipha公開中

【Contact Form 7】スパムと戦う reCAPTCHAの設定

Wordpress
スポンサーリンク

はじめに

私はこのブログを運用していますが、以前からスパムの問い合わせが届くようになりました😱
日本語スパム・英語スパムの両方で、今のところ日に10通程度届きます。

大抵のスパムは自動化されており、一度目をつけられると、ボットが手当たり次第に送ってくるでしょう。
さらにスパムが増えると、正しい問い合わせを見逃す可能性が高くなりますのでスパム対策を行いました。

Contact Form 7プラグインのバージョン 5.1 以上を対象としています。
(最新は5.4でした)

スパム対策

reCAPTCHA

reCAPTCHAは、Googleが提供しているスパム対策です。
無料で利用することができます。
月間1,000,000 回までですので、多くの場合は問題ないでしょう。

料金  |  reCAPTCHA Enterprise  |  Google Cloud
reCAPTCHA Enterprise の料金を確認する

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

Akismet

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

Plans and Pricing - Choose the right plan | Akismet - Akismet
You’ve got options with Akismet. From personal blogs to large networks and everything in between, we have you covered.

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

Is my site commercial?
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.

https://akismet.com/plans/

私のサイトは商用ですか?
サイトに広告またはアフィリエイトリンクがある場合、製品またはサービスを販売する場合、寄付またはスポンサーシップを求める場合、または何らかの形で企業、非営利団体、または教育機関に関連している場合、サイトは商用と見なされます
お客様が自分でプランを選択することを前提としていますが、正しいプランが選択されているかどうか、定期的に監査をしています。

Google Adsenseの広告や、アフィリエイトなどでも商用利用とのことでした。
私の場合、個人ブログではありますが、Adsenseを利用していました。

Plusプランの場合、月額900円(年払い)です。
アクセス数が多いサイトで、スパムによる業務圧迫など、そういったケースであれば有益かと思います。
私は今回、Akismetの導入は見送りました

Contact Form 7にreCAPTCHAを設定

reCAPTCHAに登録

まずは、reCAPTCHAの設定を行います。
以下のサイトにアクセスします。

ログイン - Google アカウント

Googleアカウントでログインする必要があります。
アカウントを持っていない場合は作成します。

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

設定例
  • ラベル:任意。ドメインにしました。
  • reCAPTCHAタイプ:v3を選択しましょう。
  • ドメイン:スパム対策を行いたいサイトのドメインを入力します。(xxx.comのように入力)
  • オーナー:ログインしている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?

Frequently Asked Questions  |  reCAPTCHA  |  Google Developers

ちなみに、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

プラグインの更新日がやや古いため、本件に関しては公式のやり方で対応するのがベストだと思います。

さいごに

本当にスパムって迷惑極まりないですよね。
余計なストレスを溜めないために、早めの対策をオススメします。😊

コメント

タイトルとURLをコピーしました