Solving reCaptcha Enterprise

reCaptcha Enterprise is the newest type of captcha from Google. It can be used as V2 and V3 and provides website administrators an option to report the interaction result - was it a human or not.

Start now

reCaptcha Enterprise statistics

How to solve reCaptcha Enterprise

  1. First step is to determine that Enterprise version of reCaptcha is used. The main Enterprise attributes are:

    1. enterprise.js script instead of api.js is included on the page

      <script src="https://recaptcha.net/recaptcha/enterprise.js" async="" defer=""></script>
    2. grecaptcha.enterprise.METHOD calls in javascript code of the website instead of grecaptcha.METHOD

  2. Then you need to determine which implementation is used: V2, V2 Invisible or V3. It is quite easy, just follow the flowchart below, it works in 99% of cases.

    is the recaptcha checkbox visible? If yes, it is recaptcha v2; otherwise, does it ask to pass the test? If yes, it is recaptcha v2 invisible; otherwise, it is recaptcha v3

  3. Find captcha parameters the same way it is done for V2 or V3.

    • For V2 implementations there can be optional additional data used: in most cases that is a custom string value defined in s or data-s parameter. You can pass this data inside data-s request parameter.

    • For V3 you may also need the action value. To find it you need to dive into javascript code of the website and find the grecaptcha.enterprise.execute call. Action is passed to this call. But keep in mind that action is optional and can remain undefined.

  4. Add an additional parameter enterprise=1 to your request to in.php endpoint and interact with our API the same way it is done when solving V2 or solving V3 to get the token, then use the token in the same way it is used on your target website.

    PHP

    // https://github.com/2captcha/2captcha-php
    
    require(__DIR__ . '/../src/autoloader.php');
    
    $solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
    
    try {
        $result = $solver->recaptcha([
            'sitekey'   => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
            'url'       => 'https://mysite.com/page/with/recaptcha-enterprise',
            'enterprise' => 1,
        ]);
    } catch (\Exception $e) {
        die($e->getMessage());
    }
    
    die('Captcha solved: ' . $result->code);

    Java

    // https://github.com/2captcha/2captcha-java
    
    package examples;
    
    import com.twocaptcha.TwoCaptcha;
    import com.twocaptcha.captcha.ReCaptcha;
    
    public class ReCaptchaV2OptionsExample {
        public static void main(String[] args) {
            TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
            ReCaptcha captcha = new ReCaptcha();
            captcha.setSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
            captcha.setUrl("https://mysite.com/page/with/recaptcha-enterprise");
            captcha.setEnterprise(true);
            try {
                solver.solve(captcha);
                System.out.println("Captcha solved: " + captcha.getCode());
            } catch (Exception e) {
                System.out.println("Error occurred: " + e.getMessage());
            }
        }
    }

    C#

    // https://github.com/2captcha/2captcha-csharp
    
    using System;
    using System.Linq;
    using TwoCaptcha.Captcha;
    
    namespace TwoCaptcha.Examples
    {
        public class ReCaptchaV2OptionsExample
        {
            public void Main()
            {
                TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
                ReCaptcha captcha = new ReCaptcha();
                captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
                captcha.SetUrl("https://mysite.com/page/with/recaptcha-enterprise");
                captcha.SetInvisible(true);
                captcha.SetEnterprise(true);
                try
                {
                    solver.Solve(captcha).Wait();
                    Console.WriteLine("Captcha solved: " + captcha.Code);
                }
                catch (AggregateException e)
                {
                    Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
                }
            }
        }
    }

    Python

    # https://github.com/2captcha/2captcha-python
    
    import sys
    import os
    
    sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
    
    from twocaptcha import TwoCaptcha
    
    api_key = 'YOUR_API_KEY'
    
    solver = TwoCaptcha(api_key)
    
    try:
        result = solver.recaptcha(
            sitekey='6LfDxboZAAAAAD6GHukjvUy6lszoeG3H4nQW57b6',
            url='https://2captcha.com/demo/recaptcha-v2-invisible?level=low',
            invisible=1,
            enterprise=1
            )
    
    except Exception as e:
        sys.exit(e)
    
    else:
        sys.exit('result: ' + str(result))

    Go

    // https://github.com/2captcha/2captcha-go
    
    package main
    
    import (
        "fmt"
        "log"
        "github.com/2captcha/2captcha-go"
    )
    
    func main() {
        client := api2captcha.NewClient("API_KEY")
        cap := api2captcha.reCAPTCHA{
            SiteKey: "6LeIxboZAAAAAFQy7d8GPzgRZu2bV0GwKS8ue_cH",
            Url: "https://2captcha.com/demo/recaptcha-v2",
        Enterprise: true,
        }
        code, err := client.Solve(cap.ToRequest())
        if err != nil {
            log.Fatal(err);
        }
        fmt.Println("code "+code)
    }

    C++

    // https://github.com/2captcha/2captcha-cpp
    
    #include <cstdio>
    
    #include "curl_http.hpp"
    #include "api2captcha.hpp"
    
    int main (int ac, char ** av)
    {
    api2captcha::curl_http_t http;
    http.set_verbose (true);
    
    api2captcha::client_t client;
    client.set_http_client (&http);
    client.set_api_key (API_KEY);
    
    api2captcha::recaptcha_t cap;
    cap.set_site_key ("6LeIxboZAAAAAFQy7d8GPzgRZu2bV0GwKS8ue_cH");
    cap.set_url ("https://2captcha.com/demo/recaptcha-v2");
    cap.set_enterprise(true);
    
    try
    {
        client.solve (cap);
        printf ("code '%s'\n", cap.code ().c_str ());
    }
    catch (std::exception & e)
    {
        fprintf (stderr, "Failed: %s\n", e.what ());
    }
    
    return 0;
    }

GithubFull documentation and code examplesRead more at 2Captcha API

Recognition price

The recognition cost is very low, less than $0.01 for one recaptcha. For convenience, the entire price is indicated for recognizing 1000 recaptchas, but billing in the system occurs separately for each recaptcha. Different types of recaptchas are recognized at different prices.

$2.99

Per 1000 recaptchas

Supported captchas

The process of solving a normal captcha is as follows: we take the captcha image from the page and send it to the 2Captcha service, where an employee solves it typing the indicated text, then the answer is returned to us, which must be entered in the appropriate field to solve the captcha

API demoHow to solve

The process of solving text captcha is as follows: we take the text question of the captcha from the page of its placement and transfer it to the 2Captcha service, where it is solved by the employee, after which the answer is returned to us, which must be entered in the appropriate field to solve the captcha

API demoHow to solve

The solution process is as follows: we take the captcha image from the page of its placement and the instructions on which pictures to click on and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of point coordinates, which we need to click for solving the captcha

API demoHow to solve

The process of solving Rotate Captcha is as follows: we take an image or several images of a captcha from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of the value of the image rotation angle, we need to rotate the image on the angle to solve captcha

API demoHow to solve

The process of solving reCAPTCHA V2 is as follows: we take the captcha parameters from the page in the form of the data-sitekey parameter and the page URL and transfer it to the 2Captcha service, where the employee solves it, then the response is returned to us in the form of a token, which must be entered into the appropriate field for the solution captcha

API demoHow to solve

The process of solving reCAPTCHA V2 Callback does not differ from the similar process of solving reCAPTCHA V2: we take the captcha parameters from the page in the form of the data-sitekey parameter and the page URL and transfer it to the 2Captcha service, where the employee solves it, then the response is returned to us in as a token, which we should be entered into the appropriate field to solve the captcha. Sometimes you won't find a button submitting a form. A callback function can be used instead. This function is executed when the captcha is recognized. Usually the callback function is defined in the data-callback parameter or as the callback parameter of the grecaptcha.render method call

API demoHow to solve

The process of solving reCAPTCHA V2 Invisible is similar to the recognition of reCAPTCHA V2: we take the captcha parameters from the page in the form of the data-sitekey parameter and the page URL and transfer it to the 2Captcha service, where the employee solves it, after which the response is returned to us in the form of a token, which we need enter in the appropriate field to solve the captcha

API demoHow to solve

The process for solving reCAPTCHA V3 is as follows: we take the captcha parameters from the page in the form of the data-sitekey, action and the page URL and transfer it to the 2Captcha service, where it is solved by an employee with the appropriate “humanity” rating, after that the response is returned to us in the form of a token, which must be entered into the appropriate field to solve the captcha. In many ways, the new type of captcha is similar to reCAPTCHA V2, i.e. the basic principle remains the same - the user receives a token from the 2Captcha API, which is sent in a POST request to the site, and the site verifies the token through the 2Captcha API

API demoHow to solve

The process of solving ReCaptcha Enterprise is as follows: we determine the type of reCaptcha, it can be V2 or V3, after which we take the captcha image from the page of its placement in the form of the data-sitekey parameter and transfer it to the 2Captcha service, where it is solved by the employee, after which it is returned to us answer in the form of a token, which must be entered in the appropriate field to solve the captcha

The process of solving KeyCaptcha is as follows: we take a set of necessary parameters from the page of its placement and pass it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of other parameters, which must be passed to the appropriate fields to solve the captcha

API demoHow to solve

The process of solving GeeTest Captcha is as follows: we take a set of necessary parameters from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of already other parameters, which must be passed to the appropriate fields to solve the captcha

API demoHow to solve

The solution process is as follows: we take the captcha image from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the response is returned to us in the form of a token, which must be entered into the appropriate field to solve the captcha

API demoHow to solve

The process of solving FunCaptcha by Arkose Labs is as follows: we take a set of necessary parameters from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of already other parameters, which must be passed to the appropriate fields to solve the captcha

How to solve

The process of solving Capy Puzzle Captcha is as follows: we take a set of necessary parameters from the page of its placement and transfer it to the 2Captcha service, where the employee solves it, after which the answer is returned to us in the form of a set of already other parameters, which must be passed to the appropriate fields to solve the captcha

How to solve

The TikTok Captcha solution process is based on cookies, which must be used no later than three seconds after our employees solve the captcha. It is necessary to collect all cookies from the page where the captcha is placed, transfer it to the 2Captcha service, where the solution will occur, and apply the set of cookies received in response and then perform a captcha protected action on the page

How to solve