Używanie reCAPTCHA na localhost

286

Tworzę stronę internetową przy użyciu PHP i chcę dokonać weryfikacji przez człowieka w jednej z sesji. Na potrzeby programowania początkowo uruchamiam system lokalnie, a kiedy będzie gotowy, włączę go w określonej domenie.

Na stronie reCAPTCHA jest powiedziane, że wtyczka będzie działać tylko w danej domenie (i poddomenach).

Moje pytanie brzmi: czy jest jakiś sposób na użycie wtyczki reCAPTCHA na komputerze lokalnym?

rlc
źródło
Wyczyść pliki cookie, jeśli dodałeś localhost po fakcie.
Mike Flynn
3
z listy domen wpisz po prostulocalhost
csandreas1

Odpowiedzi:

356

Aktualizacja

Oryginalna odpowiedź nie jest już poprawna. Przewodnik programisty stwierdza teraz:

„Jeśli chcesz używać„ localhost ”do programowania, musisz dodać go do listy domen.”

Działa to tylko wtedy, gdy uzyskujesz dostęp do localhost za pomocą 127.0.0.1/...zamiast localhost/....

Oryginalna odpowiedź znajduje się poniżej.


Zgodnie z Przewodnikiem programisty reCAPTCHA :

„Domeny localhost nie są już domyślnie obsługiwane. Jeśli chcesz nadal wspierać je w programowaniu, możesz dodać je do listy obsługiwanych domen dla klucza witryny. Przejdź do konsoli administracyjnej, aby zaktualizować listę obsługiwanych domen. użyj osobnego klucza do programowania i produkcji i nie zezwalaj na localhost w kluczu witryny produkcyjnej. ”

Innymi słowy, po prostu użyj tego samego klucza.

Nathan Osman
źródło
8
Sprawdziłem, czy słowa są na tej stronie. Nie było! W 2015 r. Można znaleźć powyższy cytat @ developers.google.com/recaptcha/docs/start
Joshua Plicque
11
Ta odpowiedź jest dokładna, ale zaskoczyło mnie ważne zastrzeżenie: podczas migracji z reCAPTCHA v1 do v2 konieczne jest ponowne wygenerowanie kluczy API, aby komunikat zniknął. Co równie ważne, jeśli jesteś podobny do mnie i konfigurujesz domeny testowe w środowisku lokalnym / programistycznym, umieszczając wpisy w pliku „hosts” systemu operacyjnego, musisz dodać te „fałszywe” domeny do dozwolonych domen dla dane konto reCAPTCHA, aby rozwiązać błąd „BŁĄD: niepoprawna domena klucza witryny”.
Ben Johnson,
5
Jeśli lokalny host nie ma nazwy „lokalny host”, oznacza to, że nie działa.
Heksodus,
12
Wygląda na to, że Google usunął możliwość testowania na localhost.
IrishChieftain
4
podczas gdy localhost nie działał dla mnie, mogłem używać zarówno adresu 127.0.0.1, jak i adresu * .xip.io.
davidbates
104

Należy pamiętać, że od 2016 roku ReCaptcha nie wspiera już naiwnie hosta lokalnego . Z FAQ:

Domeny localhost nie są już domyślnie obsługiwane. Jeśli chcesz nadal wspierać je w programowaniu, możesz dodać je do listy obsługiwanych domen dla klucza witryny. Przejdź do konsoli administracyjnej, aby zaktualizować listę obsługiwanych domen. Radzimy używać osobnego klucza do programowania i produkcji i nie zezwalać na hosta lokalnego w kluczu witryny produkcyjnej.

Po prostu dodaj localhostdo swojej listy domen swojej witryny, a będziesz dobry.

CC Inc
źródło
12
Dodałem, localhostale wciąż pojawia się błąd „Lokalny host nie jest listą obsługiwanych domen dla tego klucza strony”.
aadi1295,
6
@ArbazAbid Może być konieczne poczekanie około godziny, aż Google zaktualizuje swój system ...
CC Inc
1
Dodatkowo, jeśli masz wiele projektów i konfigurujesz plik hostów Windows i VirtualHosts, np. W WAMP można go znaleźć tutaj C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, a następnie zarejestruj swój projekt NazwaSerwera. Testowane i działa dobrze.
Jeffz
@Jeffz Plik hosts nie jest specyficzny dla systemu Windows - to dobra ogólna rada.
Nathan Hornby
81

To działało dla mnie:

„Dzięki następującym kluczom testowym zawsze otrzymasz brak CAPTCHA i wszystkie prośby o weryfikację przejdą.

Kluczem Strona: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Sekretny klucz: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Widżet reCAPTCHA wyświetli komunikat ostrzegawczy z informacją, że służy wyłącznie do celów testowych. Nie używaj tych kluczy do ruchu produkcyjnego ”.

Wyodrębniono stąd: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!

Pablo
źródło
1
świetny! Dzięki za to.
Sam
1
Jeśli to przestanie działać, przejdę na rozwiązanie Automattic. Twoje rozwiązanie tutaj jest jedyną rzeczą, która powstrzymuje mnie przed porzuceniem tej irytującej technologii.
PJ Brunet
1
wydaje się to być „właściwą odpowiedzią”, ponieważ odróżnia środowisko programistów od środowiska produkcyjnego.
ChronoFish
67

To takie proste:

  1. Przejdź do panelu administracyjnego Google reCaptcha
  2. Dodaj localhost& 127.0.0.1do domen nowej witryny, takich jak poniższy obraz.

wprowadź opis zdjęcia tutaj


Aktualizacja:

Jeśli masz pytanie, jak ustawić reCaptcha w witrynie Google do używania go w localhost, a potem został napisałem wyżej, ale jeśli jesteś ciekawy, że jak można za pomocą reCAPTCHAna obu localhost i website hostprzy minimalnych kodów w kontrolerze i zapobiec niektóre kody jak ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]w nim następnie Pomagam ci z tym dodatkowym opisem i kodami w mojej odpowiedzi.

Czy podobają Ci się następujące działania GET i POST?

Obsługuje reCaptcha i nie potrzebuje żadnych innych kodów do obsługi 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
}

W widoku: ( odniesienie )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Aby go użyć

A) Dodaj następujące elementy ActionFilterdo swojego projektu internetowego:

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) Dodaj reCaptchaklucze ustawień dla obu localhost&website polub to w swoim webconfigpliku:

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

Uwaga: W ten sposób nie trzeba ręcznie ustawiać reCaptcha_SecretKeyparametru w akcji post ani żadnego ViewBagdla reCaptcha ręcznie w swoich Akcjach i widokach, wszystkie zostaną automatycznie wypełnione w czasie wykonywania odpowiednimi wartościami w zależności od uruchomienia projektu na lokalnym hoście lub stronie internetowej .😉

Baran
źródło
16

kiedy dodajesz Domeny w Google recaptcha

Dodaj nową domenę: Localhost nie localhost

„L” jest wielką literą

Powodzenia

Yoni Ayalon
źródło
8

Google niedawno zmienił przestał zezwalać na domyślny dozwolony localhost. (poruszony przez @Artur Cesar De Melo) To jest pod ich FAQ:

Pojawia się błąd „Host lokalny nie znajduje się na liście obsługiwanych domen”. To działało wcześniej, co powinienem zrobić?

Domeny localhost nie są już domyślnie obsługiwane. Jeśli chcesz nadal wspierać je w programowaniu, możesz dodać je do listy obsługiwanych domen dla klucza witryny. Przejdź do konsoli administracyjnej, aby zaktualizować listę obsługiwanych domen. Radzimy używać osobnego klucza do programowania i produkcji i nie zezwalać na hosta lokalnego w kluczu witryny produkcyjnej.

1: Utwórz osobny klucz dla swojego środowiska programistycznego

2: Dodaj 127.0.0.1 do listy dozwolonych domen

3: Zapisz zmiany i poczekaj do 30 minut, aby zmiany zaczęły obowiązywać

tony09uk
źródło
5

Zgodnie z dokumentacją Google recaptcha

Domeny localhost nie są już domyślnie obsługiwane. Jeśli chcesz nadal wspierać je w programowaniu, możesz dodać je do listy obsługiwanych domen dla klucza witryny. Przejdź do konsoli administracyjnej, aby zaktualizować listę obsługiwanych domen. Radzimy używać osobnego klucza do programowania i produkcji i nie zezwalać na hosta lokalnego w kluczu witryny produkcyjnej

Artur Cesar De Melo
źródło
5

Usuń bieżący klucz REcaptcha, a następnie zarejestruj nowy klucz i skonfiguruj ustawienia kluczy w domenach: 127.0.0.1 localhost

Mychajło
źródło
3

Recaptcha nie będzie działać localhost/

Use `127.0.0.1/` instead of `localhost/`
alianjum0
źródło
Czym różni się ta odpowiedź od przyjętej?
smottt
1
Jest to prostsza wersja przyjętej. Obie odpowiedzi są niepoprawne w jednej zaakceptowanej. Dla 1) Nie musisz dodawać localhost do akceptowanej listy domen. Dla 2) Nie działa z localhost.
alianjum0
2
  1. Zarejestruj swoją witrynę pod adresem - https://www.google.com/recaptcha/admin
  2. dodaj js plugin 3.add class i klucz do strony dostarczone przez google wprowadź opis zdjęcia tutaj
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Saquib Azam
źródło
1

Jeśli masz stary klucz, ponownie utwórz klucz API. Należy również pamiętać o serwerach proxy.

Soheil Novinfard
źródło
Na czym polega problem z serwerami proxy? Serwer proxy musi umożliwiać komunikację z powrotem z interfejsu API Google?
smoore4
1
@SQLDBA Albo nie jest dobrze skonfigurowana, albo nowa lokalizacja (IP) pochodzi z krajów objętych sankcjami, może powodować pewne problemy.
Soheil Novinfard
1

Możesz napisać „localhost” lub „127.0.0.1”, ale adres URL musi być taki sam

Przykład: Google Domains Add-> localhost URL => localhost / login.php

Przykład: Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php

Mert Yılmaz
źródło
1

localhost działa teraz. Pamiętaj jednak, że po dodaniu localhost do listy nazw domen, wejście w życie może potrwać do 30 minut (zgodnie z poradą pokazaną na liście nazw domen).

Gautam Jain
źródło
0

Tak, to starsze pytanie, ale może pomóc wszystkim użytkownikom mającym problemy z reCaptcha na localhost. Google rzeczywiście mówi „Domyślnie wszystkie klucze działają na„ localhost ”(lub„ 127.0.0.1 ”)”, ale prawdziwe użycie reCaptcha na localhost może powodować problemy. W moim przypadku rozwiązałem mój przy użyciu bezpiecznego tokena

Tutaj zamieściłem ROZWIĄZANIE ROBOCZE dla PHP

Hexodus
źródło
0

Niedawno pracowałem nad stworzeniem strony internetowej z recaptcha v2 i muszę przeprowadzić automatyzację testów na moim lokalnym hoście. Nie dodałem żadnego adresu IP ani hosta lokalnego do portalu administratora recaptcha.

Wykonaj poniższe kroki

  1. Zaloguj się, aby wykonać zrzut ekranu strony administratora recaptcha

  2. Znajdź ustawienia klucza

  3. Kliknij ustawienia zaawansowane

  4. W obszarze Sprawdzanie poprawności nazw domen usuń zaznaczenie opcji Sprawdź pochodzenie rozwiązań reCAPTCHA . Ta opcja służy do weryfikacji żądań pochodzących z jednej z wyżej wymienionych domen.

    Należy pamiętać, że w przypadku wyłączenia należy sprawdzić nazwę hosta na serwerze podczas weryfikacji rozwiązania.


Utworzyłem nowy klucz, wyłączam go i używam tego klucza do testowania w localhost.

To jest przykładowa strona, która implementuje reCAPTCHA do komentowania.

cyberwirus
źródło
0

dostałem błąd związany z recaptcha na stronie laravel, rozwiązałem go za pomocą polecenia i pliku env i powyższej odpowiedzi również pomoże w tym problemie.

po pierwsze sprawdź plik env (w pliku sprawy, który ma klucz Google Recaptcha), aby znaleźć klucz Google Recpatcha.

po drugie uruchom następujące polecenie:

  1. Konfiguracja rzemieślnika PHP: wyczyść
  2. php rzemieślnik cache: wyczyść
  3. kompozytor zrzut-autoload
  4. widok rzemieślnika php: wyczyść
  5. php artisan route: wyczyść

    rozwiąże twój problem

divyansh dixit
źródło
Nie chodzi o problem z reCaptcha, problemy z buforowaniem, chodzi o używanie go w środowisku programistycznym (domeny localhost).
ROOT