Skip to content

Решение 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.

Поиск sitekey reCAPTCHA в инструментах разработчика

Берите значения с той страницы, где вы реально проходите проверку, иначе токен не пройдёт.

Отправка задачи ​

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

ИЛИ

Пример запроса и ответа

Пример запроса ​

text
POST http://api.cap.guru/in.php
Host: api.cap.guru
Content-Type: application/json
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"}. Если номер задачи не пришёл, посмотрите полный список возможных ошибок.

Пример ответа ​

json
{
  "status": 1,
  "request": "65787087"
}

Получение ответа ​

http://api.cap.guru/res.php

ПараметрТипОбязателенОписание
keyСтрокаДаКлюч можно посмотреть тут
actionСтрокаДаget — получить ответ
idЧислоДаID капчи, полученный от in.php
jsonЧисло
По умолчанию: 0
Нет0 — сервер вернёт ответ в виде простого текста
1 — сервер вернёт ответ в формате JSON
Пример запроса/ответа

Пример запроса ​

text
POST  http://api.cap.guru/res.php
Host: api.cap.guru
Content-Type: application/json
json
{
  "key": "YOUR_API_KEY",
  "action": "get",
  "id": "XXXXXXXXXXXXXXXXXX", // for example 65787087
  "json": 1
}

После отправки задания нам, вы должны получить в ответ 'OK|03AFY_a8W0B6yEBwfbmzp6OEUr...' или {"status":1,"request":"03AFY_a8W0B6yEBwfbmzp6OEUr..."} в случае успешного выполнения запроса. Пожалуйста ознакомтесь с полным списоком возможных ошибок в случае если вы не получили ответ.

Пример ответа ​

json
{
 "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
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.