Önemli: reCAPTCHA API'nin 1.0 sürümü artık desteklenmiyor. Lütfen sürüm 2.0'a yükseltin. Daha fazla bilgi
reCAPTCHA Java Kitaplığı, CAPTCHA yerleştirmenin basit bir yolunu sunar. kullanarak bot'ların bunu kötüye kullanmasını önlemenize yardımcı olur. Kitaplık reCAPTCHA API'si.
Java/JSP ile reCAPTCHA kullanmak için reCAPTCHA Java'yı indirebilirsiniz Kitaplık'ı buraya ekleyin (Soren tarafından katkıda bulunur) ve sıkıştırılmış dosyayı açın. Genellikle tek ihtiyacınız olan şey jar dosyasını (recaptcha4j-X.X.X.jar) yükleyebilirsiniz. tarafından gerçekleştirilir. Örneğin, JSP'yi çalıştırmak için Tomcat kullanıyorsanız, WEB-INF/lib/ adlı bir dizinde dizin.
Hızlı Başlangıç
API anahtarlarınızı kaydolup reCAPTCHA Java Kitaplığı'nı indirdikten sonra aşağıdaki temel talimatları aşağıda bulabilirsiniz: sitenize reCAPTCHA'yı yükleyerek yapabilirsiniz.
İstemci Tarafı (CAPTCHA resmi nasıl gösterilir?)
reCAPTCHA widget'ını görüntülemek için Java eklentisini kullanmak istiyorsanız gözden geçirin. JSP'de bunun için bu satırları dosyanın üst kısmına eklenir ve reCAPTCHA widget'ının görüntüleneceği form öğesi:
<%@ page import="net.tanesha.recaptcha.ReCaptcha" %> <%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %>
Ardından, bir reCAPTCHA örneği oluşturmanız gerekir:
ReCaptcha c = ReCaptchaFactory.newReCaptcha("your_public_key", "your_private_key", false);
Son olarak, reCAPTCHA widget'ını gösterecek HTML aşağıdaki işlev çağrısı:
c.createRecaptchaHtml(null, null)
Dolayısıyla, JSP'de kodunuz aşağıdaki gibi görünebilir:
<%@ 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>
your_public_key
ve your_private_key
değerlerini şununla değiştirmeyi unutmayın:
API anahtar değerleriniz.
Sunucu Tarafı (Kullanıcının doğru yanıtı girip girmediğini test etme)
Formunuzu doğrulayan başvuruda öncelikle gerekli formları reCAPTCHA sınıfları:
import net.tanesha.recaptcha.ReCaptchaImpl; import net.tanesha.recaptcha.ReCaptchaResponse;
Ardından, kullanıcının girdiği reCAPTCHA çözümünü doğrulayan kodu eklemeniz gerekir. Aşağıdaki örnekte (JSP'deki) bunun nasıl yapılabileceği gösterilmektedir:
<%@ 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>
Yukarıdaki kodda:
remoteAddr
, kullanıcının IP adresidir (reCAPTCHA'ya iletilir)
sunucular)uresponse
, kullanıcının reCAPTCHA testine yanıtını içerir.Önemli: DNS Önbelleğe Alma
Java'da, sunucunuz ile reCAPTCHA arasında bağlantı kurulmasına neden olabilecek rahatsız edici bir sorun var birkaç ayda bir kesintiye uğratılır ve bu durum gerçekleştiğinde reCAPTCHA sitenizde çalışmayı durdurur. yaşanır. Bu sorunu nasıl düzelteceğinizi öğrenmek için aşağıdaki bölümü okuyun.
Java Sanal Makinesi (JVM) varsayılan olarak tüm DNS aramalarını her ana makinenin DNS kaydında belirtilen geçerlilik süresi (TTL) değeridir. Şu kullanıcılara yönelik: DNS araması, DNS sunucusuna gönderilen bir istektir ve DNS araması okunabilir ana makine adını bir IP adresine bağlayabilirsiniz. Örneğin, www.recaptcha.net öğesini 69.12.97.164 IP adresi. Elbette bundan çok daha karmaşık. Daha fazla bilgi için Wikipedia'nın DNS iyi bir başlangıç noktasıdır.
Sık sık olmasa da reCAPTCHA sunucuları IP adreslerini değiştirebilir. Java, DNS'yi önbelleğe aldığı için sonsuza kadar arama yaparsa, bu durum sunucunuz ile reCAPTCHA arasındaki bağlantının kesilmesine neden olabilir. reCAPTCHA IP adresi değiştiğinde. Bu durumda JVM'nizi yeniden başlatın (ör. Tomcat), yeni bir DNS aramasına neden olduğundan sorunu düzeltebilir. Ancak büyük olasılıkla siteniz bozulduğunda JVM'nizi birkaç ayda bir yeniden başlatmak istersiniz çünkü reCAPTCHA sunucular IP adresini değiştirdi.
Bu sorunu tamamen çözmek için -Dsun.net.inetaddr.ttl=30 adresini app-server (uygulama sunucusu) (bu ayar, Java'ya DNS'yi yalnızca 30 saniye boyunca önbelleğe almasını söyler). Windows için Tomcat'te bu, tarafından yapılacak işlemler:
- Tomcat'i durdur
- Tomcat\bin konumuna gidin.
- Tomcat5w.exe'yi çalıştırın
- Java sekmesine git
- Java mülkü, Java seçenekleri bölümüne ekleyin: -Dsun.net.inetaddr.ttl=30
- Çık
- Tomcat'i başlat
Linux veya MacOS X için Tomcat'te, komut satırında aşağıdaki komutu çalıştırmanız gerekir (ve ardından Tomcat'i yeniden başlatın):
export JAVA_OPTS="$JAVA_OPTS -Dsun.net.inetaddr.ttl=30"
Bir makaleyi aşağıda bulabilirsiniz açıklamaya çalışın.