Uso de reCAPTCHA en localhost


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, voy a ponerlo en un dominio determinado.

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

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

Author: rlc, 2010-07-13

13 answers

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 127.0.0.1/... en lugar de localhost/....

La respuesta original se conserva a continuación.


De acuerdo con la Guía del Desarrollador de reCAPTCHA :

" los dominios de localhost ya no son compatibles predeterminada. Si desea continuar apoyando para el desarrollo, puede añadirlos a la lista de dominios soportados para su sitio clave. Vaya a la consola de administración para actualizar su lista de dominios compatibles. Recomendamos usar una clave separada para el desarrollo y la producción y no permitir localhost en su clave de sitio de producción."

En otras palabras, simplemente use la misma clave.

 261
Author: Nathan Osman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-09 06:46:15

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 usted desea continúe apoyándolos para el desarrollo puede agregarlos a la lista de dominios soportados para su clave de sitio. Ir a la consola de administración para actualice su lista de dominios compatibles. Recomendamos usar una llave separada para el desarrollo y la producción y para no permitir localhost en su producción clave del sitio.

Así que simplemente agrega localhost a tu lista de dominios para tu sitio y estarás bien.

 90
Author: CC Inc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-16 05:38:21

Es tan fácil:{[19]]}

  1. Vaya a su panel de administración de google reCAPTCHA
  2. Añadir localhost & 127.0.0.1 a dominios de un nuevo sitio como la siguiente imagen.

introduzca la descripción de la imagen aquí


Actualización:

Si su pregunta es cómo configurar reCaptcha en el sitio de Google para usarlo en localhost, entonces me lo han escrito anteriormente, pero si tiene curiosidad de saber cómo puede usar reCAPTCHA en ambos localhost y website host por códigos mínimos en su controlador y evitar algunos códigos como ConfigurationManager.AppSettings["ReCaptcha:SiteKey"] en él entonces te ayudo con esta descripción adicional y 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 su manejo 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
}

En la vista : (referencia )

@ReCaptcha.GetHtml(@ViewBag.publicKey)

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

Para usarlo

A) Añade lo siguiente ActionFilter a tu Web proyecto:

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 teclas de configuración reCaptcha para ambos localhost & website como en su archivo 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>

Nota: De esta manera no necesita establecer reCaptcha_SecretKey parámetro en el post action o cualquier ViewBag para reCAPTCHA manualmente en sus Acciones y Vistas, todos ellos se llenarán automáticamente en tiempo de ejecución con los valores apropiados dependiendo de que haya ejecutado el proyecto en el localhost o sitio web.

 42
Author: RAM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-05 12:20:30

Esto funcionó para mí:

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

Clave del sitio: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI Clave secreta: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe El widget reCAPTCHA mostrará un mensaje de advertencia para afirmar que es solo para fines de prueba. Por favor, no utilice estas claves para su tráfico de producción."

Extraído de aquí: https://developers.google.com/recaptcha/docs/faq

BR!

 14
Author: Pablo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-19 16:08:34

Google ha cambiado recientemente dejó de permitir localhost se permite por defecto. (como mencionó @Artur Cesar De Melo) Esto está bajo sus preguntas frecuentes:

Estoy recibiendo un error "Localhost no está en la lista de dominios soportados". Esto estaba funcionando antes, ¿qué debería hacer?

Los dominios Localhost ya no son compatibles de forma predeterminada. Si desea continuar apoyando para el desarrollo, puede añadirlos a la lista de dominios soportados para su sitio clave. Vaya a la consola de administración para actualizar su lista de dominios compatibles. Recomendamos usar una clave separada para el desarrollo y la producción y no permitir localhost en su clave de sitio de producción.

1: Cree una clave separada para su entorno de desarrollo

2: Añadir 127.0.0.1 a la lista de dominios permitidos

3: Guarde los cambios y permita hasta 30 minutos para que los cambios afecten

 8
Author: tony09uk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-25 21:06:21

Según La documentación de Google recaptcha

Los dominios Localhost ya no son compatibles de forma predeterminada. Si usted desea continúe apoyándolos para el desarrollo puede agregarlos a la lista de dominios soportados para su clave de sitio. Ir a la consola de administración para actualice su lista de dominios compatibles. Recomendamos usar una llave separada para el desarrollo y la producción y para no permitir localhost en su clave del sitio de producción

 4
Author: Artur Cesar De Melo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-16 23:20:59

Recaptcha no funcionará en localhost/

Use `127.0.0.1/` instead of `localhost/`
 3
Author: alianjum0,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-22 11:36:07

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

 3
Author: Mykhailo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-24 22:11:22

Si tiene una clave antigua, debe recrear su clave API. También tenga en cuenta los proxies.

 1
Author: Soheil Novinfard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-18 11:26:40

Https://developers.google.com/recaptcha/docs/domain_validation

Compruebe la parte donde dice que puede desactivar la comprobación. Solo hazlo para el desarrollo.

 1
Author: Siddharth Tyagi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-08 10:04:11

Sí, esta es una pregunta antigua, pero esto puede ayudar a todos los usuarios que tienen problemas con reCAPTCHA en localhost. Google de hecho 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 secure token

He publicado una SOLUCIÓN DE TRABAJO para PHP aquí

 0
Author: Hexodus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:33

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

 0
Author: Merty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-30 02:37:25

Recientemente estaba trabajando en la creación de un sitio web que involucra recaptcha v2 y tengo la necesidad de hacer la automatización de pruebas en mi localhost. No he añadido ninguna ip o localhost en el portal de administración de recaptcha.

Siga los siguientes pasos

  1. Inicie sesión en el sitio de administración de recaptcha captura de pantalla

  2. Localice la Configuración de la tecla

  3. Haga Clic en configuración avanzada

  4. Bajo Validación de nombre de dominio , desmarque Verifique el origen de reCAPTCHA solutions casilla de verificación. Esta opción se usa para verificar que las solicitudes provienen de uno de los dominios mencionados 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 deshabilité esta y usé esta clave para probar en localhost.

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

 0
Author: cyberviral,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-28 22:55:40