Решение reCAPTCHA v3 и v3 Enterprise через API
reCAPTCHA v3 это невидимая версия Google reCAPTCHA. У неё нет ни чекбокса, ни картинок: скрипт на странице следит за поведением посетителя и ставит оценку от 0.0 до 1.0, где 1.0 означает «скорее всего человек». Сайт получает токен с этой оценкой и решает, пропускать ли запрос.
Кликать здесь не по чему, поэтому reCAPTCHA v3 решается токеном. Вы отправляете в API Cap.Guru sitekey и адрес страницы, получаете готовый токен и передаёте его сайту так же, как это сделал бы виджет. Корпоративная версия, reCAPTCHA v3 Enterprise, решается так же, с одним дополнительным параметром: подробнее в разделе reCAPTCHA v3 Enterprise ниже.
Посмотреть, как работает reCAPTCHA v3, можно на демо-странице reCAPTCHA.
Что нужно
Как найти параметры (нажмите, чтобы раскрыть)
Нужны два значения со страницы, где стоит reCAPTCHA v3.
Адрес страницы. Полный адрес страницы, где работает reCAPTCHA v3, например https://test.cap.guru/demo/recap.
Sitekey. Откройте страницу, нажмите F12 и найдите ключ в одном из мест:
- параметр
renderв ссылке на скрипт:https://www.google.com/recaptcha/api.js?render=6LdSQV8mAAAAAA8tgiox2isjB1H4QSr-pNBXajUT; - вызов вида
grecaptcha.execute('6LdSQV8mAAAAAA8tgiox2isjB1H4QSr-pNBXajUT', {action: 'submit'})в скриптах страницы; - параметр
kв адресе iframe reCAPTCHA (вкладка Network, запрос кrecaptcha/api2/anchor).
Action. В том же вызове grecaptcha.execute посмотрите значение action, например {action: 'verify'} или {action: 'login'}. Некоторые сайты проверяют, что токен выдан для нужного действия, поэтому передайте его в параметре action.

Берите значения с той страницы, где вы реально проходите проверку, иначе токен не пройдёт.
Отправка задачи
http://api.cap.guru/in.php
Необязательные параметры передаются только тогда, когда они нужны. Если параметр не используется, не передавайте его вовсе: ни пустым, ни со значением-заглушкой.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | Строка | Да | Ваш API-ключ. Его можно посмотреть в личном кабинете |
| method | Строка | Да | userrecaptcha: сообщает сервису, что вы решаете reCAPTCHA |
| googlekey | Строка | Да | Sitekey, который вы нашли на странице Например 6LdSQV8mAAAAAA8tgiox2isjB1H4QSr-pNBXajUT |
| pageurl | Строка | Да | Полный адрес страницы с reCAPTCHA v3 Например https://test.cap.guru/demo/recap |
| version | Строка | Да | v3: сообщает сервису, что это reCAPTCHA v3 |
| action | Строка | Нет | Название действия из вызова grecaptcha.execute на странице, например verify, login или submit. Передавайте, если сайт проверяет действие |
| enterprise | Число | Нет | 1: сайт использует reCAPTCHA v3 Enterprise. Для обычной reCAPTCHA v3 этот параметр не передавайте вовсе. Подробнее в разделе reCAPTCHA v3 Enterprise |
| softguru | Число | Нет | ID разработчика ПО. Разработчики, интегрировавшие своё ПО с нашим сервисом, получают 1% от стоимости каждого такого запроса |
| json | Число По умолчанию: 0 | Нет | 0: сервер вернёт ответ простым текстом 1: сервер вернёт ответ в формате JSON |
Пример запроса:
http://api.cap.guru/in.php?key=YOUR_APIKEY&method=userrecaptcha&version=v3&googlekey=6LdSQV8mAAAAAA8tgiox2isjB1H4QSr-pNBXajUT&pageurl=https://test.cap.guru/demo/recap
ИЛИ
Пример запроса и ответа
Пример запроса
POST http://api.cap.guru/in.php
Host: api.cap.guru
Content-Type: application/json{
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"googlekey": "6LdSQV8mAAAAAA8tgiox2isjB1H4QSr-pNBXajUT",
"pageurl": "https://test.cap.guru/demo/recap",
"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 v3 Enterprise
reCAPTCHA Enterprise это корпоративная версия reCAPTCHA для крупных сайтов. Для посетителя она выглядит так же, как обычная v3, но загружается и проверяется через другой сервис Google, поэтому обычный токен v3 на таком сайте не пройдёт.
Как её узнать. Откройте код страницы или вкладку Network. Сайт использует reCAPTCHA v3 Enterprise, если вы видите:
- скрипт
https://www.google.com/recaptcha/enterprise.js?render=SITEKEYвместоapi.js; - вызовы
grecaptcha.enterprise.execute(...)вместоgrecaptcha.execute(...); - запросы к
recaptcha/enterprise/anchorиrecaptcha/enterprise/reload.
Как решить. Передайте те же параметры, что для обычной v3, и добавьте enterprise=1. Этот параметр передаётся только для Enterprise: для обычной reCAPTCHA v3 его не указывайте вовсе. Сайты с Enterprise особенно часто проверяют действие, поэтому передайте и action.
http://api.cap.guru/in.php?key=YOUR_APIKEY&method=userrecaptcha&version=v3&enterprise=1&action=verify&googlekey=SITEKEY&pageurl=https://example.com/login
Пример запроса в JSON
{
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"version": "v3",
"enterprise": 1,
"action": "verify",
"googlekey": "SITEKEY",
"pageurl": "https://example.com/login",
"json": 1
}Токен используется так же, как обычный токен v3. На сайтах с Enterprise его обычно отправляют в запросе после grecaptcha.enterprise.execute, а не в поле формы g-recaptcha-response, поэтому посмотрите на вкладке Network, куда сайт его кладёт.
Как использовать токен
Токен передаётся сайту так же, как его передал бы скрипт reCAPTCHA. В зависимости от сайта это одно из трёх:
- скрытое поле
g-recaptcha-responseв форме; - поле или параметр в запросе, который сайт отправляет на свой сервер после
grecaptcha.execute; - функция callback, которую сайт передаёт reCAPTCHA.
Куда сайт кладёт токен, видно в скриптах страницы или на вкладке Network. Запрашивайте токен непосредственно перед отправкой: токен reCAPTCHA действует около двух минут и подходит для одной проверки.
Советы
- Сайт отклоняет токен. Проверьте, что sitekey и адрес взяты с одной и той же страницы, что токен использован в течение двух минут и что
actionсовпадает со значением изgrecaptcha.execute. - Сайт использует Enterprise. Если страница загружает
enterprise.js, добавьтеenterprise=1, иначе токен не пройдёт. - Невидимая reCAPTCHA v2 не то же самое, что v3. Если в адресе iframe есть
size=invisible, а в ссылке на скрипт нет параметраrender=, это невидимая reCAPTCHA v2. Решайте её как описано на странице reCAPTCHA v2.