reCAPTCHAの不具合への対処は本当に面倒です。特に、読み込みが全く進まなかったり、無限に回転し続けたりするとなおさらです。ちょっと不思議な感じですが、ブラウザの不具合、広告ブロッカー、あるいはネットワーク制限が原因の場合もあります。開発者にとっては、設定ミスや古いスクリプトが原因となることもあります。この記事では、ログインしたいだけの場合でも、作業中のサイトのトラブルシューティングをする場合でも、両方の側面を網羅します。修正は驚くほど簡単な場合もありますが、原因を突き止めるのはまるで推測ゲームのように感じることもあります。
reCAPTCHAが機能しない問題を解決する方法
reCAPTCHA が読み込まれない、または回転し続ける
何が起こっていますか:
チェックボックスやチャレンジボックスが全く表示されない、あるいは読み込み中を示すスピナーが止まらない、といった状態です。設定によっては、スクリプトが応答待ちで停止しているような状態になることもあり、急いでいる場合はイライラさせられるかもしれません。
ユーザー向けの修正:
- ブラウザを最新バージョンに更新してください。GoogleはChrome、Firefox、Edgeなどの最新2つのメジャーバージョンを主にサポートしているため、古いバージョンをお使いの場合は正常に動作しない可能性があります。
- 設定でJavaScriptとCookieを有効にしてください。特にプライバシーやセキュリティ上の理由で無効にしている場合は、これが原因となることがよくあります。
- GhosteryやuBlock Originなどの広告ブロッカーを一時的にオフにするか、Googleのドメイン(www.google.com、apis.google.com、gstatic.com)をホワイトリストに登録してください。広告ブロッカーは邪魔をすることが多いので、注意が必要です。
- ブラウザのキャッシュをクリアするか、シークレットモードでサイトを開いてみてください。キャッシュされたスクリプトやCookieが動作に支障をきたす場合があります。
- 制限の厳しいネットワークや、Googleのドメインがブロックまたは厳重にフィルタリングされている国にいる場合は、ネットワークを切り替えるか、VPNを使用してください。当たり前のことのように思えますが、言及する価値はあります。
- どのブラウザが CAPTCHA に対応しているかを再確認し、重要な互換性が欠けていないか確認してください。Google で「reCAPTCHA 対応ブラウザ」と検索すると、リストが見つかります。
開発者向けの修正:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
v2 の場合は 、またはレンダリング パラメータ付きの v3 バージョン( など)が含まれていることを確認してください<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
。URL が見つからない、または間違っていることほどイライラするものはありません。- レンダリング前にウィジェットがモーダルまたは display: none div 内に隠れていないことを確認してください。reCAPTCHA は適切に初期化するために表示されている必要があります。
- キャプチャが初期状態で非表示になっている場合は、
grecaptcha.reset()
表示されるようになったら呼び出してください。そうしないと、正しく読み込まれない可能性があります。 - コンテンツセキュリティポリシー(CSP)ヘッダーを確認してください。特に厳格なCSPでデプロイする場合は、以下の権限が含まれていることを確認してください。
- https://www.google.com/recaptcha/
- https://www.gstatic.com/recaptcha/
- Google が地域ブロックされている場合は、代わりにhttps://www.recaptcha.net/recaptcha/api.jsに切り替えることを検討してください。
- ローカルテストの場合は、Google reCAPTCHA 管理コンソールの許可されたドメイン リストにlocalhostと開発ホスト名を追加します。
2.「reCAPTCHAサービスに接続できませんでした」
何が起こっていますか:
これは明白です。接続できなかったため reCAPTCHA の読み込みに失敗したというエラーが表示されます。通常は、ネットワークまたはファイアウォールがブロックしているか、インターネットが不安定な状態です。
ユーザー向けの修正:
- インターネット接続を確認してください。Googleを開いて読み込まれるかどうかを確認してください。読み込まれない場合は、ネットワーク全体に問題がある可能性があります。
- 別のネットワークに切り替えます。有線接続の場合は Wi-Fi、厳しい制限のある Wi-Fi の場合はモバイル データに切り替えます。
- 別のブラウザまたはデバイスを試してください。ブラウザによっては、スクリプトをより積極的にブロックする場合があります。
- アプリや埋め込みWebViewをご利用の場合は、DOMストレージとインラインスクリプトが許可されていることを確認してください。一部のアプリではこれらがデフォルトで無効になっており、CAPTCHAの動作に影響することがあります。
開発者向けの修正:
- ブラウザ コンソールで、BROWSER_ERROR やネットワーク障害などのエラーがないか確認してください。
- ネットワークに問題が発生した場合、reCAPTCHA の実行を再試行してください。一時的な不具合である場合もあります。
- Android WebView の場合、DOM ストレージが有効になっていることを確認します
settings.setDomStorageEnabled(true);
。 - 混合コンテンツエラーを回避してください。サイト全体でHTTPSを使用していることを確認してください。HTTP経由のスクリプトの読み込みはブロックされます。
- システムクロックが正しいことを確認してください。日付/時刻が大きくずれていると、SSL証明書エラーが表示される場合があります。
- サイトキーの検証のために、Google 管理コンソールでホワイトリストに登録された「localhost」ドメインを使用してローカルでテストします。
3.「サイトキーのドメインが無効です」
何が起こっていますか:
通常、「サイト所有者へのエラー: サイトキーのドメインが無効です」のようなメッセージが表示されます。つまり、キーが使用されている場所と一致していないということです。
開発者向けの修正:
- Google reCAPTCHA 管理コンソールにログインします。
- ホスティングしているドメインを正確に入力してください(例:example.comまたはsubdomain.example.com ) 。http:// や https:// は使用せず、ドメイン名のみを入力してください。
- 正しいバージョンのキーを使用してください。チェックボックス/非表示の場合はv2、スコアベースの場合はv3です。キーを混在させたり、間違ったバージョンを使用しないでください。
- それでも動作しない場合は、新しいキーを再生成し、サイトのコード内で更新してください。キーが失効したり期限切れになったりすることは意外とよくあることです。
ユーザー向けの修正:
- サイトにアクセスしただけでこのエラーが表示される場合は、おそらく開発者側の問題です。URLのwww付きバージョンまたはwwwなしバージョンにアクセスしてみてください。ドメインの不一致は、プロトコルまたはサブドメインだけの問題である場合もあります。
- そうでなければ、しばらくお待ちいただき、サイト管理者にご連絡ください。これは開発者による修正です。
4.「無効なサイトキー」または「無効なキータイプ」
何が起こっていますか:
CAPTCHA は壊れて表示されたり、キーの種類や無効なキーに関するエラーによりすぐに拒否されたりする可能性があります。
開発者向けの修正:
- サイト キーがウィジェットのバージョンと一致している ことを再確認します。
- v2 キーは v2 ウィジェット (チェックボックス、非表示) でのみ機能します
- v3キーはスコアベースのAPI用であり、v2フォームでは機能しません。
- エンタープライズ キーを使用していますか? API 呼び出しが正しく構成されていることを確認してください。
- サイトキーとシークレットキーを混同しないようにしてください。シークレットキーはサーバー側での検証のみに使用され、フロントエンドコードでは使用されません。
- 新しいキーを生成した場合、またはキーの種類を変更した場合は、必ず新しいキーでサイトを更新してください。古いキーや無効化されたキーはエラーの原因となる場合があります。
ユーザー向けの修正:
- これは開発者側の問題であることが多いため、このエラーが表示された場合、待つか更新する以外にできることはあまりありません。修正はサイト所有者側で行います。
5.reCAPTCHAは常に検証に失敗する
何が起こっていますか:
CAPTCHAを入力してもフォームが送信されない、または「認証に失敗しました」と表示されます。CAPTCHA自体は機能しているのに、サーバーがそれを拒否しているような感じで、かなりイライラします。
開発者向けの修正:
- サーバーのhttps://www.google.com/recaptcha/api/siteverifyへのPOSTリクエストを確認してください。正しい「secret」パラメータと「response」パラメータが含まれていることを確認してください。
- データを application/x-www-form-urlencoded として送信します。サーバー側で処理しない限り、JSON 文字列化しないでください。
- reCAPTCHA v3をご利用の場合は、スコアのしきい値をご確認ください。低いスコアのユーザーはシステムによってブロックされる場合があります。必要に応じて調整してください。
- サーバー ログを調べます。秘密キーが間違っているか、期限が切れているか、検証呼び出しがファイアウォールによってブロックされている可能性があります。
ユーザー向けの修正:
- もう一度 CAPTCHA を解いてみてください。画像が難しすぎる場合は、音声チャレンジに切り替えてください。
- キャッシュをクリアするか、別のブラウザを試してください。保存された Cookie やスクリプトが問題の原因となる場合があります。
- 何度試しても検証が失敗し続ける場合は、サイトのサポートに問題を報告してください。
6.「お使いのコンピュータまたはネットワークが自動クエリを送信している可能性があります」
何が起こっていますか:
この警告は、Google がネットワークが疑わしい、または自動化されていると判断した場合に表示されます。特に何らかの理由で IP がフラグ付けされている場合は、かなり煩わしいものです。
ユーザー向けの修正:
- 別のネットワークに切り替えて、VPN またはプロキシを切断してから、もう一度試してください。
- Google は通常、一時的なレート制限を解除するため、数時間または 1 日お待ちください。
- 特に共有 IP または動的 IP を使用している場合は、プロンプトが表示されたら、CAPTCHA チャレンジを完了して人間であることを証明してください。
開発者向けの修正:
- コードが CAPTCHA を繰り返し読み込みまたは再実行するループをトリガーしていないことを確認してください。
- 多くのユーザーがこの状態になった場合は、クールダウンやレート制限の実装を検討し、IP を切り替えるか、プロキシを一時的に無効にするようアドバイスしてください。
よくある質問
通常、広告ブロッカー、古いブラウザ、JavaScript の無効化、または厳格なプライバシー設定により、スクリプトが適切に読み込まれなくなります。
Google reCAPTCHA コンソールで localhost またはテストドメインをホワイトリストに登録すれば、通常は問題なく動作します。ただし、正しいドメインに正しいキーを使用していることを確認してください。
V2ではチェックボックスまたはチャレンジが表示され、V3では何も尋ねずにユーザーインタラクションをバックグラウンドでスコアリングします。ユーザーへの負担がどの程度許容されるかによって、V2とV3の目的は異なります。
はい、ただし、シークレット モードではプライバシー設定や広告ブロッカーが厳しくなり、スクリプトが正しく動作しないことがあります。
まとめ
reCAPTCHA がうまく動作しない場合は、ブラウザの不具合、ネットワーク制限、キーの設定ミスなどが複合的に影響していることが多いです。ユーザーにとっては、拡張機能を無効にしたり、ブラウザを更新したりするだけで解決できるかもしれません。開発者にとっては、スクリプトの設定、ドメインのホワイトリスト、API バージョンを確認することで問題が解決するかもしれません。キャッシュをクリアしたり、ネットワークを変更したりするだけで問題が解決する場合もあります。この記事が少しでも解決のヒントになり、時間の節約になれば幸いです。私自身、これらの問題の解決に非常に苦労したので、ぜひ共有したいと思います。