Skip to main content
Are you experiencing issues obtaining the token?
Contact support

RecaptchaV3TaskProxyless

The object contains data for Google ReCaptcha3 solving task. This task will be executed by our service using our own proxy servers.

ReCaptcha3, unlike ReCaptcha2, does not require any action from the site visitor, it works invisibly in the background of the page, collecting and analyzing data about the user to determine whether he is a human or a bot. Based on this analytics, the site receives a trust rating (from 0.1 to 0.9).

When creating a task, you should additionally pass two parameters - pageAction and minScore.

Request parameters

type<string>required

RecaptchaV3TaskProxyless


websiteURL<string>required

Address of a webpage with Google ReCaptcha.


websiteKey<string>required

Recaptcha website key.
https://www.google.com/recaptcha/api.js?render=THIS_ONE


minScore<double>optional

Value from 0.1 to 0.9


pageAction<string>optional

Widget action value. Website owner defines what user is doing on the page through this parameter. Default value: verify

Example:
grecaptcha.execute('site_key', {action:'login_test'}).

Create task method

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

Request

{
"clientKey":"API_KEY",
"task": {
"type":"RecaptchaV3TaskProxyless",
"websiteURL":"https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey":"6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"minScore": 0.3,
"pageAction": "myverify"
}
}

Response

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

Get task result method

Use the getTaskResult to request answer for ReCaptcha3. You will get response within 10 - 30 sec period depending on service workload.

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

Request

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

Response

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

PropertyTypeDescription
gRecaptchaResponseStringHash which should be inserted into Recaptcha3 submit form in <textarea id="g-recaptcha-response" ></textarea>. It has a length of 500 to 2190 bytes.

How to Find All Required Parameters for Task Creation

Manually

  1. Open your website where the captcha appears in the browser.
  2. Right-click on the captcha element and select Inspect.

websiteKey

The public site key (sitekey). Usually, it can be found in the included script:

In Elements:

elements

In the Network tab:

network

pageAction

The action name passed to grecaptcha.execute(). For example:​

action

Automatically

A convenient way to automate the search for all necessary parameters. Some parameters are regenerated every time the page loads, so you'll need to extract them through a browser — either regular or headless (e.g., using Playwright). Since the values of dynamic parameters are short-lived, the captcha must be solved immediately after retrieving them.

Important!

The code snippets provided are basic examples for familiarization with extracting the required parameters. The exact implementation will depend on your captcha page, its structure, and the HTML elements/selectors it uses.

Show code (in browser)
(() => {
const originalGrecaptcha = window.grecaptcha;

if (!originalGrecaptcha || !originalGrecaptcha.execute) {
console.warn("grecaptcha.execute not found. Wait until it loads.");
return;
}

window.__extractedParams = null;

window.grecaptcha = {
...originalGrecaptcha,
execute: function(sitekey, config) {
console.log("Captured!");
console.log("sitekey:", sitekey);
console.log("action:", config?.action);
window.__extractedParams = {
sitekey,
action: config?.action
};

return originalGrecaptcha.execute(sitekey, config);
},
ready: originalGrecaptcha.ready
};

console.log("grecaptcha.execute is wrapped. Click the button - parameters will be captured.");
})();
Show code (Node.js)
import { chromium } from "playwright";

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

const jsContents = [];

page.on("response", async (response) => {
try {
const url = response.url();
const ct = response.headers()["content-type"] || "";
if (ct.includes("javascript") || url.endsWith(".js")) {
const text = await response.text();
jsContents.push(text);
}
} catch (e) {}
});

const targetUrl = "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta";
await page.goto(targetUrl, { timeout: 60000 });
await page.waitForTimeout(3000);

const inlineScripts = await page.$$eval("script:not([src])", (scripts) =>
scripts.map((s) => s.textContent)
);
jsContents.push(...inlineScripts);

const executeRegex =
/grecaptcha\.execute\(\s*['"]
(?<sitekey>[^'"]+)['"]\s*,\s*\{[^}]*action\s*:\s*['"](?<action>[^'"]+)['"]/i;

let foundSitekey = null;
let foundAction = null;

for (const js of jsContents) {
const match = js.match(executeRegex);
if (match && match.groups) {
foundSitekey = match.groups.sitekey;
foundAction = match.groups.action;
break;
}
}

console.log({
sitekey: foundSitekey,
action: foundAction,
});

await browser.close();
})();

Use SDK Library

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

import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV3ProxylessRequest } 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 recaptchaV3Request = new RecaptchaV3ProxylessRequest({
websiteURL: 'https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high',
websiteKey: '6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd',
minScore: 0.6,
pageAction: 'some-action',
});

console.log(await cmcClient.Solve(recaptchaV3Request));
});
More on the topic in our blog