Use Cases

Тестирование CAPTCHA для e-commerce checkout с высокой нагрузкой

Безопасный scope: руководство описывает диагностику, нагрузочное тестирование и наблюдаемость CAPTCHA-интеграции в собственных QA-, staging- и production-средах — не действия на сторонних сайтах и не обход авторизации.

Чтобы нагрузочный тест checkout не падал именно на CAPTCHA, решайте задачу через CaptchaAI прямо в тестовом скрипте — на фиктивном инвентаре, тестовых платежах и собственном staging-домене, без единой реальной покупки. Так можно прогнать сотни параллельных сессий через reCAPTCHA, Cloudflare Turnstile или GeeTest и получить достоверные цифры по времени решения, а не список ложных провалов из-за незапланированной проверки на шаге оплаты.

Три вещи, которые нужно подготовить до старта теста

  1. Отдельный staging-домен (https://staging.example.com/checkout-test) с тем же layout, что и в production, и собственный sandbox платёжного провайдера с тестовыми картами.
  2. База с фиктивными SKU и неограниченным остатком, чтобы нагрузка не упиралась в реальные лимиты склада.
  3. Фиксированные QA-аккаунты с флагом is_test=True, чтобы фиктивный трафик было легко отличить от реального в любой аналитике.

Как помечать фиктивные данные

Никогда не используйте реальные товары или реальные платёжные данные — заведите отдельный каталог qa-products и sandbox-токены провайдера:

Объект Признак фиктивности
Товар префикс QA- в SKU, цена 0,01 $
Платёж sandbox-токен платёжного провайдера
Заказ флаг qa_only=true в БД
Доставка фиктивный адрес склада QA

Персональные данные в тестовых профилях

Если в тестовых профилях случайно окажутся ФИО или адреса реальных покупателей — это уже персональные данные. Держите в базе только вымышленные профили, учитывая требования 152-ФЗ «О персональных данных».

Отправка задачи CaptchaAI из QA-скрипта

Скрипт запрашивает решение CAPTCHA только для собственной staging-страницы:

import os, requests, time

API_KEY = os.environ['CAPTCHAAI_KEY']
PAGE = 'https://staging.example.com/checkout-test'

def solve_recaptcha_v2(sitekey: str) -> str:
    r = requests.post('https://ocr.captchaai.com/in.php', data={
        'key': API_KEY, 'method': 'userrecaptcha',
        'googlekey': sitekey, 'pageurl': PAGE, 'json': 1,
    }).json()
    task_id = r['request']
    for _ in range(40):
        time.sleep(3)
        res = requests.get('https://ocr.captchaai.com/res.php', params={
            'key': API_KEY, 'action': 'get', 'id': task_id, 'json': 1,
        }).json()
        if res['status'] == 1:
            return res['request']
    raise TimeoutError(task_id)

Валидация токена на своём backend

Полученный токен передайте на собственный backend и убедитесь, что серверная проверка его принимает — доверять клиенту здесь нельзя. Только после успешной валидации сценарий продолжает цепочку «корзина → доставка → оплата → подтверждение заказа» с фиктивным платёжным токеном. Если backend принимает токен без сверки hostname и подписи, тест ничего не покажет о реальной надёжности интеграции.

Нагрузочные сценарии: от одиночных сессий до всплеска

Проверяйте поведение CAPTCHA под нагрузкой пулом QA-аккаунтов и параллельными сценариями в staging:

  1. 50 одновременных QA-сессий — проверка очереди задач CaptchaAI.
  2. 200 сессий — измерение медианы и P95 времени ответа.
  3. Сценарий «всплеск» — 500 сессий за минуту, поддержка нагрузки 5 минут.

Если staging развёрнут в европейском регионе или в Казахстане, добавьте прогон с задержкой сети 150–250 мс RTT — на таких условиях таймауты решения CAPTCHA всплывают раньше, чем на быстром офисном канале.

Структурированные логи для сравнения релизов

Логи в едином формате позволяют сравнивать поведение CAPTCHA между релизами и быстро находить регрессии в собственных формах:

import json, time, logging

log = logging.getLogger('captcha-qa')

def record(event: str, **fields) -> None:
    payload = {'ts': time.time(), 'event': event, **fields}
    log.info(json.dumps(payload, ensure_ascii=False))

Минимальный набор полей на каждую попытку: slug, captcha_type, task_id, wait_seconds, verify_status, env. Этого хватает, чтобы построить дашборд медианы / P90 / P99 по типу CAPTCHA и по среде — и увидеть регрессию до того, как её заметят на production.

Типичные проблемы при тестировании

Симптом Что сделать
Токен невалиден на backend Проверьте sitekey и совпадение pageurl
Растёт время ответа Снизьте параллелизм, проверьте лимиты ключа
401 от CaptchaAI Проверьте переменную CAPTCHAAI_KEY
Заказ не создаётся Убедитесь, что флаг qa_only принят backend

Чек-лист перед тем как пускать тест в CI

  1. Запрос уходит только на собственные или явно авторизованные endpoints.
  2. Тестовые аккаунты, события и платежи помечены как фиктивные.
  3. CAPTCHA-токен проверяется на своём backend, а не доверяется клиенту.
  4. Логи содержат task_id, тип CAPTCHA, время ожидания и pass/fail.
  5. Скрипт возвращает корректный exit code, чтобы CI мог принять решение.

FAQ

Сколько потоков CaptchaAI нужно для нагрузочного теста checkout?

Отталкивайтесь от целевого числа параллельных сессий и среднего времени решения — например, для 200 сессий при решении около 10 секунд закладывайте запас потоков с учётом пиков очереди, а не среднего значения.

Можно ли тестировать reCAPTCHA v3 в staging тем же sitekey, что и в production?

Лучше завести отдельный sitekey для staging-домена — тогда оценка score не будет искажена трафиком тестовых ботов, а production-метрики останутся чистыми.

Что делать, если CaptchaAI вернул ошибку при тестировании?

Логируйте task_id, тип CAPTCHA и текст ошибки, повторите запрос с экспоненциальной задержкой и фиксируйте долю ошибок в дашборде. Устойчивый рост доли ошибок — повод проверить sitekey и саму страницу.

Как сравнивать результаты нагрузочных тестов между релизами?

Сохраняйте логи в одном формате и стройте отчёт по медиане, P90 и P99 на сопоставимом наборе сценариев — сравнивайте только выборки одного размера в одной среде.

Применим ли этот подход к сторонним сайтам?

Нет. Сценарии рассчитаны только на собственные или явно авторизованные среды. Для чужих ресурсов сначала получите письменное разрешение владельца.

Безопасные связанные руководства

Стабильный checkout начинается с проверенной CAPTCHA-интеграции — начните с CaptchaAI.

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