CAPSOLVER
Blog
Como encontrar a função de callback do reCaptcha

Como encontrar a função de callback do reCaptcha

Logo of CapSolver

Adélia Cruz

Neural Network Developer

23-Sep-2025

Como encontrar a função de callback de cada versão do reCaptcha

⚠️ Cada site é diferente, se nenhum dos métodos a seguir resolver o problema.
Por favor, faça mais pesquisas você mesmo.

Após obter o valor gRecaptchaResponse reconhecido com sucesso através da API, se você estiver usando software de simulação, como o selenium, você precisa executar uma função de callback para informar à página da web que reconhecemos com sucesso, então vamos aprender como encontrar essa função:

Observação: Em alguns casos, não há realmente nenhuma função de callback. Nesse caso, você pode atribuir valores diretamente ao contêiner g-recaptcha-response e enviar o formulário.

Método 1: Pesquisa através do elemento do console

Abra a página exibida, pressione F12 para entrar no console, pressione Ctrl+F em Elementos para pesquisar, palavra-chave de pesquisa: data-callback

Como você pode ver, nossa função de callback aqui é onSuccess, e então só precisamos executar essa função no selenium

Se você não conseguir encontrar, pode estar confuso ou em outras circunstâncias, você pode tentar outros métodos

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

Método 2: Aplicável à série recaptcha-v3

Similar ao método 1, pesquise palavras-chave: grecaptcha.render

Encontre código semelhante, onde callback é a função de callback

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

Método 3: Pesquisa através do console

Pressione F12 para entrar no console, digite ___grecaptcha_cfg.clients, se um erro for relatado, a página da web não carregou reCaptcha

Normalmente existem muitos nós, precisamos prestar atenção à diferença, aqui onSuccess é a função de callback que estamos procurando

Método 4: Pesquisa por função de busca automática

Se for difícil executar os métodos acima, você pode tentar encontrar definindo uma função de busca automática
Pressione F12 para entrar no console e digite a seguinte função autodefinida 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()

Em seguida, execute esta função findRecaptchaClients() no console para encontrar a função correspondente

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

Como chamar a função anônima reCaptcha?

Observação: Às vezes, a função de callback encontrada é um nome de função, como onSuccess mencionado acima, diretamente onSuccess(gRecaptchaResponse) ao chamar, mas às vezes é encontrada como uma função anônima, o que significa que não há nome de função, como o seguinte:

Para esse tipo de função anônima, só precisamos executá-la de acordo com o caminho completo que acabamos de encontrar, e o efeito é o mesmo, por exemplo:

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

Vamos dar um exemplo, tome este site como exemplo, digite ___grecaptcha_cfg.clients para expandir a pesquisa, você pode ver a função de callback aqui promise-callback é uma função anônima f(token)

Podemos clicar com o botão direito nele e clicar em Copiar caminho da propriedade para copiar este caminho do nó

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

Adicione o ___grecaptcha_cfg.clients que acabou de entrar, e você pode obter o caminho completo desta função

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

Finalmente, é o mesmo que o método de execução mencionado acima, basta executá-lo como uma função normal

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

Equipe Capsolver 💜

Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais