1) Autenticarse en Google e ir a la siguiente página:
https://www.google.com/recaptcha/admin#list
Donde tendremos que dar de alta nuestra página web.
2) Guardamos las Clave del Sitio y la Clave Secreta, la usaremos más tarde.
3) Montamos el formulario con el captcha, para ello:
Deberemos de pegar este fragmento antes de la etiqueta
de cierre en la plantilla HTML:
<script src="https://www.google.com/recaptcha/api.js"> </script>
Pega este fragmento dentro del elemento <form> exactamente donde quieras que aparezca el widget de reCAPTCHA:
<div class="g-recaptcha" data-sitekey="Clave del Sitio"> </div>
Ejemplo de JSP con un formulario que usa recaptcha v2:
4) Montamos el controlador para verificar si se supera el captcha o no:
<html> <head> <script src="https://www.google.com/recaptcha/api.js"> </script> </head> <% String clavePublica = "XXXXXXXXXXXXXXXXXXX"; // Es la Clave del Sitio %> <body> <h1>Test recaptcha v2 con Java</h1> <form action="Controller.jsp" method="get"> Campo Texto: <input name="texto" placeholder="Campo cualquiera" type="text" /> <div class="g-recaptcha" data-sitekey="<%=clavePublica%>"></div> <button type="submit"> Enviar</button> </form> </body> </html>
Una vez que recojamos todos los parámetros del formulario, veremos que aparece uno nuevo "g-recaptcha-response".
Para saber si el captcha se ha superado correctamente, se tendrá que llamar a la siguiente url (método get), pasándole los siguientes parámetros:
URL: https://www.google.com/recaptcha/api/siteverify
secret (requerido) La Clave Privada
response(requerido) El valor que obtenemos en el campo "g-recaptcha-response" del formulario.
remoteip La ip del usuario.
Un ejemplo del código de como se hace esta llamada en JSP:
<html> <body> <% String ClaveSecreta = "XXXXXXXXXXXXXXXXXX"; // Es la Clave Privada String ipusuario = request.getRemoteAddr(); String respuestaRecaptcha = request.getParameter("g-recaptcha-response"); String line, outputString = ""; try{ java.net.URL url = new java.net.URL ("https://www.google.com/recaptcha/api/siteverify?secret="+ClaveSecreta+ "&response="+respuestaRecaptcha+"&remoteip="+ipusuario); java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); java.io.BufferedReader reader = new java.io.BufferedReader (new java.io.InputStreamReader(conn.getInputStream())); while ((line = reader.readLine()) != null) { outputString += line; } } catch(Exception e){ e.printStackTrace(); } %> <h1>Test recaptcha v2 con Java - Recepción del formulario</h1> <h2> Datos recopilados del formulario:</h2> <b>Campo Texto</b>: <%= request.getParameter("texto") %> <h2>Datos recopilados del formulario que provienen del recaptcha:</h2> <b>Campo g-recaptcha-response</b>: <%= respuestaRecaptcha %> <h2>Verificamos con Recaptcha si se ha superado el captcha</h2> <b>Clave Secreta</b>: <%=ClaveSecreta%> <b>Ip Usuario</b>: <%=ipusuario%> <b>Respuesta bruta Json de recaptcha</b>:<%=outputString%> </body> </html>
Palabras y frases clave:
Como integrar recaptcha v2 de google un un formulario JSP o JAVA
Usar recaptcha con Java
Como programar un formulario Java con re-captcha
Ejemplo de un formulario JSP con captcha
Ejemplo captcha en Java