Usando reCAPTCHA no localhost

286

Estou desenvolvendo um site usando PHP e quero fazer uma verificação humana em uma das sessões. Para o desenvolvimento, inicialmente estou executando o sistema localmente e, quando estiver pronto, colocarei em um determinado domínio.

No site do reCAPTCHA , diz-se que o plug-in funcionará apenas no domínio (e subdomínios) especificado.

Minha pergunta é: Existe alguma maneira de usar o plug-in reCAPTCHA em um host local?

rlc
fonte
Limpe os cookies se você adicionou localhost após o fato.
22630 Mike Onnick em
3
na lista de domínio, basta digitarlocalhost
csandreas1 15/03

Respostas:

356

Atualizar

A resposta original não está mais correta. O guia do desenvolvedor agora declara:

"Se você deseja usar" localhost "para desenvolvimento, adicione-o à lista de domínios."

Isso só funcionará se você acessar o host local usando em 127.0.0.1/...vez de localhost/....

A resposta original é preservada abaixo.


De acordo com o Guia do desenvolvedor do reCAPTCHA :

"os domínios localhost não são mais suportados por padrão. Se você deseja continuar dando suporte a eles para desenvolvimento, pode adicioná-los à lista de domínios suportados pela chave do site. Acesse o console do administrador para atualizar sua lista de domínios suportados. Recomendamos use uma chave separada para desenvolvimento e produção e para não permitir o host local na chave do site de produção ".

Em outras palavras, basta usar a mesma chave.

Nathan Osman
fonte
8
Eu verifiquei para confirmar se as palavras estavam nessa página. Foi embora! Em 2015, você pode encontrar a citação acima @ developers.google.com/recaptcha/docs/start
Joshua Plicque
11
Esta resposta é precisa, mas há uma ressalva importante que me surpreendeu: Ao migrar do reCAPTCHA v1 para a v2, é necessário gerar novamente as chaves da API para que esta mensagem desapareça. Além disso, e igualmente importante, se você é como eu e configura domínios de teste em seu ambiente local / de desenvolvimento colocando entradas no arquivo "hosts" do sistema operacional, será necessário adicionar esses domínios "falsos" aos domínios permitidos para a conta reCAPTCHA em questão para resolver o erro "ERRO: domínio inválido para chave do site".
Ben Johnson
5
Quando o seu host local não é chamado "localhost", ele não está funcionando.
Hexodus
12
O Google parece ter removido a capacidade de testar no host local.
IrishChieftain 8/08/16
4
enquanto localhost não funcionou para mim, eu fui capaz de usar o 127.0.0.1 e também um endereço * .xip.io.
Davidbates
104

Observe que a partir de 2016, o ReCaptcha não suporta mais ingenuamente o host local . Do FAQ:

os domínios localhost não são mais suportados por padrão. Se você deseja continuar dando suporte a eles para desenvolvimento, adicione-os à lista de domínios suportados para a chave do seu site. Acesse o console do administrador para atualizar sua lista de domínios suportados. Aconselhamos usar uma chave separada para desenvolvimento e produção e não permitir o host local na chave do site de produção.

Então, basta adicionar localhostà sua lista de domínios para o seu site e você será bom.

CC Inc
fonte
12
Eu adicionei, localhostmas ainda estou recebendo o erro "Localhost não é a lista de domínios suportados para esta chave de site".
precisa saber é o seguinte
6
@ArbazAbid Você pode ter de esperar uma hora ou mais para o Google para atualizar seu sistema de ...
CC Inc
1
Além disso, se você tiver muitos projetos e configurar o arquivo hosts do Windows e o VirtualHosts, por exemplo, no WAMP, poderá ser encontrado aqui C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, registre seu projeto ServerName. Testado e funciona bem.
Jeffz
@ Jeffffz O arquivo hosts não é específico do Windows - este é um bom conselho geral.
Nathan Hornby
79

Isso funcionou para mim:

"Com as seguintes chaves de teste, você sempre receberá No CAPTCHA e todas as solicitações de verificação serão aprovadas.

Chave do site: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Chave secreta: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

O widget reCAPTCHA mostrará uma mensagem de aviso para afirmar que é apenas para fins de teste. Por favor, não use essas chaves para o tráfego de produção ".

Extraído daqui: https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do

BR!

Pablo
fonte
1
ótimo! Obrigado por isso.
Sam
1
Se isso parar de funcionar, mudarei para a solução da Automattic. Sua solução aqui é a única coisa que me impede de abandonar essa tecnologia irritante.
PJ Brunet
1
essa parece ser a "resposta certa", pois mantém o ambiente de desenvolvimento distinto do ambiente de produção.
ChronoFish 20/02
67

É tão fácil:

  1. Vá para o painel de administração do Google reCaptcha
  2. Adicione localhost& 127.0.0.1aos domínios de um novo site, como na imagem a seguir.

insira a descrição da imagem aqui


Atualizar:

Se a sua pergunta é como definir reCaptchano site do Google para usá-lo em localhost, então i foi escrevi acima, mas se você é curioso que como você pode usar reCAPTCHAem ambos localhost e website hostpor códigos mínimos em seu controlador e impedir que alguns códigos como ConfigurationManager.AppSettings["ReCaptcha:SiteKey"]no-lo, em seguida, Ajudo você com esta descrição e códigos extras na minha resposta.

Você gosta das seguintes ações GET e POST?

Ele suporta o reCaptcha e não precisa de nenhum outro código para lidar com o 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
}

Na vista: ( referência )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Para usá-lo

A) Adicione o seguinte ActionFilterao seu projeto da 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) Adicione as reCaptchateclas de configuração para ambos localhoste websitecurta no seu webconfigarquivo:

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

Nota: Dessa forma, você não precisou definir o reCaptcha_SecretKeyparâmetro na ação pós ou ViewBagno reCaptcha manualmente em suas Ações e Visualizações, todos eles serão preenchidos automaticamente em tempo de execução com os valores apropriados, dependendo da execução do projeto no host ou site local .😉

RAM
fonte
16

quando você adiciona domínios no Google recaptcha

Adicionar novo domínio: Localhost não localhost

"L" é uma letra maiúscula

Boa sorte

Yoni Ayalon
fonte
8

O Google mudou recentemente para de permitir que o host local seja permitido por padrão. (conforme tocado por @Artur Cesar De Melo) Isso está nas perguntas frequentes:

Estou recebendo um erro "Localhost não está na lista de domínios suportados". Isso estava funcionando antes, o que devo fazer?

os domínios localhost não são mais suportados por padrão. Se você deseja continuar dando suporte a eles para desenvolvimento, adicione-os à lista de domínios suportados para a chave do seu site. Acesse o console do administrador para atualizar sua lista de domínios suportados. Aconselhamos usar uma chave separada para desenvolvimento e produção e não permitir o host local na chave do site de produção.

1: Crie uma chave separada para seu ambiente de desenvolvimento

2: adicione 127.0.0.1 à lista de domínios permitidos

3: Salve as alterações e aguarde até 30 minutos para que as alterações tenham efeito

tony09uk
fonte
5

Conforme documentação do Google recaptcha

os domínios localhost não são mais suportados por padrão. Se você deseja continuar dando suporte a eles para desenvolvimento, adicione-os à lista de domínios suportados para a chave do seu site. Acesse o console do administrador para atualizar sua lista de domínios suportados. Aconselhamos a usar uma chave separada para desenvolvimento e produção e não permitir o host local na chave do site de produção

Artur Cesar De Melo
fonte
5

Remova a chave atual do REcaptcha, registre uma nova chave e defina suas configurações de chave com domínios: 127.0.0.1 localhost

Mykhailo
fonte
3

Recaptcha não funcionará em localhost/

Use `127.0.0.1/` instead of `localhost/`
alianjum0
fonte
Como essa resposta é diferente da resposta aceita?
smottt
1
É a versão mais simples do aceito. Ambas as respostas estão incorretas em uma aceita. Para 1) Você não precisa adicionar localhost à lista de domínios aceitos. Para 2) Não funciona com o host local.
precisa saber é o seguinte
2
  1. Registre seu site em - https://www.google.com/recaptcha/admin
  2. adicione js plugin 3.add class e sua chave de site fornecida pelo google insira a descrição da imagem aqui
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Saquib Azam
fonte
1

Se você possui uma chave antiga, recrie sua chave de API. Também esteja ciente dos proxies.

Soheil Novinfard
fonte
Qual é o problema com proxies? O proxy precisa permitir a comunicação de volta da API do Google?
precisa saber é o seguinte
1
@SQLDBA Ou não está bem configurado ou o novo local (IP) é de países sancionados, isso pode causar alguns problemas.
Soheil Novinfard
1

Você pode escrever "localhost" ou "127.0.0.1", mas o URL deve ser o mesmo

Exemplo: Domínios do Google Adicionar-> URL do host local => localhost / login.php

Exemplo: URL dos domínios do Google Adicionar-> 127.0.0.1 => 127.0.0.1/login.php

Mert Yılmaz
fonte
1

localhost funciona agora. No entanto, lembre-se de que, após adicionar localhost à lista de nomes de domínio, leva até 30 minutos para entrar em vigor (de acordo com a dica de ajuda mostrada na lista de nomes de domínio).

Gautam Jain
fonte
0

Sim, essa é uma pergunta mais antiga, mas isso pode ajudar todos os usuários com problemas com o reCaptcha no localhost. O Google realmente diz "Por padrão, todas as chaves funcionam no 'localhost' (ou '127.0.0.1')", mas o uso real do reCaptcha no localhost pode causar problemas. No meu caso, resolvi o meu usando token seguro

Eu publiquei uma SOLUÇÃO DE TRABALHO para PHP aqui

Hexodus
fonte
0

Recentemente, eu estava trabalhando na criação de um site envolvendo o recaptcha v2 e preciso fazer a automação de teste no meu host local. Não adicionei nenhum ip ou localhost ao portal de administração recaptcha.

Siga os passos abaixo

  1. Efetue login na captura de tela do site de administração recaptcha

  2. Localize as configurações principais

  3. Clique nas configurações avançadas

  4. Em Validação de nome de domínio , desmarque a caixa de seleção Verificar a origem das soluções reCAPTCHA . Essa opção é usada para verificar se as solicitações são provenientes de um dos domínios listados acima.

    Observe que, se desativado, você deve verificar o nome do host no servidor ao verificar uma solução.


Eu criei uma nova chave e desative isso e use essa chave para testar no localhost.

Esta é uma página de amostra que implementa o reCAPTCHA para comentários.

ciberviral
fonte
0

Eu tenho um erro relacionado ao recaptcha no site laravel, resolvi-o usando algum comando e com o arquivo env e a resposta acima também ajudará nesse problema.

Antes de mais nada, verifique o arquivo env (no seu caso, com a chave google recaptcha) para obter a chave google recpatcha.

segundo execute estes comandos:

  1. php artisan config: limpar
  2. cache artesanal de php: limpar
  3. compositor dump-autoload
  4. php artisan view: limpar
  5. rota artesão php: limpar

    vai resolver o seu problema

divyansh dixit
fonte
Não se trata de problemas com o reCaptcha, problemas de cache, trata-se de usá-los no ambiente de desenvolvimento (domínios de host local).
ROOT