Безопасный scope: Это руководство применимо только к собственным или явно авторизованным QA-, staging- и production-средам. Описаны сценарии диагностики, тестирования и наблюдаемости вашей собственной CAPTCHA-интеграции — не для сторонних сайтов и не для несанкционированных workflow.
CAPTCHA на странице оформления заказа — частая причина непрохождения сквозных тестов в e-commerce. Когда нагрузка вырастает, QA должен убедиться, что reCAPTCHA, Cloudflare Turnstile или GeeTest корректно срабатывают на собственной staging-витрине, а заказ доходит до завершения с фиктивным платежом — без обращения к сторонним магазинам и без реальных покупок.
QA-архитектура checkout в staging
Соберите изолированную staging-копию вашего checkout, чтобы тесты не влияли на production:
- 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 |
Отправка задачи 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)
Проверка токена на собственном QA endpoint
Полученный токен передайте на собственный backend и убедитесь, что серверная валидация подтверждает его. Только после успешной валидации тест продолжает шаги «корзина → доставка → оплата → подтверждение заказа» с фиктивным платёжным токеном.
Сценарии нагрузки
Для проверки поведения CAPTCHA при высокой нагрузке используйте пул QA-аккаунтов и запускайте параллельные сценарии в staging:
- 50 одновременных QA-сессий — проверка очереди задач CaptchaAI;
- 200 сессий — измерение медианы и P95 времени ответа;
- сценарий «всплеск» — 500 сессий за минуту в течение 5 минут.
Логи и наблюдаемость
Структурированные логи помогают сравнивать поведение 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 и по среде.
Troubleshooting
| Симптом | Что сделать |
|---|---|
| Токен невалиден на backend | Проверьте sitekey и совпадение pageurl |
| Растёт время ответа | Снизьте параллелизм, проверьте лимиты ключа |
| 401 от CaptchaAI | Проверьте переменную CAPTCHAAI_KEY |
| Заказ не создаётся | Убедитесь, что флаг qa_only принят backend |
QA-чек-лист
- Запрос отправляется только на собственные или авторизованные endpoints.
- Тестовые учётные записи, события и платежи помечены как фиктивные.
- CAPTCHA-токен проверяется на собственном backend, а не доверяется клиенту.
- Логи содержат
task_id, тип CAPTCHA, время ожидания и pass/fail. - Скрипт возвращает корректный exit code, чтобы CI мог принять решение.
FAQ
Можно ли использовать этот подход на сторонних сайтах?
Нет. Описанные сценарии применимы только к собственным или явно авторизованным средам. Для чужих ресурсов запрашивайте письменное разрешение владельца.
Что делать, если 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.