PHPを使用してWebサイトを開発していますが、いずれかのセッションで人間による検証を行いたいと考えています。開発のために、私は最初にシステムをローカルで実行していて、準備ができたら、それをいくつかのドメインに配置します。
reCAPTCHA Webサイトでは、プラグインは特定のドメイン(およびサブドメイン)でのみ機能すると言われています。
ローカルホストでreCAPTCHAプラグインを使用する方法はありますか?
PHPを使用してWebサイトを開発していますが、いずれかのセッションで人間による検証を行いたいと考えています。開発のために、私は最初にシステムをローカルで実行していて、準備ができたら、それをいくつかのドメインに配置します。
reCAPTCHA Webサイトでは、プラグインは特定のドメイン(およびサブドメイン)でのみ機能すると言われています。
ローカルホストでreCAPTCHAプラグインを使用する方法はありますか?
元の答えはもはや正しくありません。開発者ガイドには、次のように記載されています。
「開発に「localhost」を使用する場合は、ドメインのリストに追加する必要があります。」
127.0.0.1/...
これは、ではなくを使用してlocalhostにアクセスする場合にのみ機能しますlocalhost/...
。
元の答えは以下に保存されています。
reCAPTCHA開発者ガイドによると:
「ローカルホストドメインはデフォルトでサポートされなくなりました。開発のために引き続きサポートする場合は、サイトキーのサポートされているドメインのリストに追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新することをお勧めします。開発と本番用に別々のキーを使用し、本番サイトのキーでローカルホストを許可しないようにします。」
つまり、同じキーを使用するだけです。
これは私のために働いた:
reCAPTCHAドキュメントからの抜粋:
次のテストキーを使用すると、常にCAPTCHAが取得されず、すべての検証リクエストに合格します。
サイトキー:
6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
秘密の鍵:
6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
reCAPTCHAウィジェットには、テスト目的のみであると主張する警告メッセージが表示されます。これらのキーを本番トラフィックに使用しないでください。
2016年以降、 reCAPTCHAはローカルホストを単純にサポートしなくなったことに注意してください。FAQから:
ローカルホストドメインは、デフォルトではサポートされなくなりました。開発のためにそれらを引き続きサポートしたい場合は、サイトキーでサポートされているドメインのリストにそれらを追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新します。開発と本番用に別々のキーを使用し、本番サイトのキーでローカルホストを許可しないことをお勧めします。
localhost
あなたのサイトのドメインのリストに追加するだけで、うまくいくでしょう。
非常に簡単:
localhost
&を追加します。127.0.0.1
アップデート:
あなたの質問がローカルホストでそれを使用するためにGoogleサイトでreCAPTCHAを設定する方法である場合、それは私が上で書いたようですが、あなたが両方 localhost
でreCAPTCHAを使用する方法とあなたのコントローラーwebsite host
の最小限のコードでそのようないくつかのコードConfigurationManager.AppSettings["ReCaptcha:SiteKey"]
、それから私は私の答えのこの追加の説明とコードであなたを助けます。
次のGETおよびPOSTアクションが好きですか?
以下のコードはreCAPTCHAをサポートしており、reCAPTCHAを処理するために他のコードは必要ありません。
[HttpGet]
[Recaptcha]
public ActionResult Register()
{
// Your code in the GET action
}
[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
// Your code in the POST action
if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
{
// Your code
}
// Your code
}
ビュー内:(参照)
@ReCaptcha.GetHtml(@ViewBag.publicKey)
@if (ViewBag.RecaptchaLastErrors != null)
{
<div>Oops! Invalid reCAPTCHA =(</div>
}
使用するには
A)ActionFilter
Webプロジェクトに以下を追加します。
public class RecaptchaAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
filterContext.ActionParameters["ReCaptcha_SecretKey"] = ConfigurationManager.AppSettings[$"{setting_Key}:SecretKey"];
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
var setting_Key = filterContext.HttpContext.Request.IsLocal ? "ReCaptcha_Local" : "ReCaptcha";
filterContext.Controller.ViewBag.Recaptcha = ReCaptcha.GetHtml(publicKey: ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"]);
filterContext.Controller.ViewBag.publicKey = ConfigurationManager.AppSettings[$"{setting_Key}:SiteKey"];
}
}
B)両方のreCAPTCHA設定キーをファイルに追加localhost
しwebsite
ます。webconfig
<appSettings>
<!-- RECAPTCHA SETTING KEYS FOR LOCALHOST -->
<add key="ReCaptcha_Local:SiteKey" value="[Localhost SiteKey]" />
<add key="ReCaptcha_Local:SecretKey" value="[Localhost SecretKey]" />
<!-- RECAPTCHA SETTING KEYS FOR WEBSITE -->
<!--<add key="ReCaptcha:SiteKey" value="[Webite SiteKey]" />
<add key="ReCaptcha:SecretKey" value="[Webite SecretKey]" />-->
<!-- OTHER SETTING KEYS OF YOUR PROJECT -->
</appSettings>
注:この方法では、アクションとビューでpostアクションreCaptcha_SecretKey
のパラメーターやreCaptchaのパラメーターを手動で設定する必要はありませんでした。これらはすべて、ローカルホストまたはWebサイトでプロジェクトを実行したかどうかに応じて、実行時に適切な値で自動的に入力されます。ViewBag
Google reCAPTCHAにドメインを追加する場合:
新しいドメインを追加します。
ローカルホストではなくローカルホスト
「L」は大文字です。
2021年1月2日の時点で、Googleはこの記事でテスト用にこれら2つのキーを投稿しました。
reCAPTCHAで自動テストを実行したいのですが。私は何をすべきか?reCAPTCHA v3の場合、テスト環境用に別のキーを作成します。reCAPTCHA v3は実際のトラフィックの確認に依存しているため、スコアが正確でない場合があります。
reCAPTCHA v2の場合は、次のテストキーを使用します。常にキャプチャは取得されず、すべての確認リクエストに合格します。
Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
reCAPTCHAウィジェットは、本番トラフィックに使用されていないことを確認するための警告メッセージを表示します。
生成された電子メールは、私が初めてキーを使用したときにスパムになりました。
現在のreCAPTCHAキーを削除し、新しいキーを登録して、次のドメインでキー設定を設定します。
127.0.0.1
localhost
Googleは最近、ローカルホストのデフォルトでの許可を停止しました(@Artur Cesar De Meloが触れたように)。これは彼らのFAQの下にあります:
「ローカルホストはサポートされているドメインのリストにありません」というエラーが表示されます。これは以前は機能していましたが、どうすればよいですか?
localhostドメインはデフォルトでサポートされなくなりました。開発のためにそれらを引き続きサポートしたい場合は、サイトキーでサポートされているドメインのリストにそれらを追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新します。開発と本番用に別々のキーを使用し、本番サイトのキーでローカルホストを許可しないことをお勧めします。
1:開発環境用に別のキーを作成します
2:許可されたドメインのリストに127.0.0.1を追加します
3:変更を保存し、変更が有効になるまで最大30分待ちます
reCAPTCHAはでは機能しませんlocalhost/
。
127.0.0.1/
の代わりに使用してくださいlocalhost/
。
GoogleのreCAPTCHAドキュメントによる
localhostドメインはデフォルトでサポートされなくなりました。開発のためにそれらを引き続きサポートしたい場合は、サイトキーでサポートされているドメインのリストにそれらを追加できます。管理コンソールに移動して、サポートされているドメインのリストを更新します。開発と本番用に別々のキーを使用し、本番サイトのキーでローカルホストを許可しないことをお勧めします
https://www.google.com/recaptcha/adminでウェブサイトを登録します
JavaScriptプラグインを追加します
Googleが提供するクラスとサイトキーを追加します
localhostが機能するようになりました。ただし、ドメイン名のリストにlocalhostを追加した後、有効になるまでに最大30分かかることに注意してください(ドメイン名リストに対して表示されるヘルプのヒントによると)。
Google reCAPTCHA Webサイトのドメインリスト(https://www.google.com/recaptcha/admin/site/{siteid}/settings)に、を追加しLOCALHOST
ます。
上記がうまくいかない場合は、追加してみてください127.0.0.1
。
古いキーがある場合は、APIキーを再作成する必要があります。プロキシにも注意してください。
「localhost」または「127.0.0.1」と書くことができますが、URLは同じである必要があります。
例:Googleドメイン追加->ローカルホストURL => localhost / login.php
例:Googleドメイン追加-> 127.0.0.1 URL => 127.0.0.1 / login.php
最近、reCAPTCHA v2を含むWebサイトの作成に取り組んでおり、ローカルホストでテスト自動化を行う必要がありました。reCAPTCHA管理ポータルにIPアドレスまたはローカルホストを追加しませんでした。
以下の手順に従ってください
reCAPTCHA管理サイトにログインします。スクリーンショット
キー設定を見つける
詳細設定をクリックします
[ドメイン名の検証]で、[reCAPTCHAソリューションの発信元を確認する]チェックボックスをオフにします。このオプションは、上記のドメインのいずれかからのリクエストを確認するために使用されます。
無効にした場合、ソリューションを検証するときにサーバーのホスト名を確認する必要があることに注意してください。
新しいキーを作成し、これを無効にして、ローカルホストでのテストにこのキーを使用しました。
これは、コメント用のreCAPTCHAを実装するサンプルページです。
2021年の今日の時点で、Google reCAPTCHA Enterpriseバージョンコンソールには、許可されたドメインのリストへの追加を許可しない検証チェックが含まれています。localhost
これを回避するには(明らかに開発/テストの目的でのみ)、次の作業を行います。
ドメインをローカルホストに解決するエントリをhostsファイルに作成します
127.0.0.1 whatever-your-domain-will-be.com
ローカルホストに移動するのではなく、ドメインに移動してアプリケーションをテストします。
私のローカルサーバー/アプリは通常http:// localhost:4000で実行されるので、http://whatever-your-domain-will-be.com:4000に移動するとうまくいきました。
デプロイまたはテストが完了すると、hostsファイルエントリを削除するのは簡単で、reCAPTCHAの許可されたドメインのリストにゴミが残りません。
これは、ローカルホストでreCAPTCHAに問題があるすべてのユーザーを支援している可能性があります。Googleは確かに「デフォルトでは、すべてのキーは「localhost」(または「127.0.0.1」)で機能します」と言っていますが、実際にはlocalhostでreCAPTCHAを使用すると問題が発生する可能性があります。私の場合、安全なトークンを使用して解決しました。
テストの目的で、ローカルホストでreCAPTCHAを含むWebページをテストする場合は、管理コンソール2(https://www.google.com/recaptcha/admin)でドメインリストにローカルホストを追加します。*ローカルホスト用に別のサイトキーを作成することをお勧めします。
私にとってうまくいった方法は、私の外部IPアドレスを使用することでした。
それが何であるかわからない場合は、「What'smyIP」をグーグルで検索してください。
次に、IPアドレスを使用して、キャプチャ用のドメインにこれを設定すると、正常に機能し始めます。
Laravelを使用している場合は、サーバーを再起動して、次の2つのコマンドを実行する必要があります。
php artisan config:clear
php artisan cache:clear
LaravelのWebサイトでreCAPTCHAに関連するエラーが発生しました。私はいくつかのコマンドとenvファイルを使用してそれを解決しました、そして以前の答えもこの問題に役立ちます。
まず、envファイル(この場合は、Google reCAPTCHAキーを持つファイル)でGooglereCAPTCHAキーを確認します。
次に、次のコマンドを実行します。
php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan view:clear
php artisan route:clear
それはあなたの問題を解決します。