많은 경우에 reCAPTCHA V3은 접근성을 방해하고, 사용자를 좌절시키고, 공개 정보에 대한 접근을 제한하고, 애플리케이션 및 사이트 테스트를 어렵게 만듭니다. 자동 우회를 위해서는 reCAPTCHA V3 솔버를 사용하세요.
reCAPTCHA V3 데모
이 페이지에서는 reCAPTCHA V3이 표시되는 방식과 reCAPTCHA V3 확인이 작동하는 방식을 설명합니다. reCAPTCHA V3는 구글의 가장 최신 버전 캡차입니다. 크게 어려운 점이 없으므로 사용자 상호 작용이 필요하지 않습니다. 대신에 이 캡차는 "인간성" 등급인 점수를 사용하고 있습니다.
How to solve 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
andaction
values 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->recaptcha([ 'sitekey' => '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu', 'url' => 'https://2captcha.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/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.recaptcha( sitekey='6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu', url='https://2captcha.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/2captcha/2captcha-java package examples; import com.twocaptcha.TwoCaptcha; import com.twocaptcha.captcha.reCAPTCHA; public class reCAPTCHAV2Example { public static void main(String[] args) { TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY"); ReCaptcha captcha = new ReCaptcha(); captcha.setSiteKey("6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu"); captcha.setUrl("https://2captcha.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/2captcha/2captcha-csharp using System; using System.Linq; using TwoCaptcha.Captcha; namespace TwoCaptcha.Examples { public class reCAPTCHAV2Example { public void Main() { TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY"); ReCaptcha captcha = new ReCaptcha(); captcha.SetSiteKey("6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu"); captcha.SetUrl("https://2captcha.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/2captcha/2captcha-go package main import ( "fmt" "log" "github.com/2captcha/2captcha-go" ) func main() { client := api2captcha.NewClient("API_KEY") captcha := api2captcha.ReCaptcha{ SiteKey: "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu", Url: "https://2captcha.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/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 ("6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu"); cap.set_url ("https://2captcha.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/2captcha/2captcha-ruby require 'api_2captcha' client = Api2Captcha.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' })
Wait for the result, which may look like this:
03AGdBq27lvCYmKkaqDdxWLfMe3ovADGfGlSyiR-fN_EJrZGniTAmdH1XSjK8ralsctfjOLX2K0T7dJfxPqqga8dtSG2Lmns8Gk2ckcU6PQzUFieBqrtpkr5PPwnngew0Rnot2ik1y8m202u6pHTIquExlEYSlzS8vfoyPPt8fCf-Zrbu8vWkiY8Ogj17ommHMgkguZbmEyOdfLTXzhRko-a655_jJdCMjEtMxva-b78DnGlXu9d0o6vEmrw9n8ABu4lLsWnIbYPH0beXRRIkUE3si64Xhwkh1aO3L1HaIR3sfR0vOs3GV1OBzry
Manually:
Send GET or POST request to our API URL:
https://2captcha.com/in.php
withmethod
set touserrecaptcha
,version
set tov3
and provide the value found on previous step as value for googlekey and full page URL as value forpageurl
.
Request example:
GET https://2captcha.com/in.php?key=YOUR_API_KEY&method=userrecaptcha&version=v3&min_score=0.9&action=demo_action&googlekey=6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu&pageurl=http://2captcha.com/demo/recaptcha-v3
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 token:OK|03AGdBq27lvCYmKkaqDdxWLfMe3ovADGfGlSyiR-fN_EJrZGniTAmdH1XSjK8ralsctfjOLX2K0T7dJfxPqqga8dtSG2Lmns8Gk2ckcU6PQzUFieBqrtpkr5PPwnngew0Rnot2ik1y8m202u6pHTIquExlEYSlzS8vfoyPPt8fCf-Zrbu8vWkiY8Ogj17ommHMgkguZbmEyOdfLTXzhRko-a655_jJdCMjEtMxva-b78DnGlXu9d0o6vEmrw9n8ABu4lLsWnIbYPH0beXRRIkUE3si64Xhwkh1aO3L1HaIR3sfR0vOs3GV1OBzry
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.
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.