ब्लॉग
Cómo encontrar la función de devolución de llamada de cada versión de reCaptcha

यहाँ पर आपके द्वारा प्रस्तुत किए गए दस्तावेज का अनुवाद है:

WARNING

हर वेबसाइट विभिन्न होती है, इन तरीकों में से कोई भी समस्या को हल नहीं कर सकता है।

कृपया अधिक खोज करें।

API के माध्यम से gRecaptchaResponse मूल्य को सफलतापूर्वक पहचानने के बाद, यदि आप सिम्युलेशन सॉफ़्टवेयर, जैसे कि सेलेनियम, का उपयोग कर रहे हैं, तो आपको वेब पृष्ठ को बताने के लिए एक कॉलबैक फ़ंक्शन को निष्पादित करने की आवश्यकता है कि हमने सफलता से पहचान ली है, इसलिए चलिए जानते हैं कि इस फ़ंक्शन को कैसे खोजा जा सकता है:

नोट: कुछ मामलों में, वाकई में कोई कॉलबैक फ़ंक्शन नहीं होता है। इस मामले में, आप सीधे मानों को g-recaptcha-response कंटेनर को मान दें और फ़ॉर्म सबमिट कर सकते हैं।

मेथड 1: कंसोल एलिमेंट के माध्यम से खोजें

प्रदर्शित पृष्ठ को खोलें, F12 दबाएं ताकि कंसोल में जाएं, Elements में Ctrl+F दबाएं ताकि खोज सकें, खोजें कीवर्ड: data-callback

जैसा कि आप देख सकते हैं, यहाँ पर हमारा कॉलबैक फ़ंक्शन onSuccess है, और फिर हमें सिर्फ़ सेलेनियम में इस फ़ंक्शन को निष्पादित करना है

अगर आप इसे नहीं मिला सकते हैं, तो यह गलतफहमी या अन्य परिस्थितियों के कारण हो सकता है, आप अन्य तरीकों की कोशिश कर सकते हैं

driver. execute_script(f'onSuccess("{gRecaptchaResponse}")')

img.png

मेथड 2: reCaptcha V3 श्रृंगारिक है

मेथड 1 के समान, खोजने के लिए खोज कीवर्ड: grecaptcha.render

सम

ान कोड खोजें, जहां कॉलबैक कॉलबैक फ़ंक्शन है

grecaptcha.render('example', {
  'sitekey': 'someSitekey',
  'callback': myCallbackFunction,
  'theme': 'dark'
});

मेथड 3: कंसोल के माध्यम से खोजें

F12 दबाएं ताकि कंसोल में जाएं, ___grecaptcha_cfg.clients दर्ज करें, अगर एक त्रुटि दर्ज की जाती है, तो वेब पृष्ठ ने reCaptcha लोड नहीं किया है

आमतौर पर कई नोड होते हैं, हमें अंतर का ध्यान देने की आवश्यकता है, यहाँ पर हमारे लिए खोजने का कॉलबैक फ़ंक्शन है onSuccess

img.png

मेथड 4: स्वचालित खोज समीक्षा फ़ंक्शन के माध्यम से खोजें

यदि उपर्युक्त तरीकों को निष्पादित करने में कठिनाई होती है, तो आप स्वचालित खोज समीक्षा फ़ंक्शन को परिभाषित करके खोजने का प्रयास कर सकते हैं

F12 दबाएं ताकि कंसोल में जाएं, और निम्नलिखित स्वचालित परिभाषित फ़ंक्शन findRecaptchaClients() दर्ज करें

 
function findRecaptchaClients() {
// eslint-disable-next-line camelcase
  if (typeof (___grecaptcha_cfg) !== 'undefined') {
// eslint-disable-next-line camelcase, no-undef
    return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
      const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' }
      const objects = Object.entries(client).filter(([_, value]) => value && typeof value === 'object')
 
      objects.forEach(([toplevelKey, toplevel]) => {
        const found = Object.entries(toplevel).find(([_, value]) => (
          value and typeof value === 'object' and 'sitekey' in value and 'size' in value
        ))
 
        if (typeof toplevel === 'object' and toplevel instanceof HTMLElement and toplevel['tagName'] === 'DIV') {
          data.pageurl = toplevel.baseURI
        }
 
        if (found) {
          const [sublevelKey, sublevel] = found
 
          data.sitekey = sublevel.sitekey
          const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback'
          const callback = sublevel[callbackKey]
          if (!callback) {
            data.callback = null
            data.function = null
          } else {
            data.function = callback
            const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('')
            data.callback = `___grecaptcha_cfg.clients${keys}`
          }
        }
      })
      return data
    })
 
  }
  return []
}
 
findRecaptchaClients && findRecaptchaClients()

फिर इस फ़ंक्शन findRecaptchaClients() को कंसोल में निष्पादित करके उस संबंधित फ़ंक्शन को खोजने का प्रयास करें

[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "https://www.google.com/recaptcha/api2/demo"
  }
]

कैसे reCaptcha गुमनाम फ़ंक्शन को बुलाया जाता है?

नोट: कभी-कभी खोजे गए कॉलबैक फ़ंक्शन एक फ़ंक्शन नाम होता है, जैसे कि ऊपर onSuccess में उल्लिखित है, सीधे onSuccess(gRecaptchaResponse) को बुलाने के लिए, लेकिन कभी-कभी खोजा जाता है कि वह एक गुमनाम फ़ंक्शन होता है, जिसका मतलब है कि वह कोई फ़ंक्शन नाम नहीं होता है, उपर्युक्त तरह:

इस प्रकार के गुमनाम फ़ंक्शन के लिए

, हमें उसे उस पूर्ण पथ के अनुसार निष्पादित करना होता है जिस पथ को हमने अभी खोजा है, और प्रभाव एक समान होता है, उदाहरण के लिए:

___grecaptcha_cfg.clients.xxxxxxxxx.xxxxx.xxxxx.callback(gRecaptchaResponse)

चलो इसका उदाहरण देते हैं, इस वेबसाइट को उदाहरण के रूप में लें, ___grecaptcha_cfg.clients दर्ज करके खोजें, आप यहां पर कॉलबैक फ़ंक्शन देख सकते हैं promise-callback एक गुमनाम फ़ंक्शन है f(token)

img.png

हम इस पर दायंक कर सकते हैं और Copy property path पर क्लिक कर सकते हैं इस नोड पथ को कॉपी करने के लिए

[100000].l.l["promise-callback"]("gRecaptchaResponse")

उस ___grecaptcha_cfg.clients को जो अभी दर्ज किया गया है, उसको जोड़ें, और आप इस फ़ंक्शन का पूरा पथ प्राप्त कर सकते हैं

___grecaptcha_cfg.clients[100000].l.l["promise-callback"]

आखिरकार, यह उपर्युक्त में उल्लिखित तरीके के रूप में निष्पादित करना है, इसे एक सामान्य फ़ंक्शन के रूप में निष्पादित करें

___grecaptcha_cfg.clients[100000].l.l["promise-callback"](gRecaptchaResponse)