Блог
Как найти функцию обратного вызова каждой версии 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 💜

Ещеe

Как решить проблему reCaptcha v2 с помощью Python
Как решить проблему reCaptcha v2 с помощью Python

В этой статье мы покажем, как решить проблему reCaptcha v2 с помощью Python.

reCAPTCHA

16-Nov-2023

Что такое reCaptcha v3 и Как Решить её с Высшим Человеческим Баллом 0.9?
Что такое reCaptcha v3 и Как Решить её с Высшим Человеческим Баллом 0.9?

В этой статье мы расскажем вам, что такое reCaptcha v3 и как легко решить reCaptcha v3 с высоким баллом (0.7-0.9), используя CapSolver.

reCAPTCHA

10-Nov-2023

Решение reCaptcha v2 Invisible - Объяснение
Решение reCaptcha v2 Invisible - Объяснение

Овладейте решением reCaptcha v2 invisible с Capsolver: точное определение и эффективное решение для оптимизации ваших автоматизированных процессов

reCAPTCHA

10-Nov-2023

Как обойти все версии reCAPTCHA Enterprise v2, v2 invisible, v3, v3 enterprise 0,9 балла
Как обойти все версии reCAPTCHA Enterprise v2, v2 invisible, v3, v3 enterprise 0,9 балла

Токен reCAPTCHA всегда получает неверный ответ? Такая ситуация обычно возникает, когда reCAPTCHA v2 является корпоративной версией, которая обычно имеет параметр «s», или корпоративной версией reCAPTCHA v3, для которой требуется высокий балл 0,7 или выше. Теперь CapSolver может прекрасно решить эту проблему.

reCAPTCHA

29-Jun-2023

Как решить reCAPTCHA V3 предприятия
Как решить reCAPTCHA V3 предприятия

Этот блог представляет собой подробное руководство по использованию и пониманию reCAPTCHA v3 Enterprise, бесплатного сервиса от Google, предназначенного для защиты веб-сайтов от спама и злоупотреблений. В блоге обсуждаются основные проблемы и вызовы, связанные с использованием этого инструмента, а также предлагаются решения и лучшие практики для его эффективного использования. Блог также включает в себя шаг за шагом инструкции по регистрации на сайте capsolver.com и использованию его для решения reCAPTCHA v3.

reCAPTCHA

25-Jun-2023

Как решить Google reCAPTCHA
Как решить Google reCAPTCHA

Руководство по решению Google reCAPTCHA: разгадка reCAPTCHA v2, классификация задач и ключевые шаги для успешного декодирования капчи

reCAPTCHA

22-Jun-2023