यह चेकबॉक्स पुनरावृत्ति कैसे काम करता है और मैं इसका उपयोग कैसे कर सकता हूं?


150

मैंने हाल ही में वनप्लस की वेबसाइट https://account.oneplus.net/sign-up पर साइन अप किया है और इस चेकबॉक्स को दोबारा देखा है

चेकबॉक्स आवर्ती

यह कैसे काम करता है, और मैं इसे अपनी साइटों पर कैसे उपयोग कर सकता हूं? उन गूढ़ शब्दों / अंकों से बहुत बेहतर है :)

पुनरावृत्ति साइट में किसी भी नई पुनरावृत्ति विधि का उल्लेख नहीं है ... https://www.google.com/recaptcha/intro/index.html


14
मैंने इसे बिल्कुल उसी जगह पर देखा, और ठीक उसी चीज के बारे में सोचा। मैं ध्यान आकर्षित करने के लिए एक इनाम रख रहा हूं। मैं भी उत्सुक हूँ।
का भूत

शायद यह परीक्षण में है और अभी तक रिलीज़ होने के लिए तैयार नहीं है?
user3791372

1
ऐसा करने का एक आसान तरीका है $('form input[type=submit]') .before('<div>Are you a human? <input type="checkbox" name="captcha" /></div>');बॉट्स बॉक्स की जांच नहीं करेंगे क्योंकि यह फॉर्म का हिस्सा नहीं है। jsfiddle.net/s6jkchmz
टायलरएच

1
फॉर्म में एक अपरिवर्तनीय इनपुट फ़ील्ड (जैसे 'टिप्पणियां') डालने का हनीपॉट विधि भी है और फिर इसे css / js के साथ छिपा दिया जाता है। यदि डेटा मौजूद है, तो प्रेषक एक बॉट है। मैंने इसका उपयोग किया है और यह आश्चर्यजनक रूप से अच्छा काम करता है।
डेविड एच। बेनेट

2
जानकारी के लिए: googleonlinesecurity.blogspot.hu/2014/12/...
Pred

जवाबों:


30

यह reCAPTCHA के लिए एक बीटा एपीआई है। मैं उनके JS API: https://www.google.com/recaptcha/api.js "API2" के स्रोत से इसे इकट्ठा करता हूं । और मुझे यह भी पता चला: http://jaswsinc.com/recaptcha-ads/ जाहिर है कि उन्होंने अपने "नहीं कैप्चा reCAPTCHA" का केवल एक आमंत्रण बीटा किया था .... इसलिए आप शायद इस पर काम नहीं कर पाएंगे आपकी साइट, अभी तक। मुझे बीटा में शामिल होने के बारे में कोई जानकारी नहीं मिल सकती है, लेकिन यदि आप "No CAPTCHA reCAPTCHA beta" की खोज करते हैं, तो आप कई ऐसे लोगों को देख सकते हैं, जिन्होंने इसमें शामिल होने के लिए Google से ईमेल प्राप्त करने का उल्लेख किया है।

यदि आपको बीटा में जाने के लिए जगह मिल जाए तो कृपया साझा करें! अन्यथा ऐसा लग रहा है कि 2015 में सार्वजनिक रिलीज आ रही है ...


1
आप हो सकता है का उपयोग करते हुए एक साथ फ्रेंकस्टीन कुछ करने की कोशिश gstatic.com/recaptcha/api2/r20140903161709/recaptcha__en.js यदि आप "जी recaptcha" खोजते हैं, या "चेकबॉक्स" "मैं एक रोबोट नहीं कर रहा हूँ" आप कोड है कि मिल सकता है इसे वहां लागू करना।
इयान एम।

3
ईमेल से अंश:We expect to move all existing reCAPTCHA sites to the new API in 2015.
टिमोथी ज़ॉर्न

1
यहां Google की ब्लॉग पोस्ट में नई No CAPTCHA reCAPTCHA सुविधा की घोषणा की गई है: googleonlinesecurity.blogspot.com/2014/12/…
Nealvs

4
यह कहां व्याख्या करता है, नया कैसे No CAPTCHA reCAPTCHAकाम करता है?
निखिल गिर्राज

5
@ निखिलगिरज, यदि आप जानना चाहते हैं कि कोई कैप्चा कैसे काम करता है , तो मैं आपको इस पोस्ट की ओर इशारा करता हूं ।
इगोर सैविंकिन

114

यह प्रविष्टि मूल प्रश्न का उत्तर नहीं देती है, हालांकि यह एक समान समाधान को लागू करने में मदद करती है। जैसा कि @IMM ने कहा, चेकबॉक्स रिकैप्चा बीटा चरण में है और इसे बिना आमंत्रण के उपयोग नहीं किया जा सकता है।

महत्वपूर्ण EDIT Google ने नया reCAPTCHA पेश किया

यह एक जावास्क्रिप्ट आधारित कैप्चा है।

चूंकि अधिकांश स्पैम्बोट्स जावास्क्रिप्ट को निष्पादित नहीं करते हैं और प्रदर्शित पाठ और डीओएम या आवश्यक कार्यों के बीच सहसंबंध की पहचान नहीं कर सकते हैं जो वे चेकबॉक्स पर क्लिक नहीं कर सकते हैं।

कृपया ध्यान दें कि कोई भी चेकबॉक्स नहीं है, यह बस कुछ सीएसएस स्टाइल के साथ एक div तत्व है। स्पैम्बोट्स फॉर्म इनपुट तत्वों को भरने की कोशिश कर रहे हैं, लेकिन कैप्चा में कोई इनपुट नहीं है। चेक मार्क सिर्फ एक और डिव (css क्लास) है।

जब आप बॉक्स पर क्लिक करते हैं तो एक अजाक्स अनुरोध सर्वर को सूचित करता है कि div पर क्लिक किया गया था और सर्वर एक अस्थायी भंडारण में इस जानकारी को संग्रहीत करता है (टोकन का निशान: यह टोकन एक मानव द्वारा सक्रिय किया गया था)। जब आप फ़ॉर्म जमा करते हैं, तो एक छिपा हुआ फ़ील्ड टोकन भेजता है जिसे सक्रिय किया गया था, तब जब सर्वर प्रपत्र जानकारी को मान्य करता है तो यह पहचान लेगा कि टोकन सक्रिय हो गया था। यदि टोकन सक्रिय नहीं है, तो फॉर्म अमान्य हो जाएगा।

बुलेट पॉइंट्स में कदम:

  • एक विशिष्ट पहचानकर्ता बनाएं और इसे एक छिपे हुए इनपुट के साथ फ़ॉर्म में जोड़ें
  • साइट पर एक चेकबॉक्स को रेंडर करें ( <input>तत्व का उपयोग किए बिना , संभवतः उपयोग करके <div>) और इसमें पहले से तैयार किए गए पहचानकर्ता को जोड़ें (आप html5 data-*विशेषताओं का उपयोग कर सकते हैं )
  • जब उपयोगकर्ता चेकबॉक्स पर क्लिक करता है, तो सर्वर को एक अजाक्स अनुरोध भेजें और कैप्चा को मान्य करें, यदि यह मान्य है तो इसे चिह्नित करें in use। (परिणाम दिखाएं - पहचानकर्ता उपयोगकर्ता के लिए ठीक है / ठीक नहीं है)
  • जब उपयोगकर्ता प्रपत्र भेजता है, तो प्रपत्र के डेटा में पहचानकर्ता होता है। इसे एक बार फिर से जांचें, इसका अस्तित्व होना चाहिए और यह in useराज्य में होना चाहिए ।
  • यदि सभी सत्यापन पारित हो जाते हैं, तो फॉर्म का डेटा उपयोग / प्रक्रिया के लिए तैयार है

आप पहचानकर्ता को उपयोगकर्ता के सत्र, आईपी पते और / या सुरक्षा में सुधार के लिए समय सीमा का उपयोग कर सकते हैं।

नोट इस प्रकार का कैप्चा केवल तभी काम करता है जब जावास्क्रिप्ट सक्षम हो!

नोट (संपादित करें 1) जैसा कि @crazypotato ने कहा है, कुछ स्वचालन उपकरण हैं, जो जावास्क्रिप्ट को क्रियान्वित कर सकते हैं, ये उपकरण उचित AJAX अनुरोध भेजने और चेकबॉक्स div पर क्लिक घटना को आग लगाने में सक्षम हैं।

नोट (संपादित करें 2) कृपया ध्यान दें कि विशेष रूप से एक साइट या एक प्रकार के कैप्चा को तोड़ने के लिए लिखी गई स्क्रिप्ट जल्द या बाद में मिल जाएगी। कोई अंतिम सुरक्षा नहीं है, आप केवल बॉट्स (या उनके डेवलपर्स) को कड़ी मेहनत कर सकते हैं।

नोट (संपादित करें 3) इस उत्तर में दिए गए चरणों और विवरण में केवल इस प्रकार के कैप्चा के बारे में कुछ बुनियादी जानकारी है, आपको इसे और अधिक सुरक्षित बनाने के लिए हमेशा अतिरिक्त सत्यापन और सुरक्षा चरणों को जोड़ना होगा। उदाहरण के लिए, Google noCaptcha 3 "div क्लिक" के बाद व्यवस्थित रूप से एक मानक reCaptcha फायर करता है।


4
मुझे लगता है कि प्रश्न विशेष रूप से "मैं इस सुविधा को Google के reCAPTCHA के साथ कैसे सक्षम करूं?" मुझे पूरा विश्वास है कि मैं इसे स्वयं लागू कर सकता हूं, लेकिन यह उनके मामले के साथ इतना आसान नहीं है।
का भूत

यदि आप किसी स्ट्रीटव्यू पृष्ठ के नीचे एक समस्या की रिपोर्ट करते हैं, तो आपको एक ही नया रिकैप्चा मिलता है। यह वह जगह है जहाँ मैंने पहली बार इसे देखा और जब खोजा तो यह एसओ पृष्ठ मिला।
user2605793

1
एक बॉट को उस अजाक्स अनुरोध को भेजने से क्या रोका जाएगा? अगर हर कोई (या एक अर्ध-बड़ी साइट) इस तरह से कैप्चा को लागू करने के लिए था, तो इसका निश्चित रूप से वैसे भी शोषण किया जाएगा। Cloudflare में एक समान बॉट-डिटेक्शन सिस्टम है जो उपयोगकर्ता को कुछ भी करने की आवश्यकता के बिना काम करने लगता है।
स्टीन स्कुट

सबसे पहले, मैं आपकी टिप्पणी से पूरी तरह सहमत हूं और हां, एक साइट का फायदा उठाने के लिए सीधे लिखा गया एक बॉट थ्रैट हो जाएगा (और यह किसी भी तरह के कैप्शन के लिए सही है)। मैंने अपने पोस्ट की शुरुआत की most botsऔर नहीं all bots। ऐसे समाधान भी होते हैं जब छवि आधारित कैप्चा ब्रेकर बस छवि को एक सॉफ़्टवेयर और पात्रों में एक मानव प्रकार भेजता है (और नियोक्ता सफल पदों की गिनती द्वारा भुगतान किया जाता है)। आप इसे कैसे रोकेंगे? :)
Pred

1
@Pred "स्पैम्बोट्स फॉर्म इनपुट तत्वों को भरने की कोशिश कर रहे हैं, लेकिन कैप्चा में कोई इनपुट नहीं है।" वह दयनीय है। jackiechanface.jpg
crazypotato

9

यहाँ मेरा कोड PHP में समस्या के बिना चल रहा है:

ग्राहक की ओर:

<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>

सर्वर साइड:

if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
    $privatekey = "SECRET_KEY";
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $data = array(
        'secret' => $privatekey,
        'response' => $captcha,
        'remoteip' => $_SERVER['REMOTE_ADDR']
    );

    $curlConfig = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $data
    );

    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $response = curl_exec($ch);
    curl_close($ch);
}

$jsonResponse = json_decode($response);

if ($jsonResponse->success == "true")
    doSomething();
else
    doSomeOtherThing();

:)


क्या आपने क्लाइंट साइड / html कोड के कुछ हिस्सों को नहीं छोड़ा है? सिर्फ इसलिए पूछ रहा हूँ क्योंकि आपके PHP कोड में आप किसी पोस्ट नाम के खिलाफ जाँच कर रहे हैं, g-recaptcha-responseलेकिन ऐसा कोई तत्व आपके क्लाइंट साइड कोड में परिभाषित नहीं है ... क्या मुझे कुछ याद आ रहा है?
बेनामेटिस

5

मैं अपनी खोज में यहाँ आया, एक उत्तर नहीं देखा, और इसलिए मैं खोज करता रहा।

मेरी खोज के बाद, यह विंडो अभी भी खुली थी, इसलिए मैं अपने निष्कर्षों के साथ इस पोस्ट को अपडेट कर रहा हूं।

यहाँ आप reCAPTCHA के बारे में जान सकते हैं :

http://scraping.pro/no-captcha-recaptcha-challenge/

मूल रूप से, हालांकि, आप इसे अपने वेब पेज पर जोड़ते हैं:

<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
    <div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
    <input value="submit" type="submit" />
</form>

अपनी reCAPTCHA कुंजी प्राप्त करने के लिए , इस Google साइट पर जाएं:

https://www.google.com/recaptcha/intro/index.html

एक बार जब आप ऊपर दिए गए लिंक का उपयोग करते हुए अपनी कुंजी रखते हैं, तो आप निम्न Google जानकारी का उपयोग करके इसे कोडिंग में गहरा सकते हैं:

https://developers.google.com/recaptcha/

ध्यान दें:

Google दस्तावेज़ से:

स्क्रिप्ट को HTTPS प्रोटोकॉल का उपयोग करके लोड किया जाना चाहिए और प्रतिबंध के बिना पृष्ठ पर किसी भी बिंदु से शामिल किया जा सकता है।

यहाँ एक उदाहरण है कि मुझे यह कैसे काम करने के लिए मिला:

<html>
<head>
    <title>Contact</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <script>
    var onloadCallback = function () {
        grecaptcha.render('dvCaptcha', {
            'sitekey': '<%=ReCaptcha_Key %>',
            'callback': function (response) {
                $.ajax({
                    type: "POST",
                    url: "CS.aspx/VerifyCaptcha",
                    data: "{response: '" + response + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (r) {
                        var captchaResponse = jQuery.parseJSON(r.d);
                        if (captchaResponse.success) {
                            $("[id*=txtCaptcha]").val(captchaResponse.success);
                            $("[id*=lblAlarm]").hide();
                        } else {
                            $("[id*=txtCaptcha]").val("");
                            $("[id*=lblAlarm]").show();
                            var error = captchaResponse["error-codes"][0];
                            $("[id*=lblAlarm]").html("RECaptcha error. " + error);
                        }
                    }
                });
            }
        });
    };
    </script>
</head>
<body>
    <form action="?" method="POST">
        <div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
        <br />
        <asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
        <asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
    </form>
</body>
</html>

यदि आपको ASP.NET कोड के पीछे सत्यापन करने की आवश्यकता है, तो बस "g-recaptcha-response" नियंत्रण को भरें:

protected static string ReCaptcha_Key, ReCaptcha_Secret;

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
    {
        // other code
    } else
    {
       lblAlarm.Text = "reCAPTCHA failed.";
    }
}

उम्मीद है, आप में से कुछ इसे उपयोगी पाते हैं।


3

इस धागे में आपके योगदान के लिए आप सभी का धन्यवाद, नए रिकैप्टा उपकरण में रुचि रखने वाले इतने सारे लोगों को देखना शानदार है।

मुझे इसका एक .net कार्यान्वयन नहीं मिला, इसलिए एक साधारण वेब प्रपत्र नियंत्रण बनाया है, जिसे आप यहां पा सकते हैं https://github.com/pnmcosta/recaptchav2dotnet

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.