selenium - रिकैपचा 3 कैसे जानता है कि मैं सेलेनियम/क्रोमेड्राइवर का उपयोग कर रहा हूं?




web-scraping selenium-chromedriver (2)

मैं उत्सुक हूं कि Recaptcha v3 कैसे काम करता है। विशेष रूप से ब्राउज़र फिंगरप्रिंटिंग।

जब मैं सेलेनियम / क्रोमेड्रिवर के माध्यम से क्रोम का एक उदाहरण लॉन्च करता हूं और ReCaptcha 3 ( https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php ) के खिलाफ परीक्षण करता हूं, तो सेलेनियम / का उपयोग करते समय मुझे हमेशा 0.1 का स्कोर मिलता है। chromedriver।

एक सामान्य उदाहरण के साथ गुप्त का उपयोग करते समय मुझे 0.3 मिलता है।

मैंने जेएस को इंजेक्ट करके और वेब ड्राइवर ऑब्जेक्ट को संशोधित करके और स्रोत से वेबड्राइवर को पुन: संशोधित करके $ cdc_ वेरिएबल्स को संशोधित करके अन्य डिटेक्शन सिस्टम को हराया है।

मैं देख सकता हूँ कि सर्वर पर कुछ obfuscated POST जैसा क्या दिखता है इसलिए मैं वहां खुदाई शुरू करने जा रहा हूँ।

मैं बस यह जांचना चाहता था कि क्या कोई इस बारे में पहले से कोई सलाह या अनुभव साझा करने के लिए तैयार है कि क्या मैं सेलेनियम / क्रोमेड्राइवर चला रहा हूं, यह निर्धारित करने के लिए क्या देख रहा हूं?


ReCAPTCHA के

वेबसाइटें आसानी से नेटवर्क ट्रैफ़िक का पता लगा सकती हैं और आपके प्रोग्राम को बीओटी के रूप में पहचान सकती हैं। Google ने नई साइट बनाते समय चुनने के लिए 5 (पांच) reCAPTCHA पहले ही जारी कर दिए हैं। जबकि उनमें से चार सक्रिय हैं और reCAPTCHA v1 बंद हो रहा है।

reCAPTCHA संस्करण और प्रकार

  • reCAPTCHA v3 (किसी स्कोर के साथ अनुरोधों को सत्यापित करें): reCAPTCHA v3 आपको यह सत्यापित करने की अनुमति देता है कि क्या कोई बातचीत बिना किसी उपयोगकर्ता सहभागिता के वैध है। यह एक शुद्ध जावास्क्रिप्ट एपीआई है, जो आपको एक स्कोर लौटाता है, जिससे आपको अपनी साइट के संदर्भ में कार्रवाई करने की क्षमता मिलती है: उदाहरण के लिए प्रमाणीकरण के अतिरिक्त कारकों की आवश्यकता होती है, पोस्ट को मॉडरेशन, या थ्रॉटलिंग बॉट्स जो सामग्री को स्क्रैप कर सकते हैं।
  • reCAPTCHA v2 - "मैं रोबोट नहीं हूँ" चेकबॉक्स : "मैं एक रोबोट नहीं हूँ" चेकबॉक्स के लिए उपयोगकर्ता को एक रोबोट नहीं है, यह इंगित करने के लिए उपयोगकर्ता को चेकबॉक्स पर क्लिक करने की आवश्यकता होती है। यह या तो उपयोगकर्ता को तुरंत (कोई कैप्चा के साथ) पास करेगा या उन्हें यह प्रमाणित करने के लिए चुनौती देगा कि वे मानव हैं या नहीं। यह सबसे आसान विकल्प है, जिसके साथ एकीकृत करने के लिए और चेकबॉक्स को रेंडर करने के लिए केवल HTML की दो पंक्तियों की आवश्यकता होती है।

  • reCAPTCHA v2 - अदृश्य reCAPTCHA बैज : अदृश्य reCAPTCHA बैज से उपयोगकर्ता को चेकबॉक्स पर क्लिक करने की आवश्यकता नहीं होती है, इसके बजाय जब उपयोगकर्ता सीधे आपकी साइट पर मौजूदा बटन पर क्लिक करता है या जावास्क्रिप्ट एपीआई कॉल के माध्यम से इसे लागू किया जा सकता है। एकीकरण के लिए एक जावास्क्रिप्ट कॉलबैक की आवश्यकता होती है जब reCAPTCHA सत्यापन पूरा हो जाता है। डिफ़ॉल्ट रूप से केवल सबसे संदिग्ध ट्रैफ़िक को कैप्चा को हल करने के लिए प्रेरित किया जाएगा। इस व्यवहार को बदलने के लिए उन्नत सेटिंग्स के तहत अपनी साइट की सुरक्षा वरीयता संपादित करें।

  • reCAPTCHA v2 - Android : reCAPTCHA Android लाइब्रेरी Google Play सेवाओं सेफ्टीनेट API का हिस्सा है। यह लाइब्रेरी देशी Android एपीआई प्रदान करती है जिसे आप सीधे एक ऐप में एकीकृत कर सकते हैं। आपको अपने ऐप में Google Play सेवाएं सेट करनी चाहिए और reCAPTCHA API को लागू करने से पहले GoogleApiClient से कनेक्ट करें। यह या तो तुरंत (एक कैप्चा संकेत के बिना) उपयोगकर्ता को पास करेगा या उन्हें यह प्रमाणित करने के लिए चुनौती देगा कि वे मानव हैं।
  • reCAPTCHA v1 : reCAPTCHA v1 को मार्च 2018 से बंद कर दिया गया है।

उपाय

हालांकि वेब-स्क्रैपिंग का पता लगाने से बचने के लिए कुछ सामान्य दृष्टिकोण हैं:

  • सबसे पहले और सबसे महत्वपूर्ण विशेषता यह है कि एक वेबसाइट आपकी स्क्रिप्ट / कार्यक्रम को आपके मॉनिटर आकार के माध्यम से निर्धारित कर सकती है। तो यह पारंपरिक Viewport का उपयोग नहीं करने के लिए सिफारिश की है।
  • यदि आपको वेबसाइट पर कई अनुरोध भेजने की आवश्यकता है, तो प्रत्येक अनुरोध पर उपयोगकर्ता एजेंट को बदलते रहें। यहां आप सेलेनियम में Google क्रोम उपयोगकर्ता एजेंट को बदलने के लिए रास्ते में एक विस्तृत चर्चा पा सकते हैं ?
  • व्यवहार की तरह मानव का अनुकरण करने के लिए आपको WebDriverWait से परे स्क्रिप्ट निष्पादन को धीमा करने की आवश्यकता हो सकती है और time.sleep(secs) उत्प्रेरण की time.sleep(secs) । यहाँ आप मिलिसेकंड्स के लिए अजगर में कैसे सोते हैं पर एक विस्तृत चर्चा पा सकते हैं

किया

विचार के लिए कुछ भोजन:


सेलेनियम और Puppeteer में कुछ ब्राउज़र कॉन्फ़िगर हैं जो एक गैर-स्वचालित ब्राउज़र से अलग है। इसके अलावा, चूंकि कुछ जेएस फ़ंक्शन तत्वों में हेरफेर करने के लिए ब्राउज़र में इंजेक्ट किए जाते हैं, इसलिए आपको डिटेक्शन से बचने के लिए कुछ ओवरराइड बनाने की आवश्यकता होती है।

कुछ अच्छे लेख हैं, जिनमें सेलेनियम और पुप्पीटर डिटेक्शन के बारे में कुछ बिंदुओं की व्याख्या की गई है, जबकि यह एक साइट पर डिटेक्टिंग मैकेनिज्म के साथ चलता है:

क्रोम हेडलेस, नई तकनीकों का पता लगाना - आप इसका उपयोग अपने बॉट पर रक्षात्मक कोड लिखने के लिए कर सकते हैं

क्रोम हेडलेस का पता लगाना और ब्लॉक करना संभव नहीं है - जेएस कोड एक स्वचालित सॉफ़्टवेयर और वास्तविक एक द्वारा प्रशंसित ब्राउज़र के बीच पता लगा सकता है कि एक स्पष्ट और ध्वनि तरीके से अंतर के बारे में बताते हैं, और यह भी कि यह कैसे नकली है।

गिथब - हेडलेस-कैट-एन-माउस - उदाहरण से बचने के लिए कठपुतली + अजगर का उपयोग कर





recaptcha-v3