Демо reCAPTCHA V2
Классическая капча с флажком "Я не робот". Отображается через <div class="g-recaptcha" data-sitekey=></div>. Пользователь ставит галочку, после чего Google отображает задание. После успешной верификации токен сохраняется в скрытом поле g-recaptcha-response, которое отправляется на сервер и проверяется через Google API.
reCAPTCHA v2 часто ломает автоматические сценарии — тесты и CI. Решение: интегрировать solver по API для автоматического обхода.
Как обходить reCAPTCHA V2
Откройте консоль разработчика в браузере и найдите элемент с атрибутом data-sitekey.
Отправьте sitekey и pageurl на наш API.
Используя SDK (рекомендовано):
PHP
// https://github.com/solvercaptcha/solvecaptcha-php require(__DIR__ . '/../src/autoloader.php'); $solver = new \SolveCaptcha\SolveCaptcha('YOUR_API_KEY'); try { $result = $solver->recaptcha([ 'sitekey' => '6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u', 'url' => 'https://solvecaptcha.com/demo/recaptcha-v2', ]); } 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='6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u', url='https://solvecaptcha.com/demo/recaptcha-v2') 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 reCAPTCHAV2Example { public static void main(String[] args) { SolveCaptcha solver = new SolveCaptcha("YOUR_API_KEY"); ReCaptcha captcha = new ReCaptcha(); captcha.setSiteKey("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"); captcha.setUrl("https://solvecaptcha.com/demo/recaptcha-v2"); 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 reCAPTCHAV2Example { public void Main() { SolveCaptcha solver = new SolveCaptcha("YOUR_API_KEY"); ReCaptcha captcha = new ReCaptcha(); captcha.SetSiteKey("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"); captcha.SetUrl("https://solvecaptcha.com/demo/recaptcha-v2"); 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: "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u", Url: "https://solvecaptcha.com/demo/recaptcha-v2", } code, err := client.Solve(captcha.ToRequest()) if err != nil { log.Fatal(err); } fmt.Println("code "+code) }
C++
// https://github.com/solvercaptcha/solvecaptcha-cpp #include #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 ("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"); cap.set_url ("https://solvecaptcha.com/demo/recaptcha-v2"); 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_v2({ googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-', pageurl: 'https://mysite.com/page/with/recaptcha_v2' })
Вручную:
Отправьте GET или POST запрос на наш API URL: https://solvecaptcha.com/in.php с параметром method=userrecaptcha, а также с параметрами googlekey и 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
Если вы отправили корректный запрос, сервер вернёт ID вашей капчи:
OK|2122988149
В противном случае сервер вернет ошибку. Через 15-20 секунд отправьте GET запрос чтобы получить результат:
GET https://solvecaptcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149
Если ваша капча уже решена, сервер вернёт ответ на неё:
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
Если ваша капча ещё не решена, сервер вернёт CAPCHA_NOT_READY. В таком случае повторите ваш запрос через 5 секунд. Если что-то пошло не так, сервер вернёт ошибку.
В консоли разработчика найдите textarea с id="g-recaptcha-response", и вставьте туда полученный код. Потом нажмите "Проверить".