CAPSOLVER
Blog
How to find the callback function of reCaptcha

How to find the callback function of reCaptcha

Logo of CapSolver

Rajinder Singh

Deep Learning Researcher

28-Aug-2023

How to find the callback function of each version of reCaptcha

⚠️ Every website is different, if none of the following methods can solve the problem.
Please do more research yourself.

After obtaining the successfully recognized gRecaptchaResponse value through the API, if you are using simulation software, such as selenium, you need to execute a callback function to tell the webpage that we have successfully recognized, so let's learn how to find this function:

Note: In some cases, there is indeed no callback function. In this case, you can directly assign values to the g-recaptcha-response container and submit the form.

Method 1: Search through the console Element

Open the displayed page, press F12 to enter the console, press Ctrl+F in Elements to search, search keyword: data-callback

As you can see, our callback function here is onSuccess, and then we only need to execute this function in selenium

If you can't find it, it may be confused or other circumstances, you can try other methods

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

Method 2: Applicable to recaptcha-v3 series

Similar to method 1, search keywords: grecaptcha.render

Find similar code, where callback is the callback function

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

Method 3: Search through the console

Press F12 to enter the console, enter ___grecaptcha_cfg.clients, if an error is reported, the web page has not loaded reCaptcha

Usually there are many nodes, we need to pay attention to the difference, here onSuccess is the callback function we are looking for

Method 4: Search by automatic search function

If it is difficult to execute the above methods, you can try to find by defining an automatic search function
Press F12 to enter the console, and enter the following auto-defined function findRecaptchaClients()

js Copy
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 && typeof value === 'object' && 'sitekey' in value && 'size' in value
        ))

        if (typeof toplevel === 'object' && toplevel instanceof HTMLElement && 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()

Then execute this function findRecaptchaClients() in console to find the corresponding function

js Copy
[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "site key-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "site url"
  }
]

How to call reCaptcha anonymous function?

Note: Sometimes the callback function found is a function name, such as onSuccess mentioned above, directly onSuccess(gRecaptchaResponse) when calling , but sometimes it is found to be an anonymous function, which means that there is no function name, such as the following:

For this kind of anonymous function, we only need to execute it according to the complete path we just found, and the effect is the same, for example:

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

Let's give an example, take this website as an example, enter ___grecaptcha_cfg.clients to expand the search, you can see the callback function here promise-callback is an anonymous function f(token)

We can right click on it and click Copy property path to copy this node path

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

Add the ___grecaptcha_cfg.clients just entered, and you can get the full path of this function

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

Finally, it is the same as the execution method mentioned above, just execute it as a normal function

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

Capsolver Team 💜

Compliance Disclaimer: The information provided on this blog is for informational purposes only. CapSolver is committed to compliance with all applicable laws and regulations. The use of the CapSolver network for illegal, fraudulent, or abusive activities is strictly prohibited and will be investigated. Our captcha-solving solutions enhance user experience while ensuring 100% compliance in helping solve captcha difficulties during public data crawling. We encourage responsible use of our services. For more information, please visit our Terms of Service and Privacy Policy.

More

Optimize CAPTCHA Solving API Response Time for Faster Automation
Optimize CAPTCHA Solving API Response Time for Faster Automation

Learn how to optimize CAPTCHA solving API response time for faster and more reliable automation. This guide covers key factors like CAPTCHA complexity, API performance, and polling strategies, with practical tips using CapSolver to achieve sub-10-second solve times.

reCAPTCHA
Logo of CapSolver

Ethan Collins

03-Apr-2026

How to Solve reCAPTCHA v2 Python and API
How to Solve reCAPTCHA v2 Python and API

Learn how to solve reCAPTCHA v2 using Python and API. This comprehensive guide covers Proxy and Proxyless methods with production-ready code for automation.

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

25-Mar-2026

How to Automate reCAPTCHA Solving for AI Benchmarking Platforms
How to Automate reCAPTCHA Solving for AI Benchmarking Platforms

Learn how to automate reCAPTCHA v2 and v3 for AI benchmarking. Use CapSolver to streamline data collection and maintain high-performance AI pipelines.

reCAPTCHA
Logo of CapSolver

Ethan Collins

27-Feb-2026

How to Fix Common reCAPTCHA Issues in Web Scraping
How to Fix Common reCAPTCHA Issues in Web Scraping

Learn how to fix common reCAPTCHA issues in web scraping. Discover practical solutions for reCAPTCHA v2 and v3 to maintain seamless data collection workflows.

reCAPTCHA
Logo of CapSolver

Lucas Mitchell

12-Feb-2026

Best reCAPTCHA Solver 2026 for Automation & Web Scraping
Best reCAPTCHA Solver 2026 for Automation & Web Scraping

Discover the best reCAPTCHA solvers for automation and web scraping in 2026. Learn how they work, choose the right one, and stay ahead of bot detection.

reCAPTCHA
Logo of CapSolver

Anh Tuan

14-Jan-2026

Top 5 Captcha Solvers for reCAPTCHA Recognition in 2026
Top 5 Captcha Solvers for reCAPTCHA Recognition in 2026

Explore 2026's top 5 CAPTCHA solvers, including AI-driven CapSolver for fast reCAPTCHA recognition. Compare speed, pricing, and accuracy here

reCAPTCHA
Logo of CapSolver

Lucas Mitchell

09-Jan-2026