Використання reCAPTCHA на localhost


286

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

На веб-сайті reCAPTCHA йдеться про те, що плагін працюватиме лише в заданому домені (та піддоменах).

Моє запитання: чи є спосіб використовувати плагін reCAPTCHA на localhost?


Очистити файли cookie, якщо ви додали 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", він не працює.
Гексод

12
Google, схоже, видалила можливість тестування на localhost.
Ірландський начальник

4
в той час, як localhost не працював для мене, я зміг використовувати і 127.0.0.1, а також адресу * .xip.io.
davidbates

104

Зауважте, що станом на 2016 рік ReCaptcha вже не наївно підтримує localhost . З FAQ:

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

Тому просто додайте localhostдо свого списку доменів свого сайту, і ви будете добрі.


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 Файл хостів не є специфічним для Windows - це хороша загальна порада.
Натан Хорнбі

81

Це працювало для мене:

"За допомогою наступних тестових ключів ви завжди отримуватимете 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!


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>
}

Щоб його використовувати

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для повторної операції вручну у ваших діях і переглядах, всі вони автоматично заповнюватимуться під час виконання відповідними значеннями залежно від запуску проекту на localhost або веб-сайті .😉


16

коли ви додасте Домени в Google recaptcha

Додати новий домен: Localhost не localhost

"L" - велика літера

Удачі


8

Google нещодавно змінився, переставши дозволяти localhost дозволено за замовчуванням. (як торкнулось @Artur Сезар Де Мело) Це під їхніми питаннями:

Я отримую помилку "Localhost не в списку підтримуваних доменів". Це працювало раніше, що мені робити?

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

1: Створіть окремий ключ для свого середовища розробки

2: Додайте 127.0.0.1 до списку дозволених доменів

3: Збережіть зміни та дозвольте до 30 хвилин змінити вплив


5

Відповідно до документації Google recaptcha

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


5

Видаліть поточний ключ REcaptcha, а потім зареєструйте новий ключ та встановіть налаштування вашого ключа за допомогою доменів: 127.0.0.1 localhost


3

Recaptcha не працюватиме localhost/

Use `127.0.0.1/` instead of `localhost/`

Чим ця відповідь відрізняється від прийнятої?
smottt

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. Також слід знати про проксі.


У чому проблема з проксі-серверами? Проксі-сервер повинен дозволити зв'язок із API Google?
smoore4

1
@SQLDBA Якщо це не налаштовано належним чином, або нове місцезнаходження (IP) з боку санкційних країн, це може спричинити деякі проблеми.
Soheil Novinfard


1

Ви можете написати "localhost" або "127.0.0.1", але URL-адреса повинна бути однаковою

Приклад: Add-> localhost URL => localhost / login.php

Приклад: Додати домени Google доменів>> 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


0

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

Виконайте наведені нижче дії

  1. Увійдіть у скріншот сайту адміністратора recaptcha

  2. Знайдіть налаштування ключів

  3. Клацніть на розширені налаштування

  4. У розділі Перевірка доменних імен зніміть прапорець Перевірте походження рішень reCAPTCHA . Цей параметр використовується для перевірки запитів, які надходять з одного з перерахованих вище доменів.

    Зауважте, що якщо вимкнено, вам потрібно перевірити ім'я хоста на своєму сервері під час перевірки рішення.


Я створив новий ключ і відключив його і використовую цей ключ для тестування в localhost.

Це зразкова сторінка, яка реалізує reCAPTCHA для коментарів.


0

Я отримав помилку, пов'язану з recaptcha на веб-сайті laravel, я вирішив це за допомогою деякої команди та з env-файлом та вище відповіддю, також допоможе у цій проблемі.

насамперед перевірте env-файл (у вашому файлі справи, у якому є ключ recaptcha google) на ключ recpatcha google.

другий запуск цих команд:

  1. php artisan config: ясно
  2. php ремісничий кеш: ясно
  3. композитор дамп-автозавантаження
  4. php вид майстра: чітко
  5. php ремісничий маршрут: чіткий

    це вирішить вашу проблему


Йдеться не про проблему з reCaptcha, проблеми кешування, це про використання її в середовищі розробки (localhost доменів).
корінь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.