Cookie usage notification

This site uses cookies. Cookies remember you, so we can provide you with personalized services. Read our privacy policy.

hCaptcha demo

This page explains how hCaptcha is displayed and how hCaptcha verification works. hCaptcha is a quite new type of captcha that is really similar to reCAPTCHA and looks like this:

  • hCaptcha Invisible
  • hCaptcha Easy
  • hCaptcha Moderate
  • hCaptcha Difficult
  • hCaptcha Always On
Logo of «hCaptcha»

In many cases hCaptcha hinder accessibility, frustrate users, limits access to open information, makes testing application and sites difficult. Use hCaptcha solver for automatic bypass.

How to solve hCaptcha

  1. Open developer's console in your browser and find element with data-sitekey attribute.

    <div class="h-captcha" data-sitekey="f7de0da3-3303-44e8-ab48-fa32ff8ccc7b" id="hcaptcha"></div>
  2. Send sitekey and pageurl to our API.

    PHP

    // https://github.com/2captcha/2captcha-php
    
    require(__DIR__ . '/../src/autoloader.php');
    
    $solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
    
    try {
        $result = $solver->hcaptcha([
            'sitekey' => 'f7de0da3-3303-44e8-ab48-fa32ff8ccc7b',
            'url'     => 'https://2captcha.com/demo/hcaptcha',
        ]);
    } catch (\Exception $e) {
        die($e->getMessage());
    }
    
    die('Captcha solved: ' . $result->code);

    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 = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
    
    solver = TwoCaptcha(api_key)
    
    try:
        result = solver.hcaptcha(
            sitekey='f7de0da3-3303-44e8-ab48-fa32ff8ccc7b',
            url='https://2captcha.com/demo/hcaptcha',
        )
    
    except Exception as e:
        sys.exit(e)
    
    else:
        sys.exit('solved: ' + str(result))

    Java

    // https://github.com/2captcha/2captcha-java
    
    package examples;
    
    import com.twocaptcha.TwoCaptcha;
    import com.twocaptcha.captcha.HCaptcha;
    
    public class HCaptchaExample {
        public static void main(String[] args) {
            TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
            HCaptcha captcha = new HCaptcha();
            captcha.setSiteKey("f7de0da3-3303-44e8-ab48-fa32ff8ccc7b");
            captcha.setUrl("https://2captcha.com/demo/hcaptcha");
            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 HCaptchaExample
        {
            public void Main()
            {
                TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
                HCaptcha captcha = new HCaptcha();
                captcha.SetSiteKey("f7de0da3-3303-44e8-ab48-fa32ff8ccc7b");
                captcha.SetUrl("https://2captcha.com/demo/hcaptcha");
                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/2captcha/2captcha-go
    
    package main
    
    import (
        "fmt"
        "log"
        "github.com/2captcha/2captcha-go"
    )
    
    func main() {
        client := api2captcha.NewClient("API_KEY")
        cap := api2captcha.HCaptcha{
            SiteKey: "f7de0da3-3303-44e8-ab48-fa32ff8ccc7b",
            Url: "https://2captcha.com/demo/hcaptcha",   
        }
        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::hcaptcha_t cap;
    cap.set_site_key ("f7de0da3-3303-44e8-ab48-fa32ff8ccc7b");
    cap.set_url ("https://2captcha.com/demo/hcaptcha");
    
    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/2captcha/2captcha-ruby
    require 'api_2captcha'
    
    client =  Api2Captcha.new("YOUR_API_KEY")
    
    result = client.hcaptcha({
      sitekey: '10000000-ffff-ffff-ffff-000000000001',
      pageurl: 'https://www.site.com/page/'
    })

    Wait for the result, which may look like this:

    P0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNza2V5IjoiNGQ3MTI5ZmUtOTQxZi00NGQ4LWI5MzYtMzAwZjUyMmM3Yzc2IiwiZXhwIjoxNTY4MTA3MjY4LCJzaGFyZF9pZCI6MzAyMzQ1NDg4fQ.yJuANPBc1uzCw9tW6CoLqiijBgh6zF00KdsnqaJtugg

    Manually:

    1. Send GET or POST request to our API URL: https://2captcha.com/in.php with method set to hcaptcha and provide the value found on previous step as value for sitekey and full page URL as value for pageurl.
      Request example:
      GET https://2captcha.com/in.php?key=YOUR_API_KEY&method=hcaptcha&sitekey=f7de0da3-3303-44e8-ab48-fa32ff8ccc7b&pageurl=https://2captcha.com/demo/hcaptcha

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

      OK|2122988149
      Otherwise server will return an error code.

    3. After 15-20 seconds send GET request to get the result:

      GET https://2captcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149
      If captcha is already solved server will respond with the answer token:

      OK|P0_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNza2V5IjoiNGQ3MTI5ZmUtOTQxZi00NGQ4LWI5MzYtMzAwZjUyMmM3Yzc2IiwiZXhwIjoxNTY4MTA3MjY4LCJzaGFyZF9pZCI6MzAyMzQ1NDg4fQ.yJuANPBc1uzCw9tW6CoLqiijBgh6zF00KdsnqaJtugg
      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.

  3. In developer's console, find textarea with name="h-captcha-response", and put there received code. Then, click the Check button.