recaptcha-v3 logo reCAPTCHA V3 demo

reCAPTCHA V3 is the newest type of captcha from Google. It has no challenge so there is no need for user interaction. Instead it uses a "humanity" rating - score.

Captcha example

reCAPTCHA v3 blocks scrapers and tests, slowing development. Integrate a dedicated solver API to resolve challenges automatically.

How to bypass reCAPTCHA V3

Explore the source code of the website and search for grecaptcha.execute call. The call can be anywhere in the website code, inside script elements of the page of inside the included javascript files. For example, on our demo page source code you will find:

    window.grecaptcha.ready(function() {
        grecaptcha.execute(
            '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu', 
            {action: 'demo_action'},
        ).then(function(token) {
            if (window.verifyRecaptcha) {
            window.verifyRecaptcha(token);
            }
        });
    });

There you can find all the required values to solve the captcha with our API. And also you can see .then() method call - that's the code that handles the token after it was generated. You need to call the same code and pass the token received from our API. Send sitekey, pageurl and action values to our API.

With SDK (recommended):

PHP
    // https://github.com/solvercaptcha/solvecaptcha-php
    
    require(__DIR__ . '/../src/autoloader.php');

    $solver = new \SolveCaptcha\SolveCaptcha('YOUR_API_KEY');

    try {
        $result = $solver->recaptcha([
            'sitekey' => '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
            'url'     => 'https://solvecaptcha.com/demo/recaptcha-v3',
            'version' => 'v3',
            'action'  => 'demo_action',
            'score'   => 0.9,
        ]);
    } catch (\Exception $e) {
        die($e->getMessage());
    }

    die('Captcha solved: ' . $result->code);
Python
    // https://github.com/solvercaptcha/solvecaptcha-python
    
    import sys
    import os

    sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

    from solvecaptcha import SolveCaptcha

    api_key = os.getenv('APIKEY_solvecaptcha', 'YOUR_API_KEY')

    solver = SolveCaptcha(api_key)

    try:
        result = solver.recaptcha(
            sitekey='6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
            url='https://solvecaptcha.com/demo/recaptcha-v3',
            version='v3',
            action='demo_action',
            score=0.9
        )

    except Exception as e:
        sys.exit(e)

    else:
        sys.exit('solved: ' + str(result))
Java
    // https://github.com/solvercaptcha/solvecaptcha-java
    
    package examples;

    import com.solvecaptcha.SolveCaptcha;
    import com.solvecaptcha.captcha.Normal;

    public class reCAPTCHAV3Example {
    public static void main(String[] args) {
        SolveCaptcha solver = new solvecaptcha("YOUR_API_KEY");
        ReCaptcha captcha = new ReCaptcha();
        captcha.setSiteKey("6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu");
        captcha.setUrl("https://solvecaptcha.com/demo/recaptcha-v3");
        captcha.setVersion("v3");
        captcha.setAction("demo_action");
        captcha.setScore(0.9);
        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/solvercaptcha/solvecaptcha-csharp
    
    using System;
    using System.Linq;
    using SolveCaptcha.Captcha;

    namespace SolveCaptcha.Examples
    {
    public class reCAPTCHAV3Example
    {
        public void Main()
        {
            SolveCaptcha solver = new SolveCaptcha("YOUR_API_KEY");
            ReCaptcha captcha = new ReCaptcha();
            captcha.SetSiteKey("6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu");
            captcha.SetUrl("https://solvecaptcha.com/demo/recaptcha-v3");
            captcha.SetVersion("v3");
            captcha.SetAction("demo_action");
            captcha.SetScore(0.9);
            try
            {
                solver.Solve(captcha).Wait();
                Console.WriteLine("Captcha solved: " + captcha.Code);
            }
            catch (AggregateException e)
            {
                Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
            }
        }
      }
    }
Go
    // https://github.com/solvercaptcha/solvecaptcha-go
    
    package main

    import (
        "fmt"
        "log"
        "github.com/solvercaptcha/solvecaptcha-go"
    )

    func main() {
        client := apisolvecaptcha.NewClient("API_KEY")
        captcha := apisolvecaptcha.ReCaptcha{
            SiteKey: "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu",
            Url: "https://solvecaptcha.com/demo/recaptcha-v3",
            Version: "v3",
            Action: "demo_action",
            Score: 0.9,
        }
        code, err := client.Solve(captcha.ToRequest())
        if err != nil {
            log.Fatal(err);
        }
        fmt.Println("code "+code)
    }
C++
    // https://github.com/solvercaptcha/solvecaptcha-cpp
    
    #include <cstdio>

    #include "curl_http.hpp"
    #include "apisolvecaptcha.hpp"

    int main (int ac, char ** av)
    {
    apisolvecaptcha::curl_http_t http;
    http.set_verbose (true);

    apisolvecaptcha::client_t client;
    client.set_http_client (&http);
    client.set_api_key (API_KEY);

    apisolvecaptcha::recaptcha_t cap;
    cap.set_site_key ("6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu");
    cap.set_url ("https://solvecaptcha.com/demo/recaptcha-v3");
    cap.set_version ("v3");
    cap.set_action ("demo_action");
    cap.set_score (0.9);

    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;   
    }
Ruby
    // https://github.com/solvercaptcha/solvecaptcha-ruby
    
    require 'api_solvecaptcha'

    client =  Apisolvecaptcha.new("YOUR_API_KEY")

    result = client.recaptcha_v3({
        googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
        pageurl: 'https://mysite.com/page/with/recaptcha_v3',
        version: 'v3',
        score: 0.3,
        action: 'verify'
    })

Manually:

Send GET or POST request to our API URL: https://solvecaptcha.com/in.php with method set to method=userrecaptcha, version set to v3 and provide the value found on previous step as value for googlekey and full page URL as value for pageurl.

  GET https://solvecaptcha.com/in.php?key=YOUR_API_KEY&method=userrecaptcha&googlekey=6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u&pageurl=http://solvecaptcha.com/demo/recaptcha-v2-callback  

If everything is fine server will return the ID of your captcha:

  OK|2122988149

Otherwise server will return an error code. After 15-20 seconds send GET request to get the result:

  GET https://solvecaptcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149

If captcha is already solved server will respond with the answer token:

  OK|03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3dCxIo11i53epEraq-uBO5mVm2XRikL8iKOWr0aG50sCuej9bXx5qcviUGSm4iK4NC_Q88flavWhaTXSh0VxoihBwBjXxwXuJZ-WGN5Sy4dtUl2wbpMqAj8Zwup1vyCaQJWFvRjYGWJ_TQBKTXNB5CCOgncqLetmJ6B6Cos7qoQyaB8ZzBOTGf5KSP6e-K9niYs772f53Oof6aJeSUDNjiKG9gN3FTrdwKwdnAwEYX-F37sI_vLB1Zs8NQo0PObHYy0b0sf7WSLkzzcIgW9GR0FwcCCm1P8lB-50GQHPEBJUHNnhJyDzwRoRAkVzrf7UkV8wKCdTwrrWqiYDgbrzURfHc2ESsp020MicJTasSiXmNRgryt-gf50q5BMkiRH7osm4DoUgsjc_XyQiEmQmxl5sqZP7aKsaE-EM00x59XsPzD3m3YI6SRCFRUevSyumBd7KmXE8VuzIO9lgnnbka4-eZynZa6vbB9cO3QjLH0xSG3-egcplD1uLGh79wC34RF49Ui3eHwua4S9XHpH6YBe7gXzz6_mv-o-fxrOuphwfrtwvvi2FGfpTexWvxhqWICMFTTjFBCEGEgj7_IFWEKirXW2RTZCVF0Gid7EtIsoEeZkPbrcUISGmgtiJkJ_KojuKwImF0G0CsTlxYTOU2sPsd5o1JDt65wGniQR2IZufnPbbK76Yh_KI2DY4cUxMfcb2fAXcFMc9dcpHg6f9wBXhUtFYTu6pi5LhhGuhpkiGcv6vWYNxMrpWJW_pV7q8mPilwkAP-zw5MJxkgijl2wDMpM-UUQ_k37FVtf-ndbQAIPG7S469doZMmb5IZYgvcB4ojqCW3Vz6Q  

If captcha is not solved yet server will return CAPCHA_NOT_READY result. Repeat your request in 5 seconds. If something went wrong server will return an error code.

Once we have a token we can execute the same code that is exexuted inside .then() method call and pass our token as the function call argument. In our demo case we can open javacsript execute the following code in the javascript console:

  window.verifyRecaptcha('03AGdBq27lvCYmKkaqDdxWLfMe3ovADGfGlSyiR-fN_EJrZGniTAmdH1XSjK8ralsctfjOLX2K0T7dJfxPqqga8dtSG2Lmns8Gk2ckcU6PQzUFieBqrtpkr5PPwnngew0Rnot2ik1y8m202u6pHTIquExlEYSlzS8vfoyPPt8fCf-Zrbu8vWkiY8Ogj17ommHMgkguZbmEyOdfLTXzhRko-a655_jJdCMjEtMxva-b78DnGlXu9d0o6vEmrw9n8ABu4lLsWnIbYPH0beXRRIkUE3si64Xhwkh1aO3L1HaIR3sfR0vOs3GV1OBzry')  

Please keep in mind that exact captcha implementation on a particular website depends on the website author. Our demo page shows just one, but very popular implemetation method.