Интеграции

Selenium Wire + CaptchaAI: перехват запросов CAPTCHA в собственных QA-сценариях

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

Selenium Wire расширяет Selenium возможностью видеть HTTP/S трафик браузера. В QA это удобно для проверки, что виджет CAPTCHA на вашей собственной staging-странице обращается к правильным endpoints с ожидаемыми параметрами.

Установка

pip install selenium-wire selenium

Перехват CAPTCHA-запросов

from seleniumwire import webdriver

driver = webdriver.Chrome()
driver.get('https://staging.example.com/captcha-demo')

for r in driver.requests:
    if 'recaptcha' in r.url or 'turnstile' in r.url or 'geetest' in r.url:
        print(r.method, r.url, r.response.status_code if r.response else None)

На что смотреть в QA

  • запрашивает ли виджет ожидаемый sitekey;
  • какие токены и cookies отправляет страница на собственный backend верификации;
  • видны ли 4xx/5xx ответы провайдера CAPTCHA;
  • меняется ли последовательность запросов между релизами.

Интеграция с CaptchaAI

После того как Selenium Wire подтвердил, что виджет работает, QA-сценарий запрашивает токен у CaptchaAI и подставляет его в поле формы:

sitekey = driver.execute_script(
    "return document.querySelector('.g-recaptcha').getAttribute('data-sitekey')"
)
token = solve(sitekey)
driver.execute_script(
    "document.getElementById('g-recaptcha-response').value = arguments[0]",
    token,
)

Логи и наблюдаемость

Структурированные логи помогают сравнивать поведение 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

Симптом Что сделать
Нет запросов к провайдеру Проверьте, рендерится ли виджет
403 от провайдера Сверьте sitekey с конфигурацией staging
TLS-ошибка Обновите корневые сертификаты Selenium Wire
Токен не принят backend Проверьте secret и pageurl

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

Готовы инспектировать CAPTCHA в собственной staging-среде? Подключите CaptchaAI.

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