博客
Как найти функцию обратного вызова каждой версии reCaptcha

Как найти функцию обратного вызова каждой версии reCaptcha

Logo of Capsolver

CapSolver Blogger

How to use capsolver

13-Jun-2023

Как найти функцию обратного вызова каждой версии reCaptcha

⚠️ Каждый сайт уникален, если ни один из следующих методов не может решить проблему.
Пожалуйста, проведите дополнительные исследования самостоятельно.

После получения успешно распознанного значения gRecaptchaResponse через API, если вы используете программное обеспечение для моделирования, такое как selenium, вам нужно выполнить функцию обратного вызова, чтобы сообщить веб-странице, что мы успешно распознали, давайте узнаем, как найти эту функцию:

Примечание: В некоторых случаях функции обратного вызова действительно может не быть. В этом случае вы можете напрямую присвоить значения контейнеру g-recaptcha-response и отправить форму.

Метод 1: Поиск через элемент консоли

Откройте отображаемую страницу, нажмите F12, чтобы войти в консоль, нажмите Ctrl+F в Элементах для поиска, ищите ключевое слово: data-callback

Как вы можете видеть, наша функция обратного вызова здесь - onSuccess, и затем нам нужно только выполнить эту функцию в selenium

Если вы не можете найти ее, она может быть запутана или возникли другие обстоятельства, вы можете попробовать другие методы

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


Метод 2: Применимо к серии recaptcha-v3

Аналогично методу 1, ищите ключевые слова: grecaptcha.render

Найдите похожий код, где callback - это функция обратного вызова

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

Метод 3: Поиск через консоль

Нажмите F12, чтобы войти в консоль, введите ___grecaptcha_cfg.clients, если сообщается об ошибке, веб-страница не загрузила reCaptcha

Обычно есть много узлов, нам нужно обратить внимание на разницу, здесь onSuccess - это искомая функция обратного вызова

Метод 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 && 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

Затем выполните эту функцию findRecaptchaClients() в console, чтобы найти соответствующую функцию

[
  {
    "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)

Мы можем щелкнуть правой кнопкой мыши по нему и щелкнуть 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)

Capsolver Team 💜

更多

reCAPTCHA
reCAPTCHA自动解决器 - 自动解决reCAPTCHAs

在当今数字环境中,保护网站免受自动机器人的攻击变得至关重要,这就是为什么reCAPTCHA被广泛采用的原因。尽管reCAPTCHA具有重要的作用,但手动解决它们可能会耗费时间并令人沮丧...

reCAPTCHA

23-Feb-2024

如何以0.9分识别所有reCAPTCHA类型,包括v2以及v3和v3的企业版
如何以0.9分识别所有reCAPTCHA类型,包括v2以及v3和v3的企业版

本文将为您提供一种解决方案,如果您正在处理许多无效令牌的情况。只需三个简单的步骤,您就可以使用CapSolver轻松通过0.9分的reCAPTCHA Enterprise v2 / v2隐形和v3 / v3企业版。

reCAPTCHA

28-Jun-2023

如何识别和查找 reCAPTCHA v3 的值
如何识别和查找 reCAPTCHA v3 的值

recaptcha分数是什么意思?如何识别和查找 reCAPTCHA v3 的值?提供有关 Capsolver 服务的自动 reCAPTCHA V3 解析的全面指南。

reCAPTCHA

27-Jun-2023

使用CapSolver自动识别谷歌验证码
使用CapSolver自动识别谷歌验证码

Google的reCAPTCHA是一种网站反垃圾和防恶意活动的保护措施。这个高级安全功能利用了先进的风险分析机制以及灵活的CAPTCHA,以阻止自动化软件在您的网站上进行有害操作,同时确保真实用户的顺畅通行

reCAPTCHA

16-Jun-2023

使用CapSolver解决reCAPTCHAv2隐形验证码
使用CapSolver解决reCAPTCHAv2隐形验证码

reCAPTCHA v2隐形版本是reCAPTCHA v2的一个变体,它在后台工作,为用户提供更无缝的体验,不需要任何特定的用户交互,就像以前的版本一样。

reCAPTCHA

16-Jun-2023

如何绕过/自动识别reCAPTCHA v3验证码
如何绕过/自动识别reCAPTCHA v3验证码

在本技术博客中,我们将通过使用CapSolver指导您绕过reCaptcha v3的过程。

reCAPTCHA

22-May-2023