Решение reCAPTCHA v2 и невидимой reCAPTCHA v2
reCAPTCHA v2 это самая распространённая версия Google reCAPTCHA: чекбокс «Я не робот» и, если проверка сомневается, задание с выбором картинок. Выглядит она так:

У reCAPTCHA v2 есть невидимый вариант (Invisible): чекбокса нет, проверка запускается при отправке формы или нажатии кнопки, а картинки появляются, только если нужно. Пример:

Обычная и невидимая reCAPTCHA v2 решаются одинаково и с одними и теми же параметрами. Вы отправляете в API Cap.Guru sitekey и адрес страницы, получаете готовый токен g-recaptcha-response и передаёте его сайту.
Что нужно
Как найти параметры (нажмите, чтобы раскрыть)
Пример страницы с reCAPTCHA v2: https://www.google.com/recaptcha/api2/demo
Нужны два значения.
Адрес страницы. Полный адрес страницы, где стоит reCAPTCHA, например https://www.google.com/recaptcha/api2/demo.
Sitekey. Откройте страницу, нажмите F12 и найдите ключ в одном из мест:
- атрибут
data-sitekeyу элемента с классомg-recaptcha; - параметр
kв адресе iframe reCAPTCHA (вкладка Network, запрос кrecaptcha/api2/anchor).

Пример адреса iframe, ключ стоит после k=:
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&co=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbTo0NDM.&hl=ru&v=qpy2aGtSgsYPZzCoYWjcaBCo&size=normal&cb=b10i8fn9469d
Для этой страницы нужны:
- адрес страницы:
https://www.google.com/recaptcha/api2/demo - sitekey:
6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
Как отличить невидимую v2. У невидимой reCAPTCHA v2 в адресе iframe стоит size=invisible, а у обычной size=normal. Если же в ссылке на скрипт есть параметр render=, это reCAPTCHA v3, её решение описано на странице reCAPTCHA v3.
Отправка задачи
http://api.cap.guru/in.php
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | Строка | Да | Ваш API-ключ. Его можно посмотреть в личном кабинете |
| method | Строка | Да | userrecaptcha: сообщает сервису, что вы решаете reCAPTCHA v2 |
| googlekey | Строка | Да | Sitekey, который вы нашли на странице Например 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ- |
| pageurl | Строка | Да | Полный адрес страницы с reCAPTCHA v2 Например https://www.google.com/recaptcha/api2/demo |
| softguru | Число | Нет | ID разработчика ПО. Разработчики, интегрировавшие своё ПО с нашим сервисом, получают 1% от стоимости каждого такого запроса |
| json | Число По умолчанию: 0 | Нет | 0: сервер вернёт ответ простым текстом 1: сервер вернёт ответ в формате JSON |
Пример запроса:
http://api.cap.guru/in.php?key=YOUR_APIKEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://www.google.com/recaptcha/api2/demo
ИЛИ
Пример запроса и ответа
Пример запроса
POST http://api.cap.guru/in.php
Host: api.cap.guru
Content-Type: application/json{
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"pageurl": "https://www.google.com/recaptcha/api2/demo",
"json": 1
}В случае успеха вы получите OK|65787087 или {"status":1,"request":"65787087"}. Если номер задачи не пришёл, посмотрите полный список возможных ошибок.
Пример ответа
{
"status": 1,
"request": "65787087"
}Получение ответа
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | Строка | Да | Ключ можно посмотреть тут |
| action | Строка | Да | get — получить ответ |
| id | Число | Да | ID капчи, полученный от in.php |
| json | Число По умолчанию: 0 | Нет | 0 — сервер вернёт ответ в виде простого текста 1 — сервер вернёт ответ в формате JSON |
Пример запроса/ответа
Пример запроса
POST http://api.cap.guru/res.php
Host: api.cap.guru
Content-Type: application/json{
"key": "YOUR_API_KEY",
"action": "get",
"id": "XXXXXXXXXXXXXXXXXX", // for example 65787087
"json": 1
}После отправки задания нам, вы должны получить в ответ 'OK|03AFY_a8W0B6yEBwfbmzp6OEUr...' или {"status":1,"request":"03AFY_a8W0B6yEBwfbmzp6OEUr..."} в случае успешного выполнения запроса. Пожалуйста ознакомтесь с полным списоком возможных ошибок в случае если вы не получили ответ.
Пример ответа
{
"status":1,
"request":"03AFY_a8W0B6yEBwfbmzp6OEUr4GYgdREy1DAFvvtyI6FUzf5qY_738XQ9lIFB7huVK9qia1f9z1GyGWRW3HVEzIGU5JrR-DY2xAkVvdH23lbpBqFAvH79Rr4Cs5dsxENk_zoTa1jn70ORvBVfBHA_Fb-s_kqQEpmaxSIwf0fe8FGJjhsBoygXnvrmCnBPTf5ua4LoYSi4f12XcZdyf5dBRYPq4pHBqk5Ic2cj8InwX9ima-v9UKA64ugnIiUNFOB_BCHJ1tieaB-td4_B4MC8gBCzPQwwO5I3IDDaT17JR3uIBKfc70w-2mtDnfPznyT4dHZapWtZizLkGs2BSUsfM4nR9OtjshuYB8lwJkSfz3ynaBYOCE7SBbtVHCsjGgO7YtSI-BArHxUcPQdFILmtnSCvPV5IWEF_NxurJ3QlUMkaNvC6kHCphZZoJXpt8Q5f-Uyi0-bhGd4wjtqRFglyzpn8lEmqkxF2ydlQO1Ketclutd-w5wuuxoDDHJE7d5msHPjXYtVvuFh8A2nyAU4i2I5KfcmdMd3F2g"
}Как использовать токен
Обычная reCAPTCHA v2. Вставьте токен в скрытое поле g-recaptcha-response формы и отправьте форму. В браузере это делается скриптом, например в Selenium или Playwright:
document.querySelector('[name="g-recaptcha-response"]').value = token;Невидимая reCAPTCHA v2. Обычно сайт после проверки вызывает свою функцию callback и в ней отправляет форму. Найдите имя функции в атрибуте data-callback у элемента g-recaptcha или в вызове grecaptcha.render и вызовите её с токеном, либо подставьте токен в поле g-recaptcha-response и отправьте форму сами.
Запрашивайте токен непосредственно перед отправкой: токен reCAPTCHA действует около двух минут и подходит для одной проверки.
Советы
- Сайт отклоняет токен. Проверьте, что sitekey и адрес взяты с одной и той же страницы и что токен использован в течение двух минут.
- Решение кликами. Если вы работаете в браузере, reCAPTCHA v2 можно решать не токеном, а кликами по картинкам. Это описано на странице reCAPTCHA (клики).