Important: La version 1.0 de l'API reCAPTCHA n'est plus compatible. Veuillez passer à la version 2.0. En savoir plus
La bibliothèque Java reCAPTCHA permet de placer facilement un CAPTCHA sur votre site Web Java, ce qui vous aide à empêcher les bots d'en abuser. Cette bibliothèque englobe API reCAPTCHA :
Pour utiliser reCAPTCHA avec Java/JSP, vous pouvez télécharger le fichier reCAPTCHA bibliothèque (contribué par Soren), puis décompressez-la. En général, la seule chose dont vous avez besoin est Le fichier JAR (recaptcha4j-X.X.X.jar), que vous devez copier à un emplacement où il peut être chargé par votre application Java. Par exemple, si vous utilisez Tomcat pour exécuter JSP, vous pouvez placer le fichier JAR dans un répertoire nommé WEB-INF/lib/.
Démarrage rapide
Une fois que vous vous êtes inscrit pour recevoir vos clés API et que vous avez téléchargé la bibliothèque Java reCAPTCHA, vous trouverez ci-dessous des instructions de base pour l'installation de reCAPTCHA sur votre site.
Côté client (comment afficher l'image CAPTCHA)
Si vous souhaitez utiliser le plug-in Java pour afficher le widget reCAPTCHA, vous devez importer les classes reCAPTCHA appropriées. Dans le fichier JSP, insérez ces lignes à proximité de la ligne en haut du fichier avec l'élément du formulaire où le widget reCAPTCHA sera affiché:
<%@ page import="net.tanesha.recaptcha.ReCaptcha" %> <%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %>
Vous devez ensuite créer une instance de reCAPTCHA:
ReCaptcha c = ReCaptchaFactory.newReCaptcha("your_public_key", "your_private_key", false);
Enfin, vous pouvez obtenir le code HTML permettant d'afficher le widget reCAPTCHA à l'adresse suivante : appel de fonction:
c.createRecaptchaHtml(null, null)
Dans votre fichier JSP, votre code peut donc se présenter comme suit:
<%@ page import="net.tanesha.recaptcha.ReCaptcha" %> <%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %> <html> <body> <form action="" method="post"> <% ReCaptcha c = ReCaptchaFactory.newReCaptcha("your_public_key", "your_private_key", false); out.print(c.createRecaptchaHtml(null, null)); %> <input type="submit" value="submit" /> </form> </body> </html>
N'oubliez pas de remplacer your_public_key
et your_private_key
par
les valeurs de vos clés API.
Côté serveur (comment vérifier si l'utilisateur a saisi la bonne réponse)
Dans l'application qui valide votre formulaire, vous devez d'abord importer les fichiers Classes reCAPTCHA:
import net.tanesha.recaptcha.ReCaptchaImpl; import net.tanesha.recaptcha.ReCaptchaResponse;
Vous devez ensuite insérer le code permettant de valider la solution reCAPTCHA saisie par l'utilisateur. L'exemple ci-dessous (en page JSP) montre comment procéder:
<%@ page import="net.tanesha.recaptcha.ReCaptchaImpl" %> <%@ page import="net.tanesha.recaptcha.ReCaptchaResponse" %> <html> <body> <% String remoteAddr = request.getRemoteAddr(); ReCaptchaImpl reCaptcha = new ReCaptchaImpl(); reCaptcha.setPrivateKey("your_private_key");
String challenge = request.getParameter("recaptcha_challenge_field"); String uresponse = request.getParameter("recaptcha_response_field"); ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remoteAddr, challenge, uresponse); if (reCaptchaResponse.isValid()) { out.print("Answer was entered correctly!"); } else { out.print("Answer is wrong"); } %> </body> </html>
Dans le code ci-dessus :
remoteAddr
est l'adresse IP de l'utilisateur (qui est transmise au reCAPTCHA
serveurs)uresponse
contient la réponse de l'utilisateur au test reCAPTCHA.Important: Mise en cache DNS
Java rencontre un problème gênant qui peut entraîner la connexion entre votre serveur et reCAPTCHA doivent être interrompus tous les deux ou trois mois. Le reCAPTCHA cessera alors de fonctionner sur votre site se produit. Découvrez ci-dessous comment résoudre ce problème.
Par défaut, la machine virtuelle Java (JVM) met en cache toutes les résolutions DNS indéfiniment au lieu d'utiliser la valeur TTL (Time To Live) qui est spécifiée dans l'enregistrement DNS de chaque hôte. Pour ceux de comment ne pas en avoir connaissance, une résolution DNS est une requête envoyée à un serveur DNS qui convertit un nom d'hôte lisible à une adresse IP. Par exemple, il convertit www.recaptcha.net dans les Adresse IP 69.12.97.164. C'est bien sûr beaucoup plus complexe que cela, et si vous voulez Pour en savoir plus, l'entrée de Wikipédia sur DNS est un bon point de départ.
Bien que cela arrive rarement, les serveurs reCAPTCHA peuvent modifier les adresses IP. Java met en cache le DNS de recherches permanentes, la connexion entre votre serveur et reCAPTCHA peut être interrompue. lorsque l'adresse IP reCAPTCHA change. Dans ce cas, redémarrez votre JVM (par exemple, en redémarrant Tomcat) peut résoudre le problème, car il provoque une nouvelle résolution DNS. Cependant, vous n'avez probablement pas vous souhaitez redémarrer votre JVM une fois tous les deux ou trois mois, chaque fois que votre site est défaillant, car le reCAPTCHA les serveurs ont changé d'adresse IP.
Pour résoudre définitivement ce problème, vous pouvez transmettre -Dsun.net.inetaddr.ttl=30 à votre app-server (cela indique à Java de mettre en cache le DNS pendant 30 secondes uniquement). Dans Tomcat pour Windows, cela peut être effectué en
- Arrêter Tomcat
- Accéder à tomcat\bin
- Exécutez Tomcat5w.exe
- Accéder à l'onglet Java
- Ajout d'une propriété Java à la section des options Java: -Dsun.net.inetaddr.ttl=30
- Quitter
- Démarrer Tomcat
Dans Tomcat pour Linux ou MacOS X, vous devez exécuter la commande suivante dans la ligne de commande (puis redémarrez Tomcat):
export JAVA_OPTS="$JAVA_OPTS -Dsun.net.inetaddr.ttl=30"
Voici un article pour en savoir plus sur ce problème.