Использование reCAPTCHA на localhost - PullRequest
242 голосов
/ 13 июля 2010

Я занимаюсь разработкой веб-сайта с использованием PHP и хочу провести проверку на одном из сеансов. Для разработки я изначально запускаю систему локально, и когда она будет готова, я включу ее в определенном домене.

На сайте reCAPTCHA сказано, что плагин будет работать только на данном домене (и поддоменах).

Мой вопрос: есть ли способ использовать плагин reCAPTCHA на локальном хосте?

Ответы [ 14 ]

305 голосов
/ 03 апреля 2012

Обновление

Первоначальный ответ больше не является правильным. Руководство разработчика теперь гласит:

«Если вы хотите использовать« localhost »для разработки, вы должны добавить его в список доменов.»

Это будет работать, только если вы используете localhost, используя 127.0.0.1/... вместо localhost/....

Оригинальный ответ сохраняется ниже.


Согласно Руководству разработчика reCAPTCHA :

"локальные домены больше не поддерживаются по умолчанию. Если вы хотите продолжить поддерживать их для разработки, вы можете добавить их в список поддерживаемых доменов для вашего ключа сайта. Перейдите в консоль администратора, чтобы обновить список поддерживаемых доменов. Мы советуем использовать отдельный ключ для разработки и производства и не разрешать использование localhost на ключе вашего рабочего сайта. "

Другими словами, просто используйте ту же клавишу.

94 голосов
/ 16 июля 2016

Обратите внимание, что с 2016 года ReCaptcha наивно не поддерживает localhost . Из FAQ:

локальные домены больше не поддерживаются по умолчанию. Если вы хотите продолжать поддерживать их для развития, вы можете добавить их в список поддерживаемых доменов для вашего ключа сайта. Перейдите в консоль администратора, чтобы обновите список поддерживаемых доменов. Мы советуем использовать отдельный ключ для разработки и производства и не допустить localhost на вашем ключ производственной площадки.

Так что просто добавьте localhost в свой список доменов для своего сайта, и все будет хорошо.

50 голосов
/ 14 января 2017

Это так просто:

  1. Перейдите в админ-панель Google ReCaptcha
  2. Добавьте localhost & 127.0.0.1 в домены нового сайта, напримерследующее изображение.

enter image description here


Обновление:

Если ваш вопрос какустановить reCaptcha на сайте Google для использования его в localhost, тогда я уже писал об этом выше, но если вам интересно, как можно использовать reCAPTCHA на и localhost и website host минимальное количество кодов в вашем контроллере и исключение некоторых кодов, таких как ConfigurationManager.AppSettings["ReCaptcha:SiteKey"], тогда я помогу вам с этим дополнительным описанием и кодами в моем ответе.

Вам нравится следующее GET?и действия POST?

Он поддерживает reCaptcha и не требует никаких других кодов для обработки reCaptcha.

[HttpGet]
[Recaptcha]
public ActionResult Register()
{
    // Your codes in GET action
}

[HttpPost]
[Recaptcha]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel model, string reCaptcha_SecretKey){
   // Your codes in POST action
   if (!ModelState.IsValid || !ReCaptcha.Validate(reCaptcha_SecretKey))
   {
       // Your codes
   }
   // Your codes
}

В Просмотр: ( ссылка )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

@if (ViewBag.RecaptchaLastErrors != null)
{
    <div>Oops! Invalid reCAPTCHA =(</div>
}

Для использования

A) Добавить следующееActionFilter в ваш веб-проект:

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>

Примечание: Таким образом, вам не нужно было устанавливать параметр reCaptcha_SecretKey в пост-действии или любой ViewBag для reCaptcha вручную в ваших действиях и представлениях, все они будут заполнены автоматически привремя выполнения с соответствующими значениями в зависимости от того, запустили ли вы проект на локальном хосте или веб-сайте. ?

41 голосов
/ 19 января 2017

Это сработало для меня:

"Со следующими тестовыми ключами вы всегда получите CAPTCHA, и все запросы на подтверждение пройдут.

Ключ сайта: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Секретный ключ: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Виджет reCAPTCHA отобразит предупреждающее сообщение о том, что это только для целей тестирования. Пожалуйста, не используйте эти ключи для рабочего трафика. "

Извлеченоотсюда: https://developers.google.com/recaptcha/docs/faq

BR!

8 голосов
/ 26 августа 2016

Google недавно изменился, прекратив разрешать локальный хост по умолчанию.(как затронуто @Artur Cesar De Melo) Это в их FAQ:

Я получаю сообщение об ошибке "Localhost отсутствует в списке поддерживаемых доменов".Это работало раньше, что мне делать?

localhost домены больше не поддерживаются по умолчанию.Если вы хотите продолжить поддерживать их для разработки, вы можете добавить их в список поддерживаемых доменов для ключа вашего сайта.Перейдите в консоль администратора, чтобы обновить список поддерживаемых доменов.Мы рекомендуем использовать отдельный ключ для разработки и производства и не разрешать использование localhost на вашем производственном сайте.

1: Создать отдельный ключ для вашей среды разработки

2: Добавить127.0.0.1 к списку разрешенных доменов

3: Сохраните изменения и подождите до 30 минут, чтобы изменения вступили в силу

4 голосов
/ 25 января 2018

Удалить текущий ключ REcaptcha, затем зарегистрировать новый ключ и установить настройки ключа с доменами: 127.0.0.1 localhost

4 голосов
/ 17 июля 2016

Согласно Документация Google recaptcha

локальные домены больше не поддерживаются по умолчанию. Если вы хотите продолжать поддерживать их для развития, вы можете добавить их в список поддерживаемых доменов для вашего ключа сайта. Перейдите в консоль администратора, чтобы обновите список поддерживаемых доменов. Мы советуем использовать отдельный ключ для разработки и производства и не допустить localhost на вашем ключ производственной площадки

3 голосов
/ 22 сентября 2017

Recaptcha не будет работать на localhost/

Use `127.0.0.1/` instead of `localhost/`
1 голос
/ 30 декабря 2017

Вы можете написать «localhost» или «127.0.0.1», но URL должен быть одинаковым

Пример: Google Domains Add-> localhost URL => localhost / login.php

Пример: Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php

1 голос
/ 08 декабря 2017

https://developers.google.com/recaptcha/docs/domain_validation

Проверьте часть, где говорится, что вы можете отключить проверку.Только делай это для развития.

...