Безопасный scope: руководство описывает диагностику, нагрузочное тестирование и наблюдаемость CAPTCHA-интеграции в собственных QA-, staging- и production-средах — не действия на сторонних сайтах и не обход авторизации.
Чтобы нагрузочный тест checkout не падал именно на CAPTCHA, решайте задачу через CaptchaAI прямо в тестовом скрипте — на фиктивном инвентаре, тестовых платежах и собственном staging-домене, без единой реальной покупки. Так можно прогнать сотни параллельных сессий через reCAPTCHA, Cloudflare Turnstile или GeeTest и получить достоверные цифры по времени решения, а не список ложных провалов из-за незапланированной проверки на шаге оплаты.
Три вещи, которые нужно подготовить до старта теста
- Отдельный staging-домен (
https://staging.example.com/checkout-test) с тем же layout, что и в production, и собственный sandbox платёжного провайдера с тестовыми картами. - База с фиктивными SKU и неограниченным остатком, чтобы нагрузка не упиралась в реальные лимиты склада.
- Фиксированные 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:
- 50 одновременных QA-сессий — проверка очереди задач CaptchaAI.
- 200 сессий — измерение медианы и P95 времени ответа.
- Сценарий «всплеск» — 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
- Запрос уходит только на собственные или явно авторизованные endpoints.
- Тестовые аккаунты, события и платежи помечены как фиктивные.
- CAPTCHA-токен проверяется на своём backend, а не доверяется клиенту.
- Логи содержат
task_id, тип CAPTCHA, время ожидания и pass/fail. - Скрипт возвращает корректный exit code, чтобы CI мог принять решение.
FAQ
Сколько потоков CaptchaAI нужно для нагрузочного теста checkout?
Отталкивайтесь от целевого числа параллельных сессий и среднего времени решения — например, для 200 сессий при решении около 10 секунд закладывайте запас потоков с учётом пиков очереди, а не среднего значения.
Можно ли тестировать reCAPTCHA v3 в staging тем же sitekey, что и в production?
Лучше завести отдельный sitekey для staging-домена — тогда оценка score не будет искажена трафиком тестовых ботов, а production-метрики останутся чистыми.
Что делать, если CaptchaAI вернул ошибку при тестировании?
Логируйте task_id, тип CAPTCHA и текст ошибки, повторите запрос с экспоненциальной задержкой и фиксируйте долю ошибок в дашборде. Устойчивый рост доли ошибок — повод проверить sitekey и саму страницу.
Как сравнивать результаты нагрузочных тестов между релизами?
Сохраняйте логи в одном формате и стройте отчёт по медиане, P90 и P99 на сопоставимом наборе сценариев — сравнивайте только выборки одного размера в одной среде.
Применим ли этот подход к сторонним сайтам?
Нет. Сценарии рассчитаны только на собственные или явно авторизованные среды. Для чужих ресурсов сначала получите письменное разрешение владельца.
Безопасные связанные руководства
- Быстрый старт CaptchaAI
- QA-тестирование CAPTCHA в авторизованных средах
- Тестирование CAPTCHA API на собственных формах
- Отладка: браузерный тест падает, а API проходит
- reCAPTCHA v2 через API
- Cloudflare Turnstile через API
- GeeTest v3 через API
Стабильный checkout начинается с проверенной CAPTCHA-интеграции — начните с CaptchaAI.