Перейти к основному содержимому
Возникают проблемы с получением токена?
Свяжитесь с поддержкой

RecaptchaV2Task

Объект содержит данные о задаче на решение ReCaptcha2 от Google. Для обеспечения универсальности решения этого вида капчи нам необходимо использовать все данные, которые вы используете во время автоматизации заполнения формы на целевом сайте, включая прокси, user-agent браузера и cookies. Это позволит избежать любых проблем при изменении Google кода своей капчи.

Капча может решаться довольно долго по сравнению с обычной капчей, но это компенсируется тем, что полученный g-captcha-response действует еще 60 секунд после решения капчи.

Ещё больше по теме в нашем блоге
Внимание!

Если прокси с авторизацией по IP, то необходимо обязательно добавить 116.203.55.208 в белый список.

Параметры запроса

type<string>required

RecaptchaV2Task


websiteURL<string>required

Адрес страницы, на которой решается капча.


websiteKey<string>required

Ключ-идентификатор ReCaptcha2 на целевой странице.
<div class="g-recaptcha" data-sitekey="THIS_ONE"></div>


recaptchaDataSValue<string>optional

Некоторые реализации виджета ReCaptcha2 могут содержать дополнительный параметр "data-s" в div'е ReCaptcha2, который является одноразовым токеном и должен собираться каждый раз при решении ReCaptcha2.
<div class="g-recaptcha" data-sitekey="some sitekey" data-s="THIS_ONE"></div>


userAgent<string>optional

User-Agent браузера, используемый в эмуляции. Необходимо использовать подпись современного браузера, иначе Google будет возвращать ошибку, требуя обновить браузер.


cookies<string>optional

Дополнительные cookies, которые мы должны использовать во время взаимодействия с целевой страницей.

Формат: cookiename1=cookievalue1; cookiename2=cookievalue2


isInvisible<bool>optional

true, если капча невидимая, т.е. имеет скрытое поле для подтверждения, чекбокс отсутствует. При подозрении на бота вызывается дополнительная проверка.


proxyType<string>optional

http - обычный http/https прокси;
https - попробуйте эту опцию только если "http" не работает (требуется для некоторых кастомных прокси);
socks4 - socks4 прокси;
socks5 - socks5 прокси.


proxyAddress<string>optional

IP адрес прокси IPv4/IPv6. Не допускается:

  • использование имен хостов;
  • использование прозрачных прокси (там где можно видеть IP клиента);
  • использование прокси на локальных машинах.


proxyPort<integer>optional

Порт прокси.


proxyLogin<string>optional

Логин прокси-сервера.


proxyPassword<string>optional

Пароль прокси-сервера.

Метод создания задачи

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

Запрос

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

Ответ

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

Метод получения результата задачи

Используйте метод getTaskResult чтобы получить решение ReCaptcha2. В зависимости от загрузки системы вы получите ответ через время от 100 мс.

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

Запрос

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

Ответ

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

СвойствоТипОписание
gRecaptchaResponseStringХеш, который необходимо подставить в форму с ReCaptcha2 в <textarea id="g-recaptcha-response" ..></textarea>. Имеет длину от 500 до 2190 байт.

Как найти все нужные параметры для создания задачи на решение

Вручную

  1. Откройте ваш сайт, где отображается капча, в браузере.
  2. Правой кнопкой кликните по элементу капчи и выберите Inspect.

websiteKey (data-sitekey)

Вкладка Elements: элемент <div class="g-recaptcha"> на странице. Скопируйте значение атрибута data-sitekey, например:

sitekey

Вкладка Networks:

Откройте вкладку Networks и перезагрузите страницу с капчей. Найдите похожий запрос (значение k – это и есть data-sitekey):

sitekey1

recaptchaDataSValue (если используется)

Если на странице есть атрибут data-s, найдите его в HTML:

datas

isInvisible

Вкладка Networks: если капча невидимая, в элементе будет атрибут size="invisible", например:

isinvisible

Автоматически

Удобный способ автоматизировать поиск всех необходимых параметров. Некоторые параметры генерируются заново при каждой загрузке страницы, поэтому для их извлечения потребуется работать через браузер – обычный или в режиме headless (например, с помощью Playwright). Так как значения динамических параметров хранятся недолго, капчу нужно решать сразу после их получения.

Важно!

Приведённые фрагменты кода являются базовыми примерами для ознакомления в извлечении необходимых параметров. Точная реализация будет зависеть от вашего сайта с капчей, его структуры и используемых HTML-элементов и селекторов.

Показать код (для браузера)
(() => {
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
});
}
})();
Показать код (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();
})();

Используйте библиотеку SDK

// https://github.com/ZennoLab/capmonstercloud-client-js

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

document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: '<your capmonster.cloud API key>' }));
console.log(await cmcClient.getBalance());

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

// const recaptchaV2Request = new RecaptchaV2Request({
// websiteURL: 'https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high',
// websiteKey: '6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd',
// proxyType: 'http',
// proxyAddress: '8.8.8.8',
// proxyPort: 8080,
// proxyLogin: 'proxyLoginHere',
// proxyPassword: 'proxyPasswordHere',
// userAgent: 'userAgentPlaceholder',
// });

console.log(await cmcClient.Solve(recaptchaV2Request));
});
Ещё больше по теме в нашем блоге