Usando reCAPTCHA en localhost

286

Estoy desarrollando un sitio web usando PHP y quiero hacer una verificación humana en una de las sesiones. Para el desarrollo, inicialmente estoy ejecutando el sistema localmente y cuando esté listo, lo pondré en un dominio determinado.

En el sitio web reCAPTCHA se dice que el complemento solo funcionará en el dominio (y subdominios) dado.

Mi pregunta es: ¿hay alguna forma de usar el complemento reCAPTCHA en un host local?

rlc
fuente
Borre las cookies si agregó localhost después del hecho.
Mike Flynn
3
en la lista de dominios solo escribalocalhost
csandreas1

Respuestas:

356

Actualizar

La respuesta original ya no es correcta. La guía del desarrollador ahora dice:

"Si desea utilizar" localhost "para el desarrollo, debe agregarlo a la lista de dominios".

Esto solo funcionará si accede a localhost usando en 127.0.0.1/...lugar de localhost/....

La respuesta original se conserva a continuación.


De acuerdo con la Guía del desarrollador reCAPTCHA :

"los dominios localeshost ya no son compatibles de forma predeterminada. Si desea continuar admitiéndolos para el desarrollo, puede agregarlos a la lista de dominios compatibles para la clave de su sitio. Vaya a la consola de administración para actualizar su lista de dominios compatibles. Le recomendamos use una clave separada para el desarrollo y la producción y para no permitir localhost en la clave del sitio de producción ".

En otras palabras, simplemente use la misma clave.

Nathan Osman
fuente
8
Lo comprobé para confirmar si las palabras estaban en esa página. ¡Se ha ido! En 2015, puede encontrar la cita anterior @ developers.google.com/recaptcha/docs/start
Joshua Plicque
11
Esta respuesta es precisa, pero hay una advertencia importante que me dejó perplejo: al migrar de reCAPTCHA v1 a v2, es necesario regenerar las claves API para que este mensaje desaparezca. Además, e igualmente importante, si eres como yo y configuras dominios de prueba en tu entorno local / de desarrollo colocando entradas en el archivo "hosts" del sistema operativo, deberás agregar esos dominios "falsos" a los dominios permitidos para la cuenta reCAPTCHA en cuestión para resolver el error "ERROR: dominio no válido para la clave del sitio".
Ben Johnson
55
Cuando su localhost no se llama "localhost", entonces no funciona.
Hexodus
12
Google parece haber eliminado la capacidad de probar en localhost.
IrishChieftain
44
Si bien localhost no funcionó para mí, pude usar 127.0.0.1 y también una dirección * .xip.io.
davidbates 01 de
104

Tenga en cuenta que a partir de 2016, ReCaptcha ya no admite ingenuamente localhost . De las preguntas frecuentes:

los dominios localhost ya no son compatibles de forma predeterminada. Si desea continuar apoyándolos para el desarrollo, puede agregarlos a la lista de dominios compatibles para la clave de su sitio. Vaya a la consola de administración para actualizar su lista de dominios compatibles. Recomendamos utilizar una clave separada para el desarrollo y la producción y no permitir localhost en la clave de su sitio de producción.

Tan solo agregue localhosta su lista de dominios para su sitio y estará bien.

CC Inc
fuente
12
Agregué localhostpero aún obtengo el error "Localhost no es la lista de dominios admitidos para esta clave de sitio".
aadi1295
66
@ArbazAbid Puede que tenga que esperar una hora más o menos para que Google actualice su sistema ...
CC Inc
1
Además, si tiene muchos proyectos y configura el archivo de hosts de Windows y VirtualHosts, por ejemplo, en WAMP se puede encontrar aquí C: \ wamp \ bin \ apache \ Apache2.2.21 \ conf \ extra \ httpd-vhosts.conf, luego registre su Nombre del servidor del proyecto. Probado y funciona bien.
Jeffz
@Jeffz El archivo de hosts no es específico de Windows; este es un buen consejo general.
Nathan Hornby
80

Esto funcionó para mí:

"Con las siguientes claves de prueba, siempre obtendrá No CAPTCHA y todas las solicitudes de verificación pasarán.

Clave del sitio: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

Llave secreta: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

El widget reCAPTCHA mostrará un mensaje de advertencia para afirmar que es solo para fines de prueba. No utilice estas claves para su tráfico de producción ".

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

BR!

Pablo
fuente
1
¡Excelente! Gracias por esto.
Sam
1
Si esto deja de funcionar, cambiaré a la solución de Automattic. Su solución aquí es lo único que me impide dejar caer esta molesta tecnología.
PJ Brunet
1
Esta parece ser la "respuesta correcta", ya que mantiene su entorno de desarrollo distinto de su entorno de producción.
ChronoFish
67

Es tan fácil:

  1. Vaya a su panel de administración de google reCaptcha
  2. Agregue localhost& 127.0.0.1a los dominios de un nuevo sitio como la siguiente imagen.

ingrese la descripción de la imagen aquí


Actualizar:

Si su pregunta es cómo establecer reCaptchaen el sitio de Google para usarlo en localhost, a continuación, i ha sido lo escribió más arriba, pero si usted es curioso que cómo se puede utilizar reCAPTCHAen tanto localhost y website hostpor códigos mínimos en su controlador y prevenir algunos códigos comoConfigurationManager.AppSettings["ReCaptcha:SiteKey"] en él, entonces Te ayudo con esta descripción adicional y los códigos en mi respuesta.

¿Te gustan las siguientes acciones GET y POST?

Es compatible con reCaptcha y no necesita ningún otro código para manejar 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
}

A la vista: ( referencia )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Para usarlo

A) Agregue lo siguiente ActionFiltera su proyecto 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) Agregue las reCaptchateclas de configuración para ambos localhosty me websitegusta en su webconfigarchivo:

<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: De esta manera, no necesitaba establecer el reCaptcha_SecretKeyparámetro en la acción posterior ni ninguno ViewBagpara reCaptcha manualmente en sus Acciones y Vistas, todos ellos se completarán automáticamente en el tiempo de ejecución con los valores adecuados dependiendo de si ha ejecutado el proyecto en el servidor local o el sitio web .😉

RAM
fuente
16

cuando agrega dominios en Google recaptcha

Añadir nuevo dominio: Localhost no localhost

"L" es mayúscula

Buena suerte

Yoni Ayalon
fuente
8

Google ha cambiado recientemente dejó de permitir que se permita localhost de forma predeterminada. (según lo mencionado por @Artur Cesar De Melo) Esto se encuentra en sus Preguntas frecuentes:

Recibo un error "Localhost no está en la lista de dominios compatibles". Esto funcionaba antes, ¿qué debo hacer?

los dominios localhost ya no son compatibles de forma predeterminada. Si desea continuar apoyándolos para el desarrollo, puede agregarlos a la lista de dominios compatibles para la clave de su sitio. Vaya a la consola de administración para actualizar su lista de dominios compatibles. Recomendamos utilizar una clave separada para el desarrollo y la producción y no permitir localhost en la clave de su sitio de producción.

1: Cree una clave separada para su entorno de desarrollo

2: Agregar 127.0.0.1 a la lista de dominios permitidos

3: Guarde los cambios y espere hasta 30 minutos para que los cambios surtan efecto

tony09uk
fuente
5

Según la documentación recaptcha de Google

los dominios localhost ya no son compatibles de forma predeterminada. Si desea continuar apoyándolos para el desarrollo, puede agregarlos a la lista de dominios compatibles para la clave de su sitio. Vaya a la consola de administración para actualizar su lista de dominios compatibles. Recomendamos utilizar una clave separada para el desarrollo y la producción y no permitir localhost en la clave del sitio de producción

Artur Cesar De Melo
fuente
5

Elimine la clave REcaptcha actual, luego registre una nueva clave y establezca la configuración de su clave con dominios: 127.0.0.1 localhost

Mykhailo
fuente
3

Recaptcha no funcionará en localhost/

Use `127.0.0.1/` instead of `localhost/`
alianjum0
fuente
¿Cómo es esta respuesta diferente de la aceptada?
smottt
1
Es la versión más simple de la aceptada. Ambas respuestas son incorrectas en la aceptada. Para 1) No es necesario agregar localhost a la lista aceptada de dominios. Para 2) No funciona con localhost.
alianjum0
2
  1. Registre su sitio web en: https://www.google.com/recaptcha/admin
  2. agregue js plugin 3.add class y su clave de sitio proporcionada por google ingrese la descripción de la imagen aquí
<script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="your site-key"></div>
Saquib Azam
fuente
1

Si tiene una clave antigua, debe volver a crear su clave API. También tenga en cuenta los poderes.

Soheil Novinfard
fuente
¿Cuál es el problema con los proxies? ¿El proxy debe permitir la comunicación desde la API de Google?
smoore4
1
@SQLDBA O bien no está bien configurado o la nueva ubicación (IP) proviene de países sancionados, puede causar algunos problemas.
Soheil Novinfard
1

Puede escribir "localhost" o "127.0.0.1" pero la URL debe ser la misma

Ejemplo: Google Domains Add-> localhost URL => localhost / login.php

Ejemplo: Google Domains Add-> 127.0.0.1 URL => 127.0.0.1/login.php

Mert Yılmaz
fuente
1

localhost funciona ahora. Sin embargo, recuerde que después de agregar localhost a la lista de nombres de dominio, toma hasta 30 minutos surtir efecto (de acuerdo con el consejo de ayuda que se muestra en la lista de nombres de dominio).

Gautam Jain
fuente
0

Sí, esta es una pregunta anterior, pero puede estar ayudando a todos los usuarios que tienen problemas con reCaptcha en localhost. De hecho, Google dice "Por defecto, todas las claves funcionan en 'localhost' (o '127.0.0.1')", pero de verdad el uso de reCaptcha en localhost puede causar problemas. En mi caso resolví el mío usando token seguro

Publiqué una SOLUCIÓN DE TRABAJO para PHP aquí

Hexodus
fuente
0

Recientemente estuve trabajando en la creación de un sitio web que involucrara recaptcha v2 y necesito hacer una automatización de prueba en mi localhost. No agregué ninguna ip o localhost en el portal recaptcha admin.

Siga los pasos a continuación.

  1. Inicie sesión para recaptcha admin captura de pantalla del sitio

  2. Ubicar configuraciones clave

  3. Haga clic en configuración avanzada

  4. En Validación de nombre de dominio , desmarque la casilla de verificación Verificar el origen de las soluciones reCAPTCHA . Esta opción se utiliza para verificar que las solicitudes provengan de uno de los dominios enumerados anteriormente.

    Tenga en cuenta que, si está deshabilitado, debe verificar el nombre de host en su servidor al verificar una solución.


Creé una nueva clave y la desactivo y uso esta clave para probar en localhost.

Esta es una página de muestra que implementa reCAPTCHA para comentarios.

cibervirales
fuente
0

Recibí un error relacionado con recaptcha en el sitio web de laravel, lo resolví usando algún comando y con el archivo env y la respuesta anterior también ayudará en este problema.

en primer lugar, verifique el archivo env (en su caso, el archivo que tiene la clave recaptcha de google) para la clave recpatcha de google.

segundo ejecute estos comandos:

  1. php artisan config: clear
  2. php artisan cache: clear
  3. compositor dump-autoload
  4. vista artesanal de php: claro
  5. ruta artesanal php: claro

    resolverá tu problema

divyansh dixit
fuente
No se trata de un problema con reCaptcha, problemas de almacenamiento en caché, se trata de usarlo en un entorno de desarrollo (dominios localhost).
RAÍZ