Pular para o conteúdo principal
Está tendo problemas para obter o token?
Entre em contato com o suporte

reCAPTCHA v2

Este objeto contém dados para a solução do captcha Google reCAPTCHA v2. Para garantir a universalidade da solução desse tipo de captcha, você precisa usar todos os dados utilizados na automação do preenchimento do formulário na página de destino, incluindo proxies, o user-agent do navegador e cookies. Isso ajuda a evitar problemas quando o Google altera o código de seu captcha.

Esse tipo de captcha pode ser resolvido um pouco mais lentamente do que um captcha de imagem comum, mas esse problema é compensado pelo fato de que o valor g-recaptcha-response que enviamos para você é válido pelos próximos 60 segundos após resolvermos seu ReCaptcha2.

Mais sobre o tema em nosso blog
Atenção!

Por padrão, o CapMonster Cloud utiliza proxies internos adequados para a maioria dos sites.
No entanto, se o token não for aceito pelo site alvo, tente novamente usando seus próprios proxies (RecaptchaV2Task com proxy). Certifique-se de usar os mesmos proxies ao resolver o captcha e enviar o token para o site.

  • Se a autorização for baseada em IP, adicione 65.21.190.34 à lista de permissões.

  • Se o token reCAPTCHA v2 ainda não for aceito — entre em contato com o suporte técnico.

Parâmetros da solicitação

type<string>required

RecaptchaV2Task


websiteURL<string>required

Endereço da página da web com captcha.


websiteKey<string>required

Chave do site do Recaptcha.
<div class="g-recaptcha" data-sitekey="THIS_ONE"></div>


recaptchaDataSValue<string>optional

Algumas implementações personalizadas podem conter o parâmetro adicional "data-s" no div do ReCaptcha2, que na verdade é um token de uso único e deve ser coletado toda vez que você quiser resolver um ReCaptcha2.
<div class="g-recaptcha" data-sitekey="sitekey" data-s="THIS_ONE"></div>


userAgent<string>optional

User-Agent do navegador usado na emulação. É necessário que você use uma assinatura de um navegador moderno, caso contrário, o Google pedirá para você "atualizar seu navegador".


cookies<string>optional

Cookies adicionais que devemos usar durante a interação com a página de destino ou com o Google.

Formato: cookiename1=cookievalue1; cookiename2=cookievalue2


isInvisible<bool>optional

true se o captcha for invisível, ou seja, tem um campo oculto para confirmação, sem caixa de seleção. Se um bot for suspeito, uma verificação adicional será chamada.


proxyType<string>optional

http - proxy regular http/https;
https - use essa opção apenas se "http" não funcionar (necessário para alguns proxies personalizados);
socks4 - proxy socks4;
socks5 - proxy socks5.


proxyAddress<string>optional

Endereço IP do proxy IPv4/IPv6. Não permitido:

  • uso de proxies transparentes (onde é possível ver o IP do cliente);
  • uso de proxies em máquinas locais.


proxyPort<integer>optional

Porta do proxy.


proxyLogin<string>optional

Login do servidor proxy.


proxyPassword<string>optional

Senha do servidor proxy.

Método para criar tarefa

POST
https://api.capmonster.cloud/createTask

Solicitação

{
"clientKey":"API_KEY",
"task": {
"type":"RecaptchaV2Task",
"websiteURL":"https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
"websiteKey":"6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd"
}
}

Resposta

{
"errorId":0,
"taskId":407533072
}

Método para obter o resultado da tarefa

Aviso!

Em alguns sites, é importante que o UserAgent corresponda ao usado ao resolver o captcha. Portanto, se o CapMonster Cloud retornar um UserAgent junto com o token, sempre aplique-o ao enviar o formulário ou confirmar a solução na página de destino.

Use o método getTaskResult para solicitar a resposta para o ReCaptcha2. Você receberá uma resposta em 100 ms, dependendo da carga do serviço.

POST
https://api.capmonster.cloud/getTaskResult

Solicitação

{
"clientKey":"API_KEY",
"taskId": 407533072
}

Resposta

{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}

Para alguns sites, a resposta pode ser semelhante à seguinte. Ao enviar a solução, certifique-se de usar o UserAgent fornecido na resposta, mesmo que seja diferente do que está atualmente sendo usado pelo seu navegador ou script.

{
"errorId": 0,
"status": "ready",
"solution": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"gRecaptchaResponse": "0cAFcWeA5Y3...hF8UWA",
"cookies": {
"nocookies": "true"
}
}
}

PropriedadeTipoDescrição
gRecaptchaResponseStringHash que deve ser inserido no formulário de envio do Recaptcha2 em <textarea id="g-recaptcha-response" ..></textarea>. Possui um comprimento de 500 a 2190 bytes.

Como Encontrar Todos os Parâmetros Necessários para a Criação da Tarefa

Manualmente

  1. Abra seu site onde o captcha aparece no navegador.
  2. Clique com o botão direito no elemento do captcha e selecione Inspecionar.

websiteKey (data-sitekey)

Aba "Elements": procure um elemento <div class="g-recaptcha"> na página. Copie o valor do atributo data-sitekey, por exemplo:

sitekey

Aba "Network":

Abra a aba Network e recarregue a página com o captcha. Procure uma requisição como a abaixo (o valor de k é o data-sitekey):

sitekey1

recaptchaDataSValue (se usado)

Se a página contiver um atributo data-s, encontre-o no HTML:

datas

isInvisible

Aba "Network": se o captcha for invisível, o elemento conterá o atributo size="invisible", por exemplo:

isinvisible

Automaticamente

Para automatizar a extração dos parâmetros, eles podem ser obtidos via navegador (normal ou headless, por exemplo, usando Playwright) ou diretamente a partir de requisições HTTP. Como os valores dos parâmetros dinâmicos têm curta duração, recomenda-se utilizá-los imediatamente após a extração.

Importante!

Os trechos de código fornecidos são exemplos básicos para aprendizado sobre como extrair os parâmetros necessários. A implementação exata dependerá do seu site com captcha, sua estrutura e os elementos HTML e seletores utilizados.

Mostrar Código (para navegador)
(() => {
const iframeEl = document.querySelector('iframe[src^="https://www.google.com/recaptcha/api2/anchor?"]');
const captchaUrl = iframeEl?.getAttribute('src');

if (captchaUrl) {
const urlParams = new URLSearchParams(captchaUrl.split('?')[1]);

const sitekey = urlParams.get('k');
const size = urlParams.get('size');

const isInvisible = size === 'invisible';

const sitekeyEl = document.querySelector('[data-sitekey]');
const datasEl = document.querySelector('[data-s]');
const datas = datasEl?.getAttribute('data-s');

console.log({
sitekey: sitekey || sitekeyEl?.getAttribute('data-sitekey'),
datas,
isInvisible
});
}
})();
Mostrar Código (Node.js)
import { chromium } from "playwright";

(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();

await page.goto("https://example.com");

await page.waitForSelector('iframe[src^="https://www.google.com/recaptcha/api2/anchor?"]');

const captchaData = await page.evaluate(() => {
const iframeEl = document.querySelector('iframe[src^=
"https://www.google.com/recaptcha/api2/anchor?"]');
const captchaUrl = iframeEl?.getAttribute("src");

if (captchaUrl) {
const urlParams = new URLSearchParams(captchaUrl.split("?")[1]);
const sitekey = urlParams.get("k");
const size = urlParams.get("size");
const isInvisible = size === "invisible";

const sitekeyEl = document.querySelector("[data-sitekey]");
const datasEl = document.querySelector("[data-s]");
const datas = datasEl?.getAttribute("data-s");

return {
sitekey: sitekey || sitekeyEl?.getAttribute("data-sitekey"),
datas,
isInvisible,
};
}
return null;
});

console.log(captchaData);
await browser.close();
})();

Usar biblioteca SDK

Mostrar Código (para navegador)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2Request }
from '@zennolab_com/capmonstercloud-client';

document.addEventListener('DOMContentLoaded', async () => {

const API_KEY = "YOUR_API_KEY"; // Insira sua chave de API do CapMonster Cloud

const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// Se necessário, você pode verificar o saldo
const balance = await cmcClient.getBalance();
console.log("Balance:", balance);

// Exemplo básico sem proxy
// O CapMonster Cloud usa automaticamente seus próprios proxies
let recaptchaV2Request = new RecaptchaV2Request({
websiteURL: "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
websiteKey: "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd"
});

// Exemplo de uso do seu próprio proxy
// Descomente este bloco se quiser usar um proxy personalizado

/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};

recaptchaV2Request = new RecaptchaV2Request({
websiteURL: "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
websiteKey: "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
proxy,
userAgent: "userAgentPlaceholder"
});
*/

const result = await cmcClient.Solve(recaptchaV2Request);
console.log("Solution:", result);
});
Mostrar Código (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2Request } from '@zennolab_com/capmonstercloud-client';

const API_KEY = "YOUR_API_KEY"; // Insira sua chave de API do CapMonster Cloud

async function solveRecaptchaV2() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// Exemplo básico sem proxy
// O CapMonster Cloud usa automaticamente seus próprios proxies
let recaptcha2Request = new RecaptchaV2Request({
websiteURL: "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
websiteKey: "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd"
});

// Exemplo de uso do seu próprio proxy
// Descomente este bloco se quiser usar um proxy personalizado

/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};

recaptcha2Request = new RecaptchaV2Request({
websiteURL: "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
websiteKey: "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
proxy,
userAgent: "userAgentPlaceholder"
});
*/

// Se necessário, você pode verificar o saldo
const balance = await client.getBalance();
console.log("Balance:", balance);

const result = await client.Solve(recaptcha2Request);
console.log("Solution:", result);
}

solveRecaptchaV2().catch(console.error);
Mais sobre o tema em nosso blog