Documentation menu

RecaptchaV2EnterpriseTask: solve Google Recaptcha V2 Enterprise with a proxy

This type of task is for solving Google Recaptcha Enterprise V2 using the provided proxy.

It is mostly similar to RecaptchaV2Task, except tasks are solved using an Enterprise API and assigned to workers with the best Recaptcha V3 score. For more information about Recaptcha Enterprise please visit this FAQ section.

Recaptcha V2 Enterprise example. Visually, it is identical to the non-enterprise version.

Task object

Property Type Required Purpose
type String Yes RecaptchaV2EnterpriseTask
websiteURL String Yes Address of a target web page. Can be located anywhere on the web site, even in a member area. Our workers don't navigate there but simulate the visit instead.
websiteKey String Yes Recaptcha website key. Learn how to find it in this article.
enterprisePayload Object No Additional parameters which should be passed to "grecaptcha.enterprise.render" method along with sitekey. Example of what you should search for:
JSON with no errors
                  grecaptcha.enterprise.render("some-div-id", {
    sitekey: "6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16",
    theme: "dark",
    s: "2JvUXHNTnZl1Jb6WEvbDyBMzrMTR7oQ78QRhBcG07rk9bpaAaE0LRq1ZeP5NYa0N...ugQA"
});
                
In this example, you will notice a parameter "s" which is not documented, but obviously required. Send it to the API, so that we render the Recaptcha widget with this parameter properly.
apiDomain String No Use this parameter to send the domain name from which the Recaptcha script should be served. Can have only one of two values: "www.google.com" or "www.recaptcha.net". Do not use this parameter unless you understand what you are doing.
proxyType String Yes Type of proxy
http - usual http/https proxy
socks4 - socks4 proxy
socks5 - socks5 proxy
proxyAddress String Yes Proxy IP address ipv4/ipv6. No host names or IP addresses from local networks.
proxyPort Integer Yes Proxy port
proxyLogin String No Login for proxy which requires authorization (basic)
proxyPassword String No Proxy password
userAgent String Yes Browser's User-Agent used in emulation. You must use a modern-browser signature; otherwise, Google will ask you to "update your browser".
cookies String No Additional cookies that we should use in Google domains.

Request example

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"RecaptchaV2EnterpriseTask",
            "websiteURL":"http://mywebsite.com/recaptcha/test.php",
            "websiteKey":"6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16",
            "enterprisePayload": {
                "s": "SOME_ADDITIONAL_TOKEN"
            },
            "proxyType":"http",
            "proxyAddress":"8.8.8.8",
            "proxyPort":8080,
            "proxyLogin":"proxyLoginHere",
            "proxyPassword":"proxyPasswordHere",
            "userAgent":"MODERN_USER_AGENT_HERE"
        }
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git

include("anticaptcha.php");
include("recaptchaV2Enterprise.php");

$api = new RecaptchaV2Enterprise();
$api->setVerboseMode(true);

//your anti-captcha.com account key
$api->setKey("YOUR_API_KEY_HERE");

//target website address
$api->setWebsiteURL("http://enteprisedomain.com/recaptcha/test.php");

//recaptcha key from target website
$api->setWebsiteKey("ENTEPRISE_SITEKEY_HERE");

//optional custom payload for grecaptcha.enterprise.render
$api->setEnterprisePayload(["s" => "TEMPORARY_TOKEN_VALUE"]);

//proxy access parameters
// DO NOT USE PURCHASED/RENTED PROXIES ON PROXY SERVICES!!!
// THEY WILL NOT WORK!
// USE ONLY PROXIES YOU INSTALL YOURSELF ON YOUR OWN SERVER OR FAST VPS
// USE PROPER PROXY SOFTWARE LIKE SQUID !
// INSTALLATION INSTRUCTIONS:
// https://docker.anti-captcha.com/apidoc/articles/how-to-install-squid
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(1234);
//optional login and password
$api->setProxyLogin("login");
$api->setProxyPassword("password");

//browser header parameters
$api->setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116");


//create task in API
if (!$api->createTask()) {
    $api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
    return false;
}

$taskId = $api->getTaskId();

//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
    echo "could not solve captcha\n";
    echo $api->getErrorMessage()."\n";
} else {

    $gResponse    =   $api->getTaskSolution();
    echo "your recaptcha token: $gResponse\n\n";

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.recaptchav2enterpriseproxyon import *

solver = recaptchaV2EnterpriseProxyon()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
# solver.set_enterprise_payload({"s": "sometoken"})
solver.set_website_url("https://website.com")
solver.set_website_key("SITE_KEY")
solver.set_proxy_address("PROXY_ADDRESS")
solver.set_proxy_port(1234)
solver.set_proxy_login("proxylogin")
solver.set_proxy_password("proxypassword")
solver.set_user_agent("Mozilla/5.0")
solver.set_cookies("test=true")

g_response = solver.solve_and_return_solution()
if g_response != 0:
    print("g-response: "+g_response)
else:
    print("task finished with error "+solver.error_code)
        
NodeJS
          //npm -i @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm

const ac = require("@antiadmin/anticaptchaofficial");

ac.setAPIKey('YOUR_API_KEY_HERE');
ac.solveRecaptchaV2EnterpriseProxyOn(
    'http://DOMAIN.COM',
    'WEBSITE_KEY',
    {
        "s" : "SOME_TOKEN",
        "any_custom_parameter" : "string_number_or_boolean"
    },
    'http', //http, socks4, socks5
    'PROXY_ADDRESS',
    'PROXY_PORT',
    'PROXY_LOGIN',
    'PROXY_PASSWORD',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116',
    'some=cookies')
    .then(gresponse => {
        console.log('g-response: '+gresponse);
    })
    .catch(error => console.log('test received error '+error));
        
C#
          using System;
using Anticaptcha_example.Api;
using Anticaptcha_example.Helper;
using Newtonsoft.Json.Linq;

namespace Anticaptcha_example
{
    internal class Program
    {
        private static void Main() {

            DebugHelper.VerboseMode = true;

            var api = new RecaptchaV2Enterprise
            {
                ClientKey = "YOUR_API_KEY_HERE",
                WebsiteUrl = new Uri("http://makeawebsitehub.com/recaptcha/test.php"),
                WebsiteKey = "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ",
                ProxyAddress = "xxx.xx.xx.xx",
                ProxyPort = 1234,
                ProxyLogin = "login",
                ProxyPassword = "password",
                UserAgent = "Opera 6.0"
            };
            api.EnterprisePayload.Add("s", "SOME_UNDOCUMENTED_TOKEN");
            api.EnterprisePayload.Add("blabla", "ANOTHER TOKEN");

            if (!api.CreateTask())
                DebugHelper.Out("API v2 send failed. " + api.ErrorMessage, DebugHelper.Type.Error);
            else if (!api.WaitForResult())
                DebugHelper.Out("Could not solve the captcha.", DebugHelper.Type.Error);
            else
                DebugHelper.Out("Result: " + api.GetTaskSolution().GRecaptchaResponse, DebugHelper.Type.Success);

        }
    }
}

        
Java
          //git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git

package com.anti_captcha;

import com.anti_captcha.Api.RecaptchaV2Enterprise;
import com.anti_captcha.Helper.DebugHelper;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {

        DebugHelper.setVerboseMode(true);

        RecaptchaV2Enterprise api = new RecaptchaV2Enterprise();
        api.setClientKey("YOUR_API_KEY_HERE");
        api.setWebsiteUrl(new URL("http://http.myjino.ru/recaptcha/test-get.php"));
        api.setWebsiteKey("6Lc_aCMTAAAAABx7u2W0WPXnVbI_v6ZdbM6rYf16");
        api.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 " +
                "(KHTML, like Gecko) Chrome/52.0.2743.116");

        // proxy access parameters
        // DO NOT USE PURCHASED/RENTED PROXIES WITH PROXY SERVICES!!!
        api.setProxyType(RecaptchaV2.ProxyTypeOption.HTTP);
        api.setProxyAddress("xx.xxx.xx.xx");
        api.setProxyPort(8282);
        api.setProxyLogin("login");
        api.setProxyPassword("password");

        //optional payload, please look for RecaptchaV2Enterprise documentation regarding it
        JSONObject enterprisePayload = new JSONObject();
        try {
            enterprisePayload.put("s", "SOME_UNDOCUMENTED_TOKEN_VALUE");
        } catch (Exception e) {
            DebugHelper.out("JSON error: "+e.getMessage(), DebugHelper.Type.ERROR);
            return;
        }
        api.setEnterprisePayload(enterprisePayload);

        if (!api.createTask()) {
            DebugHelper.out(
                    "API v2 send failed. " + api.getErrorMessage(),
                    DebugHelper.Type.ERROR
            );
        } else if (!api.waitForResult()) {
            DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
        } else {
            DebugHelper.out("Result: " + api.getTaskSolution().getGRecaptchaResponse(), DebugHelper.Type.SUCCESS);
        }

    }
}
        

Response example

JSON with no errors
          {
    "errorId": 0,
    "taskId": 7654321
}
        
JSON with an error
          {
    "errorId": 1,
    "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
    "errorDescription": "Account authorization key not found in the system"
}
        

Retrieve the solution

Use method getTaskResult to request the solution. Give the worker about 5 seconds before making your first request. If the worker is still busy, retry in 3 seconds.

Task solution object

Property Type Purpose
gRecaptchaResponse String Token string required for interacting with the submit form on the target website.

Response example

JSON with no errors
          {
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}