Java/JSP के साथ reCAPTCHA का इस्तेमाल करना

अहम जानकारी: reCAPTCHA API का वर्शन 1.0 अब काम नहीं करता. कृपया वर्शन 2.0 पर अपग्रेड करें. ज़्यादा जानें

reCAPTCHA Java लाइब्रेरी की मदद से, कैप् चा को आसानी से डाला जा सकता है जिससे आपको बॉट का गलत इस्तेमाल करने से रोकने में मदद मिलती है. लाइब्रेरी में reCAPTCHA API.

Java/JSP के साथ reCAPTCHA का इस्तेमाल करने के लिए, re कैप्चा Java डाउनलोड करें लाइब्रेरी को यहां खोलें और उसे अनज़िप करें. आम तौर पर, आपको सिर्फ़ इस चीज़ की ज़रूरत होगी जार फ़ाइल (re कैप्चा4j-X.X.X.Jar) पर सेट करनी होगी, जिसे आपको ऐसी जगह पर कॉपी करना होगा जहां इसे लोड किया जा सके को लागू किया जा सकता है. उदाहरण के लिए, यदि आप जेएसपी चलाने के लिए टॉमकैट का उपयोग कर रहे हैं, तो आप जार डाल सकते हैं फ़ाइल को WEB-INF/lib/ नाम की डायरेक्ट्री में सेव करना होगा.

क्विक स्टार्ट

एपीआई पासकोड के लिए साइन अप करने और reCAPTCHA की Java लाइब्रेरी डाउनलोड करने के बाद, यहां दिए गए बुनियादी निर्देश देखें आपकी साइट पर reCAPTCHA इंस्टॉल किया जा रहा है.

क्लाइंट साइड (कैप्चा इमेज दिखाने का तरीका)

अगर आपको reCAPTCHA विजेट दिखाने के लिए Java प्लगिन का इस्तेमाल करना है, तो आपको इसे इंपोर्ट करना होगा सही reCAPTCHA क्लास का इस्तेमाल करना चाहिए. जेएसपी में, आप फ़ाइल के सबसे ऊपर फ़ॉर्म एलिमेंट के साथ reCAPTCHA विजेट दिखेगा:

    <%@ page import="net.tanesha.recaptcha.ReCaptcha" %>
    <%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %>

इसके बाद, आपको reCAPTCHA का एक इंस्टेंस बनाना होगा:

    ReCaptcha c = ReCaptchaFactory.newReCaptcha("your_public_key", "your_private_key", false);

आखिर में, reCAPTCHA विजेट दिखाने के लिए एचटीएमएल कोड की जानकारी पाने के लिए, यहां दिए गए तरीके का इस्तेमाल किया जा सकता है फ़ंक्शन कॉल:

    c.createRecaptchaHtml(null, null)

इसलिए, JPG में आपका कोड कुछ ऐसा दिख सकता है:

    <%@ 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 और your_private_key को इससे बदलना न भूलें आपकी एपीआई कुंजी की वैल्यू.

सर्वर साइड (यह जांच कैसे करें कि व्यक्ति ने सही जवाब डाला है या नहीं)

आपके फ़ॉर्म की पुष्टि करने वाले ऐप्लिकेशन में, आपको सबसे पहले ज़रूरी reCAPTCHA क्लास:

    import net.tanesha.recaptcha.ReCaptchaImpl;
    import net.tanesha.recaptcha.ReCaptchaResponse;

इसके बाद, आपको वह कोड डालना होगा जो उपयोगकर्ता के डाले गए reCAPTCHA समाधान की पुष्टि करता हो. नीचे दिया गया उदाहरण (जेएसपी में) दिखाता है कि यह कैसे किया जा सकता है:

    <%@ 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>

ऊपर दिए गए कोड में:

  • remoteAddr, उपयोगकर्ता का आईपी पता है (जिसे reCAPTCHA को भेजा जाता है सर्वर)
  • uresponse में reCAPTCHA चैलेंज के लिए उपयोगकर्ता का जवाब शामिल है.
  • महत्वपूर्ण: DNS कैशिंग

    Java में एक परेशान करने वाली समस्या है, जिसकी वजह से आपके सर्वर और reCAPTCHA के बीच कनेक्शन बन सकता है सकता है. ऐसा करने पर, reCAPTCHA आपकी साइट पर काम करना बंद कर देगा होता है. इसे ठीक करने का तरीका जानने के लिए नीचे पढ़ें.

    डिफ़ॉल्ट रूप से, Java वर्चुअल मशीन (JVM) सभी डीएनएस लुकअप को हमेशा के लिए कैश मेमोरी में सेव करता है, लेकिन टाइम-टू-लाइव (टीटीएल) वैल्यू, जो हर होस्ट के डीएनएस रिकॉर्ड में तय होती है. इनके लिए आपको पता कैसे नहीं चलता, कि DNS लुकअप एक ऐसा अनुरोध है जो DNS सर्वर को भेजा जाता है, जो आईपी पते के लिए आसानी से पढ़ा जा सकने वाला होस्टनेम. उदाहरण के लिए, यह www.recaptcha.net को आईपी पता 69.12.97.164. यह निश्चित रूप से इससे बहुत जटिल है और अगर आप और जानने के लिए, Wikipedia की एंट्री डीएनएस शुरुआत करने का एक अच्छा तरीका है.

    reCAPTCHA सर्वर अक्सर आईपी पतों में बदलाव नहीं करते. हालांकि, ऐसा बार-बार नहीं होता. क्योंकि Java, डीएनएस को कैश मेमोरी में सेव करता है नहीं बदलता है, तो इससे आपके सर्वर और reCAPTCHA के बीच कनेक्शन टूट सकता है जब reCAPTCHA आईपी पता बदल जाए. अगर ऐसा होता है, तो अपना जेवीएम रीस्टार्ट करें. जैसे, रीस्टार्ट करना टॉमकैट) समस्या को ठीक कर सकते हैं, क्योंकि इससे एक नया डीएनएस लुकअप बनता है. हालांकि, ऐसा हो सकता है कि आपको हर कुछ महीने में एक बार आपकी साइट में गड़बड़ी होने पर JVM को फिर से शुरू करना चाहिए, क्योंकि reCAPTCHA सर्वर का आईपी पता बदल गया है.

    इस समस्या को अच्छे से ठीक करने के लिए, -Dsun.net.inetaddr.ttl=30 को अपने ऐप्लिकेशन-सर्वर (यह Java को सिर्फ़ 30 सेकंड के लिए डीएनएस को कैश मेमोरी में सेव करने के लिए कहता है). Windows के लिए टॉमकैट में, यह हो सकता है होना चाहिए

    1. टॉमकैट को बंद करें
    2. tomcat\bin पर जाएं
    3. Tomcat5w.exe चलाएं
    4. Java टैब पर जाएं
    5. java प्रॉपर्टी को java विकल्प सेक्शन में जोड़ें: -Dsun.net.inetaddr.ttl=30
    6. बाहर निकलें
    7. टॉमकैट शुरू करें

    Linux या MacOS X के लिए Tomcat में, आपको कमांड लाइन में नीचे दिया गया कमांड चलाना होगा (और फिर टॉमकैट को पुनः शुरू करें):

        export JAVA_OPTS="$JAVA_OPTS -Dsun.net.inetaddr.ttl=30"

    यहां एक लेख दिया गया है इस समस्या के बारे में ज़्यादा जानकारी दी गई है.

    इसके बारे में और पढ़ें

  • रंग-रूप को पसंद के मुताबिक बनाना
  • सलाह और दिशा-निर्देश
  • समस्या हल करने से जुड़ी जानकारी