今回はconcrete5のreCAPTHAエラー対応の記事です。
エラー内容としては、concrete5で申し込みフォームなどのcaptcha適用のあるページへジャンプする際に
「captchaの入力が間違っていました。」
と赤文字のエラーメッセージが表示されました。
(reCAPTCA v3の認証方法を採用した場合ですが、SecurlImageの場合でも同様かと)
この場合に解決できた方法をお伝えします。
目次
「captchaの入力が間違っていました。」のエラーメッセージとreCAPTCHA v3について
エラーメッセージは「captchaの入力が間違っていました。」です。
(下の画像参照)
私のケースでは、Captcha設定にてreCAPTCHA v3を採用している場合の対処法ですが
v2でも同様に解決できる可能性はあります。
captchaそのものの設定や確認をしたい場合は
管理画面 > 権限とアクセス > Captcha設定
に項目があります。
それそもreCAPTHA v3では、かつてv2の時に「私はロボットではありません」のチェックボックスのクリックが必要だったものが、不要になった新しいバージョンです。
代わりに、ページ内のユーザー挙動を計測することでbotかどうかを判別しています。
参考: Google ウェブマスター向け公式ブログ [JA] : reCAPTCHA v3 をご紹介します。Bot の活動を阻止する新しい方法
つまり、v3はそもそも入力がまったく不要なのに、このようなメッセージが出るということは
「reCAPTHAが正常に動作しておらず、何かしらのエラーが発生している」とみていいでしょう。
なお、concrete5デフォルトの認証方法である画像認証(SecurlImage)へと変更し、画像に表示された英数字をボックスに入力する認証方法へと変更して試してみましたが、同様のエラーが発生しました。
したがって、reCAPTHA固有のエラーではなく、サイト側の設定に問題があるものと考えました。
concrete5管理画面からサイトキャッシュ設定を見直す
まず真っ先に疑ったのが、サイトキャッシュが何かしらの影響を及ぼしている可能性です。
キャプチャエラーが発生する前、該当画面とは全く異なるページを編集しました。
しかし、関係ないページとは言えサイト全体のキャッシュに影響を及ぼしている可能性もあるのでは、と考えました。
concrete5公式にも、下記ような記載があります。
concrete5のどんな問題を解決するさいにも、サイトキャッシュを無効にする、あるいはキャッシュをクリアすることを強くおすすめします。このことで、お使いのサイトで古いリソースを読み込んでいる可能性を排除できます。サイトの構築中はキャッシュを無効にしておくことをおすすめします。
ログとデバッグ :: concrete5 Japan 日本語公式サイト
一旦すべてのキャッシュ設定を無効に
一旦すべてのキャッシュ設定を無効化し、その場合に正常に動作するかチェックをします。
キャッシュ設定の場所は
管理画面 > システムと設定 > 最適化 > キャッシュと表示速度設定
にあります。
この先のキャッシュ設定ページから、キャッシュ設定を全て「無効」にします。
その後、現時点でconcrete5サイトが保有しているキャッシュを一旦すべてクリアします。
管理画面 > システムと設定 > 最適化 > キャッシュをクリア
の先から、サイトのキャッシュクリアを行います。
上記の作業を行うと、無事にreCAPTHAが動作することを確認できました!
CSSとJavascriptキャッシュの設定が原因
さて、キャッシュ設定が原因と言うことがわかりました。
しかし、すべてのキャッシュ設定を無効にしたままサイトを公開運用する事は、表示スピードの観点からあまり現実的ではありません。
そこで次に、「どのキャッシュ設定がreCAPTHAエラーに影響及ぼしているのか」を検証します。
concrete5公式よりキャッシュ設定の種類を確認していくと…
CSSとJavascriptキャッシュ
このオプションが有効の時、JavascriptとCSSアセットを結合・圧縮し、HTTPリクエストを減らすことでサイトの表示速度を向上させることができます。
キャッシュとスピード設定 :: concrete5 Japan 日本語公式サイト
(↑キャッシュ設定それぞれの意味が説明されているので、一読しておくことをおすすめします)
HTTPリクエストに影響を及ぼしているということは、これが原因では…?ということで、「CSSとJavascriptキャッシュ」のみを無効。
その他のキャッシュ設定を有効にしていても、無事にreCAPTHAエラーを解消することができました。
reCAPTHAのスパム判定スコアを緩める
reCAPTHAのスコアを緩めて、人間をスパムと判定されにくいようにする
サイトキャッシュ設定によるエラー解除が済んだところで、1つやっておいた方が良い設定があります。
それは、 「reCAPTHAのスパム判定スコアを緩める」というものです。
前述の通り、reCAPTHA v3ではユーザの挙動を計測し、自動的にスパムかどうかを振り分けブロックします。
このスパム判定基準が厳しいと、実際は人間であるのに、誤ってスパムだとみなしユーザをブロックしてしまう可能性があるのです。
そこで、reCAPTHAのスパム判定スコアを少しだけ緩めておくことをおすすめします。
reCAPTHAのスパム判定スコアの設定場所は
システムと設定 > 権限とアクセス > Captcha設定
の「スコア」の項目です。
初期値でのスコア判定は0.5となっています。
この値が1に近づくにつれ、1に近いユーザー(=おそらく人間)をもブロックしてしまう厳しい判定となります。
本ページのreCAPTHAエラーが発生しているサイトの場合では、0.4〜0.2程度にスコアを緩めておいてもいいかもしれません。
reCAPTHAエラーによるエラーがどれくらい発生しているのかをレポートで把握する
なお、Captcha設定画面の最下部「オプション」で「失敗したやりとりのスコアをログする」にチェックを入れておくと、reCAPTHAによって弾かれたアクションをレポートから確認することができます。
エラーレポートの場所は
管理画面 > レポート > ログ
となります。
このログ内容のうち、「reCAPTCHAバリデーションでエラー」というメッセージとなっているのが、reCAPTHAエラーによってブロックされたアクションとなります。
他の内容が多くあって埋もれてしまっている場合には、「チャンネル」の項目から「スパム」を選択して絞り込んでログを確認してみると良いでしょう。
concrete5有料テーマを使用している場合、マーケットプレイスとの接続が原因の可能性も。再認証手続を行う
有料テーマ等、マーケットプレイスからテーマをダウンロードしている場合において見直した方がよい設定が1つあります。
それは、マーケットプレイスとの接続を確認することです。
今回のようなreCAPTCHAエラーに関しては基本的にはサイトキャッシュ設定に原因があることが多いですが、見直しておいた方がよい設定の1つではあるので、念のため以下に記載を残しておきます。
私の場合、有料テーマをconcrete5公式マーケットプレイスにて購入し運用していました。
この有料テーマ、何らかの事情でたまにマーケットプレイスと使用しているテーマとの接続が切れてしまう場合があります。
その場合、再度マーケットプレイスのアカウントと繋ぎ合わせる必要(再認証)があります。
有料テーマのみならず、マーケットプレイス上からテーマをダウンロードしている場合には起こりうる現象です。
マーケットプレイスのアカウントとの接続ができているかの確認は
管理画面 > concrete5を拡張
のページで確認できます。
この「プロジェクトページ」の項目において、接続が途切れている場合には
「サイトのベースURLが、マーケットプレイスに登録されている言われると一致していません。以下のリンクをクリックしサイトを再認証してください」
と警告メッセージが出ます。
指示に従って「コミュニティに再接続」をクリック。
concrete5マーケットプレイスのIDとパスワードを入力します。
認証が完了すれば、マーケットプレイスと再接続できているはずです。
以上の手順をすべて試した後、Captchaの設定してあるページで動作確認し、実際に動作することが確認できたら、完了です。
動作確認の際、一旦ログアウトをしてから、ゲストユーザーとしてテスト検証することを忘れないようにしてくださいね。
Leave a Reply