Comparisons

reCAPTCHA Enterprise и Standard — в чём разница

«Сайт переехал на Enterprise — придётся переписывать интеграцию» — самое живучее заблуждение вокруг reCAPTCHA. Переписывать нечего: метод остаётся userrecaptcha, токен уходит в то же поле g-recaptcha-response, а в запросе появляется ровно один флаг — enterprise=1.

Enterprise — не более сложная проверка, а другая консоль администрирования и другой формат вердикта на стороне сайта.

  • Для интеграции: один параметр и новый sitekey.
  • Для владельца сайта: коды причин, пороги под каждое действие, проекты в Google Cloud.
  • Для модели оценки: ничего — диапазон 0,0–1,0 общий для обеих версий.

Что меняется в коде при переходе на reCAPTCHA Enterprise

  • Формат токена — прежний: поле g-recaptcha-response.
  • Метод CaptchaAI — прежний: userrecaptcha для обеих версий.
  • Параметры запроса — добавляется enterprise=1.
  • Sitekey — нужен новый: ключи Enterprise создаются в Google Cloud Console.
  • Версии виджета — флаг работает и для v2, и для v3.

Если интеграция уже настроена под обычную reCAPTCHA v2, переход на Enterprise — это одна строка в параметрах. Схема «задача в in.php → опрос res.php → токен в форму» не меняется.


Ответ бэкенда: чем вердикт Enterprise отличается от Standard

Обе версии возвращают оценку 0,0–1,0, но Enterprise отдаёт её в другой структуре и с контекстом.

Standard: плоский ответ

{
  "success": true,
  "score": 0.7,
  "action": "login",
  "challenge_ts": "2024-01-15T12:00:00Z",
  "hostname": "example.com"
}

Enterprise: вердикт с объяснением

{
  "tokenProperties": {
    "valid": true,
    "action": "login",
    "createTime": "2024-01-15T12:00:00Z",
    "hostname": "example.com"
  },
  "riskAnalysis": {
    "score": 0.7,
    "reasons": ["LOW_CONFIDENCE_SCORE"],
    "extendedVerdictReasons": []
  },
  "event": {
    "token": "...",
    "siteKey": "...",
    "expectedAction": "login"
  }
}

Три блока делят ответственность так:

  • tokenProperties — валидность токена, домен и действие, под которое он выпущен.
  • riskAnalysis — оценка и массив reasons, который объясняет, почему она такая.
  • event — что сайт отправил на проверку: sitekey и ожидаемое действие.

Благодаря reasons владелец сайта может пропустить пользователя с оценкой 0,3 при обычном входе, но запросить второй фактор при смене платёжных данных.

Для вашей интеграции это ничего не меняет: вы отдаёте токен, а интерпретирует его чужой бэкенд.


Как определить reCAPTCHA Enterprise на странице за минуту

Enterprise опознаётся по подключаемому скрипту и по объекту в консоли.

Признак Standard Enterprise
URL скрипта google.com/recaptcha/api.js google.com/recaptcha/enterprise.js
Функция выполнения grecaptcha.execute() grecaptcha.enterprise.execute()
API проверки на бэкенде конечная точка siteverify recaptchaenterprise.googleapis.com
Где управляется админ-консоль reCAPTCHA Google Cloud Console

Быстрее всего — найти подключение скрипта в исходном коде страницы:

// Standard
<script src="https://www.google.com/recaptcha/api.js?render=SITEKEY"></script>

// Enterprise
<script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
  1. Откройте исходный код и найдите строку с recaptcha/.
  2. api.js — Standard, enterprise.js — Enterprise; там же, в параметре render, лежит нужный sitekey.
  3. Или введите в консоли grecaptcha.enterprise: на Enterprise-странице объект определён, на обычной — undefined.

Версию нельзя определить по самому токену: и Standard, и Enterprise возвращают строку одного вида.


Четыре варианта запроса к CaptchaAI: v2 и v3, Standard и Enterprise

Метод один и тот же — userrecaptcha. Отличается только набор параметров.

reCAPTCHA v3, Standard

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "userrecaptcha", "version": "v3",
    "googlekey": SITEKEY, "action": "login", "pageurl": URL, "json": 1
})

reCAPTCHA v3, Enterprise

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "userrecaptcha", "version": "v3",
    "enterprise": 1,  # Only difference
    "googlekey": SITEKEY, "action": "login", "pageurl": URL, "json": 1
})

reCAPTCHA v2, Standard

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "userrecaptcha",
    "googlekey": SITEKEY, "pageurl": URL, "json": 1
})

reCAPTCHA v2, Enterprise

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY, "method": "userrecaptcha",
    "enterprise": 1,
    "googlekey": SITEKEY, "pageurl": URL, "json": 1
})

Результат во всех четырёх случаях забирается опросом res.php и подставляется в g-recaptcha-response. По времени версии сопоставимы: ориентир для reCAPTCHA v3 Enterprise — менее 4 с, для v2 Enterprise — менее 60 с, и это верхняя граница, а не среднее.

Отсюда правило: тайм-аут в тестах задавайте исходя из типа проверки, а не из того, Enterprise на странице или нет.


Сценарий: staging на Standard, продакшен на Enterprise

Ситуация, знакомая командам в Москве, Минске и Алматы: стенды живут в разных облачных проектах. Вы автоматизируете регрессию формы входа своего SaaS: на staging — reCAPTCHA v3 Standard, а в продакшене включили Enterprise ради Account Defender и правил WAF.

Ночной прогон начинает падать — и падает не потому, что Enterprise «жёстче»: в продакшене другой sitekey, а в запросе не хватает флага.

Вывод простой: sitekey и признак Enterprise держите в конфигурации окружения рядом с базовым URL, а не в коде теста — тогда один сценарий отработает на обоих стендах без ветвлений.

Стоимость на стороне CaptchaAI от версии проверки не зависит: тарификация идёт по числу одновременных потоков. Ночному набору тестов хватает плана BASIC ($15/мес, 5 потоков); для прогона сразу по нескольким окружениям ближе ADVANCE ($90/мес, 50 потоков). Командам, которые считают выручку в одной валюте, а инфраструктуру оплачивают в другой, фиксированный платёж в USD планировать проще, чем оплату за каждое решение.


Что Enterprise даёт владельцу сайта

Эта часть на ваш код не влияет, но объясняет, с чем вы имеете дело на чужом сайте.

Возможность Standard Enterprise
Цена у Google бесплатно (до 1 млн оценок в месяц) $1 за 1000 оценок (объём 1 000–100 000 в месяц), выше — многоуровневый тариф
Диапазон оценки 0,0–1,0 0,0–1,0
Коды причин нет да (AUTOMATION, UNEXPECTED_ENVIRONMENT и другие)
Настраиваемые пороги нет, порог задаётся в вашем коде да, отдельно для каждого действия в консоли
Управление проектами нет да, через Google Cloud Console
Обнаружение утечки пароля нет да
Account Defender нет да
Многофакторная аутентификация нет да, через интеграцию с WAF
Поддержка v2 да да
Поддержка v3 да да

Ни одна строка таблицы не описывает «более сложную» проверку: Enterprise — административная надстройка поверх той же модели оценки.


Зачем сайты включают Enterprise

Мотив почти никогда не в самой капче, а в том, что вокруг неё:

  • Связка с WAF. Вердикт передаётся в Cloudflare или Akamai и участвует в правилах фильтрации.
  • Аналитика. Панель показывает динамику риска, а не только итоговый score.
  • Свои правила. Разные пороги для входа, регистрации и оплаты вместо константы в коде.
  • Комплаенс. Корпоративный SLA и выбор региона хранения данных.
  • Защита аккаунтов. Обнаружение утечки пароля и признаков захвата учётной записи.

Если при тестировании вы попутно собираете данные, ограничьтесь тем, что вправе обрабатывать: для команд в РФ ориентиром служит 152-ФЗ «О персональных данных», для кросс-граничных проектов — привычная GDPR-осмотрительность.


Частые вопросы

Что нужно изменить в коде, если сайт перешёл на Enterprise?

Ровно две вещи:

  • добавить enterprise=1 в параметры запроса;
  • подставить новый sitekey из подключения enterprise.js.

Метод, конечная точка in.php, опрос res.php и поле g-recaptcha-response остаются прежними.

Нужно ли указывать version=v3 вместе с enterprise=1?

Да, если на странице reCAPTCHA v3: version и action описывают виджет, а enterprise — только тип ключа. Для v2 Enterprise достаточно одного флага, version там не нужен.

Токен получен, но сайт его не принимает — что проверить?

Сначала action: если он не совпадает с expectedAction, токен валиден, но запрос отклоняется. Дальше — домен из pageurl и время: токен reCAPTCHA живёт около двух минут, подставлять его нужно сразу.

Влияет ли Enterprise на score в reCAPTCHA v3?

Модель оценки та же, диапазон 0,0–1,0 тоже. Разница в том, что владелец сайта задаёт свои пороги под каждое действие: один и тот же score на входе и на оплате обрабатывается по-разному.

Сколько потоков заложить на ночной прогон тестов?

Поток — это одна задача в работе, а не одна задача в сутки. Для 200 сценариев с reCAPTCHA v2 Enterprise худшая оценка — 200 × 60 с; на 5 потоках BASIC это около 40 минут, на практике быстрее: 60 с — потолок, а не среднее. Верх линейки — VIP-3 ($7,500/мес, 5000 потоков).


Смежные материалы

Комментарии для этой статьи отключены.