Pular para conteúdo

Ações Anticaptcha

A integração com o serviço Anti-Captcha permite que o Marvin resolva diferentes tipos de captchas automaticamente.

Para usar estas ações é necessário ter uma conta no Anti-Captcha e uma chave de API válida (anticaptcha_key).

Observação importante: a solução de ReCaptcha/hCaptcha normalmente expira rapidamente (tipicamente ~2 minutos). Sempre resolva o captcha como a última ação antes de submeter o formulário ou validar a página.

Importante sobre retornos (variáveis de estado) - As ações expõem seus valores retornados como variáveis de estado que podem ser lidas pelo integrador. - Para acessar um valor retornado, atribua uma variável local à variável de estado usando o prefixo $. O nome deve ser exatamente igual à chave retornada pela ação.

Exemplo genérico:

# chama a action
anticaptcha.recaptcha_v2(browser, "MINHA_CHAVE")

# recupera o token retornado pela action
g_recaptcha_response = $g_recaptcha_response

Ações

As ações abaixo estão disponíveis no Marvin:

anticaptcha.recaptcha_v2

Resolve ReCaptcha v2 presente na página atual.

Parâmetros: - browser — objeto do navegador (página) onde o ReCaptcha está presente. - anticaptcha_key — chave da conta Anti-Captcha (string). - callback_function (opcional) — nome da função JavaScript de callback usada pela página para validar o ReCaptcha. Se a validação da página é feita via POST, este parâmetro não é necessário.

Retorno (variáveis de estado): - g_recaptcha_response — token de solução (string).

Como usar (exemplo):

# chama a action
anticaptcha.recaptcha_v2(browser, "MINHA_CHAVE")

# lê a variável de estado gerada pela action
g_recaptcha_response = $g_recaptcha_response

Exceções: - CaptchaNotFound — lançado quando não é possível localizar o ReCaptcha v2 na página, quando há mais de um ReCaptcha detectado, ou se ocorrer erro durante a execução do callback.

Notas: - A chave do site (sitekey) é automaticamente extraída do iframe do ReCaptcha quando possível.

anticaptcha.hcaptcha

Resolve hCaptcha presente na página atual.

Parâmetros: - browser — objeto do navegador (página) onde o hCaptcha está presente. - anticaptcha_key — chave da conta Anti-Captcha (string). - callback_function (opcional) — nome da função JavaScript de callback usada pela página. - hcaptcha_key (opcional) — sitekey do hCaptcha; se informado, será usado em vez de tentar descobrir automaticamente pela página.

Retorno (variáveis de estado): - h_recaptcha_response — token de solução (string).

Como usar (exemplo):

# usar sitekey detectada automaticamente
anticaptcha.hcaptcha(browser, "MINHA_CHAVE")

# ler token retornado
h_recaptcha_response = $h_recaptcha_response

# --- usando hcaptcha_key explicitamente ---
anticaptcha.hcaptcha(browser, "MINHA_CHAVE", hcaptcha_key="SITEKEY_DA_PAGINA")

Exceções: - CaptchaNotFound — lançado quando não é possível localizar o hCaptcha na página ou se ocorrer erro durante a execução do callback.

anticaptcha.image_captcha

Resolve um captcha do tipo imagem a partir de um arquivo local.

Parâmetros: - anticaptcha_key — chave da conta Anti-Captcha (string). - img_file — caminho para o arquivo de imagem contendo o captcha.

Retorno (variáveis de estado): - captcha — texto solucionado (string).

Como usar (exemplo):

# resolver imagem local
anticaptcha.image_captcha("MINHA_CHAVE", "C:/temp/captcha.png")

# ler resultado
captcha = $captcha

Exceções: - CaptchaNotFound — lançado quando a solução não pôde ser obtida pelo serviço.

Como obter a função de retorno de chamada (callback)

A função de callback do ReCaptcha pode ser identificada de duas maneiras principais:

  • Elemento HTML com a classe g-recaptcha e atributo data-callback. Exemplo:
<input type="submit" class="g-recaptcha" data-callback="loginFn" onclick="validateForm" value="OK" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXX">
  • Definição via JavaScript usando grecaptcha.render, onde o parâmetro callback aponta para a função. Exemplo:
grecaptcha.render("recaptcha", {
    "sitekey": "XXXXXXXXXXXXXXXXXXXXXXXX",
    "callback": verifyCallbackCaptcha,
    "size": "invisible"
})

Se a página utiliza o método POST para validar o ReCaptcha (ou hCaptcha), geralmente não é necessário informar a callback_function.