Trong nhiều trường hợp, hCaptcha cản trở khả năng truy cập, làm người dùng thất vọng, hạn chế quyền truy cập vào thông tin mở, gây khó khăn cho việc thử nghiệm ứng dụng và trang web. Sử dụng bộ giải hCaptcha để tự động bỏ qua.
bản trình diễn hCaptcha
Trang này giải thích cách hiển thị hCaptcha và cách hoạt động của quá trình xác minh hCaptcha. hCaptcha là một loại captcha khá mới thực sự giống với reCAPTCHA và trông giống như thế nay:
How to solve hCaptcha
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>
Send
sitekey
andpageurl
to our API.With SDK (recommended):
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") captcha := api2captcha.HCaptcha{ SiteKey: "f7de0da3-3303-44e8-ab48-fa32ff8ccc7b", Url: "https://2captcha.com/demo/hcaptcha", } code, err := client.Solve(captcha.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:
Send GET or POST request to our API URL:
https://2captcha.com/in.php
withmethod
set tohcaptcha
and provide the value found on previous step as value for sitekey and full page URL as value forpageurl
.
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
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://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 returnCAPCHA_NOT_READY
result. Repeat your request in 5 seconds. If something went wrong server will return an error code.
In developer's console, find
textarea
withname="h-captcha-response"
, and put there received code. Then, click theCheck
button.