Использование reCAPTCHA на localhost

286

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

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

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

RLC
источник
Очистите куки, если вы добавили localhost после факта.
Майк Флинн
3
в списке доменов просто введитеlocalhost
csandreas1

Ответы:

357

Обновить

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

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

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

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


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

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

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

Натан Осман
источник
8
Я проверил, чтобы подтвердить, были ли слова на этой странице. Это прошло! В 2015 году вы можете найти приведенную выше цитату @ developers.google.com/recaptcha/docs/start
Джошуа Плик,
11
Этот ответ точен, но есть одна важная оговорка, которая озадачила меня: при переходе с reCAPTCHA v1 на v2 необходимо заново сгенерировать ключи API, чтобы это сообщение исчезло. Кроме того, что не менее важно, если вы похожи на меня и настраиваете тестовые домены в своей локальной среде / среде разработки, помещая записи в файл «hosts» операционной системы, вам нужно будет добавить эти «поддельные» домены в разрешенные домены для рассматриваемая учетная запись reCAPTCHA для устранения ошибки «ОШИБКА: неверный домен для ключа сайта».
Бен Джонсон
5
Когда ваш localhost не называется "localhost", он не работает.
Hexodus
12
Google, похоже, удалил возможность тестирования на localhost.
IrishChieftain
4
хотя localhost у меня не работал, я смог использовать как 127.0.0.1, так и адрес * .xip.io.
Давидбейтс
104

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

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

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

CC Inc
источник
12
Я добавил, localhostно все еще получаю сообщение об ошибке «Localhost не является списком поддерживаемых доменов для этого ключа сайта».
aadi1295
6
@ArbazAbid Возможно, вам придется подождать час или около того, чтобы Google обновил свою систему ...
CC Inc
1
Кроме того, если у вас много проектов и вы настроили файл хостов Windows и VirtualHosts, например, в WAMP, его можно найти здесь C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, затем зарегистрируйте свой Проект ServerName. Проверено и работает отлично.
Джеффз
@Jeffz Файл hosts не специфичен для Windows - это хороший общий совет.
Натан Хорнби
82

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

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

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

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

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

Извлечено отсюда: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!

Pablo
источник
1
здорово! Спасибо за это.
Сэм
1
Если это перестанет работать, я переключусь на решение Automattic. Ваше решение здесь - единственное, что мешает мне отказаться от этой надоедливой технологии.
PJ Brunet
1
похоже, это «правильный ответ», поскольку он отличает вашу среду разработки от среды разработки.
ChronoFish
67

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

  1. Зайдите в админ панель Google ReCaptcha
  2. Добавьте localhost& 127.0.0.1в домены нового сайта, как показано ниже.

введите описание изображения здесь


Обновить:

Если ваш вопрос заключается в том , чтобы установить reCaptchaна сайте Google для использования в локальном хосте, то я уже написал выше , но если вам интересно , что , как вы можете , используя 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>
}

Использовать его

А) Добавьте следующее 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"];
    }
}

Б) Добавить 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параметр в действии post или ViewBagвручную для reCaptcha в ваших действиях и представлениях, все они будут автоматически заполняться во время выполнения соответствующими значениями в зависимости от того, запустили ли вы проект на локальном хосте или веб-сайте. .😉

ОЗУ
источник
17

когда вы добавляете домены в Google recaptcha

Добавить новый домен: Localhost, а не localhost

«L» - заглавная буква

Удачи

Йони Аялон
источник
8

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

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

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

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

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

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

tony09uk
источник
5

Согласно документации ReCaptcha Google

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

Артур Сезар Де Мело
источник
5

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

Михайло
источник
3

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

Use `127.0.0.1/` instead of `localhost/`
alianjum0
источник
Чем этот ответ отличается от принятого?
Смотт
1
Это более простая версия принятого. Оба ответа неверны в принятом. Для 1) Вам не нужно добавлять localhost в список принятых доменов. Для 2) Это не работает с localhost.
alianjum0
2
  1. Зарегистрируйте свой веб-сайт по адресу - https://www.google.com/recaptcha/admin.
  2. добавьте js-плагин 3.add класс и ваш ключ сайта, предоставленный Google введите описание изображения здесь
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Сакиб Азам
источник
1

Если у вас есть старый ключ, вы должны восстановить свой ключ API. Также будьте в курсе прокси.

Сохейл Новинфард
источник
В чем проблема с прокси? Прокси должен разрешить связь обратно из Google API?
smoore4
1
@SQLDBA Либо он не настроен должным образом, либо новое местоположение (IP) получено из стран, на которые распространяется санкция, это может вызвать некоторые проблемы.
Сохейл Новинфард
1

Вы можете написать «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

localhost работает сейчас. Однако помните, что после добавления localhost в список доменных имен вступает в силу до 30 минут (в соответствии с подсказкой, приведенной для списка доменных имен).

Гаутам Джайн
источник
0

Да, это старый вопрос, но он может помочь всем пользователям, имеющим проблемы с reCaptcha на localhost. Google действительно говорит: «По умолчанию все ключи работают на« localhost »(или« 127.0.0.1 »)», но при реальном использовании reCaptcha на localhost могут возникнуть проблемы. В моем случае я решил мой, используя безопасный токен

Я разместил РАБОЧЕЕ РЕШЕНИЕ для PHP здесь

Hexodus
источник
0

Недавно я работал над созданием веб-сайта, включающего recaptcha v2, и мне нужно автоматизировать тестирование на моем локальном хосте. Я не добавил ни ip, ни localhost в административный портал recaptcha.

Выполните следующие шаги

  1. Войдите в систему, чтобы повторить скриншот администратора сайта

  2. Найдите ключевые настройки

  3. Нажмите на дополнительные настройки

  4. В разделе « Проверка доменного имени» снимите флажок « Проверять источник решений reCAPTCHA» . Эта опция используется для проверки запросов от одного из перечисленных доменов.

    Обратите внимание, что, если отключено, вы должны проверить имя хоста на вашем сервере при проверке решения.


Я создал новый ключ, отключил его и использую этот ключ для тестирования в localhost.

Это пример страницы, которая реализует reCAPTCHA для комментариев.

cyberviral
источник
0

Я получил ошибку, связанную с recaptcha на веб-сайте laravel, я решил ее с помощью некоторой команды и с помощью файла env, и ответ выше также поможет в этой проблеме.

Прежде всего, проверьте файл env (в вашем случае файл с ключом Google Recaptcha) для ключа Google Recpatcha.

второй запустите эти команды:

  1. Конфигурация PHP Artisan: очистить
  2. PHP кеш ремесленника: очистить
  3. композитор дамп-автозагрузка
  4. php artisan view: очистить
  5. маршрут ремесленника php: очистить

    это решит вашу проблему

Дивьянш Диксит
источник
Речь идет не о проблеме с reCaptcha, о проблемах кэширования, а об использовании ее в среде разработки (домены localhost).
ROOT