¿Utilizas una nueva versión de Laravel?

Puedes leer una versión actualizada de este artículo visitando el siguiente enlace: Cómo integrar Google reCAPTCHA en Laravel 8

Recientemente Google ha actualizado reCAPTCHA a la versión número 3 , agregando un feature muy interesante para los usuarios de nuestro sitio web, de forma en que ya no tendremos que completar el famoso “No soy robot” que en ocasiones desespera cuando no lo completamos correctamente.

¿Cómo funciona reCAPTCHA V3?


Tradicionalmente  seleccionaríamos un par de imágenes que nos muestra el API de Google reCAPTCHA, posteriormente enviaríamos  una query y nos retorna un resultado, true o false. La funcionalidad cambia drásticamente con la versión 3 ya que ahora ésta nos dará un puntaje para cada petición web que haga nuestro usuario. Esto lo hace en automático Google con inteligencia artificial, de manera en que se entrena cada vez que un usuario entra en tu sitio web.

Nosotros podemos configurar en nuestra web el porcentaje/score valido para aceptar un request post, los valores van de 0.0 a 1.0 y lo mejor de todo es que la implementación es tan sencilla como la V2.


Integrar reCAPTCHA v3 en Laravel 5.7

Requerimientos para hacer la integración:

Packages utilizados:

Instalación

Vamos a proceder a instalar una dependencia a través de composer con el siguiente comando:

composer require josiasmontag/laravel-recaptchav3

Una vez terminada la instalación del package, procederemos a modificar nuestro archivo .env para agregar dos parámetros que nos ayudarán a agregar nuestras keys de Google reCAPTCHA:

RECAPTCHAV3_SITEKEY=sitekey
RECAPTCHAV3_SECRET=secret

Modifica el valor sitekey y secret con las keys que creaste en el panel de administrador de Google reCAPTCHA. Una vez que hayas terminado de modificar este par de líneas, reinicia tu servidor si estas en localhost para que tome los nuevos parámetros.

Posteriormente vamos a publicar el archivo de configuración con el siguiente comando:

php artisan vendor:publish --provider="Lunaweb\RecaptchaV3\RecaptchaV3ServiceProvider"

Integrar en el frontend

Necesitamos ingresar primeramente el render que contendrá el JS, yo recomiendo siempre que se agregue al final de todo el html antes del cierre de <body>:

{!! RecaptchaV3::initJs() !!}

Tendremos que indicarle a Google reCAPTCHA el evento que está haciendo la petición, como por ejemplo “registro”, “login” o “contacto”. Tendrás que agregarlo dentro de tu formulario:

<form action="/contacto" method="post">
	{!! RecaptchaV3::field('contacto') !!}
	<input type="submit" value="Enviar formulario">
</form>

Tu backend

Procederemos a verificar el response, el evento y el score de la petición.

$validar = Validator::make(Input::all(), [
	'g-recaptcha-response' => 'required|recaptchav3:contacto,0.5'
]);

Con esto vamos a validar que el campo g-recaptcha-response sea válido, que contenga el evento de contacto que le indicamos en el formulario y el score sea de mínimo 0.5 para aceptar la petición.

Con el package podemos obtener el score que reCAPTCHA nos da y generar una respuesta variable dependiendo del nivel del score, lo realizaremos de la siguiente manera:

$score = RecaptchaV3::verify($request->get('g-recaptcha-response'), 'contacto')
if($score > 0.7) {
    // go
} elseif($score > 0.3) {
    // require additional email verification
} else {
    return abort(400, 'You are most likely a bot');
}

Con esto ya quedaría instalado e implementado Google reCAPTCHA V3 en Laravel, la verdad es que es extremadamente sencilla la implementación, no es nada del otro mundo. En caso de que necesites ayuda con el code, deja tu duda en los comentarios y con gusto te ayudaremos a que hagas la implementación.


Si te ha gustado el articulo por favor deja un comentario o compártelo en redes sociales, de esta manera me ayudarás a seguir trayendo contenido de calidad al blog totalmente gratis! 🙂

Un saludo virtual! 😀

Obtén beneficios exclusivos

Suscríbete al boletín y obtén beneficios exclusivos directo en tu correo.

Gracias por suscribirte...

Algo salió mal...