¿Cómo funciona esta casilla de verificación recaptcha y cómo puedo usarla?


Me he registrado recientemente en el sitio web de oneplusone https://account.oneplus.net/sign-up , y notó esta casilla de verificación recaptcha

casilla de verificación recaptcha

¿Cómo funciona y cómo puedo usarlo en mis sitios? Mucho mejor que esas crípticas palabras / dígitos:)

El sitio recaptcha no menciona ningún nuevo método recaptcha... https://www.google.com/recaptcha/intro/index.html

Author: Mogsdad, 2014-08-28

5 answers

Esta es una API beta para reCAPTCHA. Obtengo esto de la fuente de su API de JS: https://www.google.com/recaptcha/api.js haciendo referencia a "API2". Y también encontré esto: http://jaswsinc.com/recaptcha-ads / Aparentemente hicieron una beta de solo invitación de su "no CAPTCHA reCAPTCHA" So.... Probablemente todavía no podrás hacer que funcione en tu sitio. No puedo encontrar ninguna información sobre cómo optar por la beta, pero si busca "No CAPTCHA reCAPTCHA beta", puede ver una serie de personas que han mencionado obtener el correo electrónico de Google para que se unan.

Si encuentras un lugar para entrar en la beta, ¡por favor comparte! De lo contrario, parece que el lanzamiento público llegará en 2015...

 30
Author: Ian M,
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
2014-11-11 19:16:51

Esta entrada no responde a la pregunta original, sin embargo ayuda a implementar una solución similar. Como dijo @IanM, la casilla recaptcha está en fase beta y no se puede usar sin invitación.

IMPORTANTE EDITAR Google presentó el nuevo reCAPTCHA

Este es un CAPTCHA basado en JavaScript.

Dado que la mayoría de los robots de spam no ejecutan JavaScript y no pueden identificar la correlación entre el texto mostrado y el DOM o las acciones requeridas, no pueden hacer clic en la casilla de verificación.

Tenga en cuenta que no hay ninguna casilla de verificación, es solo un elemento div con algún estilo CSS. Los robots de spam están tratando de llenar los elementos de entrada del formulario, pero no hay entrada en el CAPTCHA. La marca de verificación es solo otro div (css clase).

Cuando hace clic en la casilla, una solicitud ajax notifica al servidor que se hizo clic en el div y el servidor almacena esta información en un almacenamiento temporal (marca el token: este token fue activado por un humano). Cuando envía el formulario, un campo oculto envía el token que se activó, luego, cuando el servidor valida la información del formulario, reconocerá que el token se activó. Si el token no está activado, el formulario será invalidado.

Los pasos en bullet puntos:

  • Generar un identificador único y añadirlo al formulario con una entrada oculta
  • Renderice una casilla de verificación en el sitio (sin usar el elemento <input>, posiblemente usando <div>) y agregue el identificador generado previamente (puede usar los atributos html5 data-*)
  • Cuando el usuario haga clic en la casilla de verificación, envíe una solicitud ajax al servidor y valide el CAPTCHA, si es válido márquelo como in use. (Mostrar el resultado - identificador está BIEN / no está BIEN - a la usuario)
  • Cuando el usuario envía el formulario, los datos del formulario contienen el identificador. Compruébelo una vez más, debe existir y debe estar en estado in use.
  • Si se pasan todas las validaciones, los datos del formulario están listos para usar/procesar

Puede vincular el identificador a la sesión del usuario, la dirección IP y/o puede usar límites de tiempo para mejorar la seguridad.

NOTA Este tipo de CAPTCHA solo funciona cuando el JavaScript está habilitado!

NOTA (editar 1) Como dijo @crazypotato, hay algunas herramientas de automatización, que pueden ejecutar JavaScript, estas herramientas también son capaces de enviar la solicitud AJAX adecuada y disparar el evento Click en la casilla div.

NOTA (edit 2) Tenga en cuenta que un script escrito específicamente para un sitio o para romper un tipo de captcha llegará tarde o temprano. No hay una protección definitiva, solo puedes hacer que los bots (o sus desarrolladores) trabajen más duro.

NOTE (edit 3) Los pasos y la descripción en esta respuesta solo contiene información básica sobre este tipo de captcha, siempre tiene que agregar validaciones adicionales y pasos de seguridad para hacerlo más seguro. Por ejemplo, Google noCaptcha dispara sistemáticamente un reCAPTCHA estándar después de 3 "div clicks".

 113
Author: Pred,
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-10-14 07:21:36

Aquí está mi código ejecutándose sin problemas en PHP:

Lado Del Cliente:

<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>

Lado del servidor:

if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
    $privatekey = "SECRET_KEY";
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $data = array(
        'secret' => $privatekey,
        'response' => $captcha,
        'remoteip' => $_SERVER['REMOTE_ADDR']
    );

    $curlConfig = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $data
    );

    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $response = curl_exec($ch);
    curl_close($ch);
}

$jsonResponse = json_decode($response);

if ($jsonResponse->success == "true")
    doSomething();
else
    doSomeOtherThing();

:)

 9
Author: Ismaestro,
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-04-23 16:31:57

Vine aquí en mi búsqueda, no vi una respuesta, y así seguí buscando.

Después de mi búsqueda, esta ventana todavía estaba abierta, así que estoy actualizando este post con mis hallazgos.

Aquí es donde puedes aprender sobre reCAPTCHA :

Http://scraping.pro/no-captcha-recaptcha-challenge /

Básicamente, sin embargo, agregas esto a tu página web:

<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
    <div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
    <input value="submit" type="submit" />
</form>

Para obtener sus claves reCAPTCHA , vaya a este Google sitio:

Https://www.google.com/recaptcha/intro/index.html

Una vez que tenga sus claves utilizando el enlace anterior, puede profundizar en la codificación de esto utilizando la siguiente información de Google:

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

NOTA:

De la documentación de Google:

El script debe cargarse utilizando el protocolo HTTPS y puede incluirse desde cualquier punto de la página sin restricción.

Aquí hay un ejemplo de cómo conseguí que funcionara:

<html>
<head>
    <title>Contact</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <script>
    var onloadCallback = function () {
        grecaptcha.render('dvCaptcha', {
            'sitekey': '<%=ReCaptcha_Key %>',
            'callback': function (response) {
                $.ajax({
                    type: "POST",
                    url: "CS.aspx/VerifyCaptcha",
                    data: "{response: '" + response + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (r) {
                        var captchaResponse = jQuery.parseJSON(r.d);
                        if (captchaResponse.success) {
                            $("[id*=txtCaptcha]").val(captchaResponse.success);
                            $("[id*=lblAlarm]").hide();
                        } else {
                            $("[id*=txtCaptcha]").val("");
                            $("[id*=lblAlarm]").show();
                            var error = captchaResponse["error-codes"][0];
                            $("[id*=lblAlarm]").html("RECaptcha error. " + error);
                        }
                    }
                });
            }
        });
    };
    </script>
</head>
<body>
    <form action="?" method="POST">
        <div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
        <br />
        <asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
        <asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
    </form>
</body>
</html>

Si necesita validar en el ASP.NET code-behind, simplemente verifique que el control" g-recaptcha-response " esté rellenado:

protected static string ReCaptcha_Key, ReCaptcha_Secret;

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
    {
        // other code
    } else
    {
       lblAlarm.Text = "reCAPTCHA failed.";
    }
}

Esperemos que algunos de ustedes encuentren esto útil.

 5
Author: jp2code,
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-03-08 22:03:13

Gracias a todos por su contribución a este hilo, es genial ver a tantas personas interesadas en la nueva herramienta recaptcha.

No pude encontrar una implementación. net de la misma, por lo que han construido un simple control de formularios web, que se puede encontrar aquí https://github.com/pnmcosta/recaptchav2dotnet

 3
Author: Pedro Costa,
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-22 11:06:46