Wichtig: Version 1.0 der reCAPTCHA API wird nicht mehr unterstützt. Führen Sie ein Upgrade auf Version 2.0 aus. Weitere Informationen
Die reCAPTCHA-Java-Bibliothek bietet eine einfache Möglichkeit, ein CAPTCHA zu platzieren. auf Ihrer Java-basierten Website und können so verhindern, dass Bots sie missbrauchen. Die Bibliothek umfasst die reCAPTCHA API.
Wenn Sie reCAPTCHA mit Java/JSP verwenden möchten, können Sie das reCAPTCHA Java herunterladen Bibliothek herunterladen (beigefügt von Sören) und entpacken Sie sie. In der Regel brauchen Sie nur die JAR-Datei (recaptcha4j-X.X.X.jar), die Sie an einen Ort kopieren müssen, an dem sie geladen werden kann durch Ihre Java-Anwendung. Wenn Sie beispielsweise mit Tomcat arbeiten, können Sie die JAR-Datei in die JAR-Datei in einem Verzeichnis namens WEB-INF/lib/.
Schnellstart
Nachdem Sie sich für Ihre API-Schlüssel registriert und die reCAPTCHA-Java-Bibliothek heruntergeladen haben, finden Sie im Folgenden eine grundlegende Anleitung für um reCAPTCHA auf Ihrer Website zu installieren.
Clientseitig (Anleitung zum Anzeigen des CAPTCHA-Bildes)
Wenn Sie das Java-Plug-in zur Anzeige des reCAPTCHA-Widgets verwenden möchten, müssen Sie entsprechenden reCAPTCHA-Klassen. In Markdown fügen Sie diese Zeilen dazu in der Nähe des am Anfang der Datei mit dem Formularelement, wo das reCAPTCHA-Widget angezeigt wird:
<%@ page import="net.tanesha.recaptcha.ReCaptcha" %> <%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %>
Anschließend müssen Sie eine reCAPTCHA-Instanz erstellen:
ReCaptcha c = ReCaptchaFactory.newReCaptcha("your_public_key", "your_private_key", false);
Der HTML-Code zum Anzeigen des reCAPTCHA-Widgets kann schließlich über die folgende URL abgerufen werden: Funktionsaufruf:
c.createRecaptchaHtml(null, null)
Ihr Code könnte in vSphere also in etwa wie folgt aussehen:
<%@ 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>
Vergessen Sie nicht, your_public_key
und your_private_key
durch
Ihre API-Schlüssel/Wert-Paare.
Serverseitig (So können Sie testen, ob der Nutzer die richtige Antwort eingegeben hat)
In der Anwendung, mit der Ihr Formular verifiziert wird, müssen Sie zunächst die erforderlichen reCAPTCHA-Klassen:
import net.tanesha.recaptcha.ReCaptchaImpl; import net.tanesha.recaptcha.ReCaptchaResponse;
Als Nächstes müssen Sie den Code einfügen, mit dem die vom Nutzer eingegebene reCAPTCHA-Lösung verifiziert wird. Das folgende Beispiel (in JSP) zeigt, wie dies umgesetzt werden kann:
<%@ 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>
Im obigen Code gilt Folgendes:
remoteAddr
ist die IP-Adresse des Nutzers, die an das reCAPTCHA übergeben wird.
Server)uresponse
enthält die Antwort des Nutzers auf die reCAPTCHA-Aufgabe.Wichtig: DNS-Caching
Java hat ein lästiges Problem, das zur Verbindung zwischen deinem Server und reCAPTCHA führen kann wird alle paar Monate unterbrochen. reCAPTCHA funktioniert dann auf Ihrer Website nicht mehr. passiert. Wie Sie dieses Problem beheben können, erfahren Sie weiter unten.
Standardmäßig speichert die Java Virtual Machine (JVM) alle DNS-Lookups dauerhaft im Cache, anstatt Die Gültigkeitsdauer (TTL), die im DNS-Eintrag jedes Hosts angegeben ist. Für diejenigen von ein DNS-Lookup ist eine Anfrage, die an einen DNS-Server gesendet wird und Hostnamen in eine IP-Adresse zu konvertieren. Beispielsweise wird www.recaptcha.net in den IP-Adresse 69.12.97.164. Es ist natürlich viel komplexer. Wenn Sie möchten, um mehr zu erfahren, steht der Eintrag von Wikipedia DNS ist ein guter Ausgangspunkt.
reCAPTCHA-Server können IP-Adressen zwar nicht oft ändern, Da Java DNS sucht, kann dies dazu führen, dass die Verbindung zwischen Ihrem Server und reCAPTCHA ausfällt. wenn sich die reCAPTCHA-IP-Adresse ändert. Starten Sie in diesem Fall die JVM neu (z.B. Neustart der JVM) Tomcat) kann das Problem beheben, da es einen neuen DNS-Lookup verursacht. Wahrscheinlich müssen Sie Ihre JVM alle paar Monate neu starten möchten, wenn Ihre Website abbricht, weil das reCAPTCHA Server hat die IP-Adresse geändert.
Um das Problem dauerhaft zu beheben, können Sie -Dsun.net.inetaddr.ttl=30 an Ihren app-Server: Dies weist Java an, DNS nur 30 Sekunden lang im Cache zu speichern. In Tomcat für Windows kann dies von
- Tomcat stoppen
- Zu Tomcat\bin gehen
- Tomcat5w.exe ausführen
- Zum Tab „Java“
- Java-Eigenschaft zum Abschnitt der Java-Optionen hinzufügen: -Dsun.net.inetaddr.ttl=30
- Beenden
- Tomcat starten
In Tomcat für Linux oder MacOS X müssen Sie folgenden Befehl in die Befehlszeile eingeben: (und starten Sie Tomcat neu):
export JAVA_OPTS="$JAVA_OPTS -Dsun.net.inetaddr.ttl=30"
Hier finden Sie einen Artikel um weitere Informationen zu diesem Problem zu erhalten.