Comparisons

Как измерять время ответа CAPTCHA solver в 2025 году

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

Короткий ответ: медиану и P90/P99 считайте сами, минимум на 200 запросах, в своей среде — цифра из чужой статьи описывает чужую сеть и нагрузку, а не вашу. Ниже — методика, шаблон таблицы и скрипт для собственного замера.

Сначала проверьте покрытие типов CAPTCHA

Скорость бессмысленно сравнивать, пока вы не убедились, что провайдер вообще решает нужный вам тип — быстрый ответ по несуществующей поддержке ничего не значит. Прежде чем запускать замер, сверьтесь со списком типов из вашего пайплайна:

  • reCAPTCHA v2 и v3 (интерактивные и score-based)
  • Cloudflare Turnstile
  • GeeTest v3
  • image/OCR и BLS

Почему нельзя опираться на чужие цифры

  • Сетевая задержка между вашей инфраструктурой и API solver — самый весомый фактор, а она у каждого своя: команда со staging во Frankfurt и команда с серверами в Казахстане или Центральной Азии получат разный RTT на одном и том же провайдере.
  • Тип CAPTCHA задаёт разную базовую сложность: image решается быстрее, чем reCAPTCHA v2 с интерактивным challenge.
  • Время суток и текущая нагрузка провайдера сдвигают распределение — разовый замер в удобный час не репрезентативен.
  • Таймауты, ретраи и параллелизм в вашей интеграции сами по себе меняют итоговое «время ответа», которое видит приложение.

Поэтому цифры из чужих статей стоит считать ориентировочными, а не универсальным обещанием для вашего случая.

Методика измерения на своей выборке

  1. Зафиксируйте один сценарий: тип CAPTCHA, sitekey, pageurl на staging-странице — не меняйте параметры между провайдерами.
  2. Соберите минимум 200 успешных запросов на провайдера; ошибки и таймауты считайте отдельным счётчиком.
  3. Запускайте измерения с одной машины и в одно время суток — иначе сравниваете не провайдеров, а условия сети.
  4. Считайте медиану, P90 и P99, а не среднее: одна долгая задержка искажает среднее, но почти не двигает медиану.
  5. Повторите замер в три разных дня и сравните распределения, а не единичные точки.

Скрипт для замера

import os, statistics, time, requests

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

def measure(sitekey: str, n: int = 200) -> dict:
    times = []
    errors = 0
    for _ in range(n):
        t0 = time.time()
        try:
            r = requests.post('https://ocr.captchaai.com/in.php', data={
                'key': API_KEY, 'method': 'userrecaptcha',
                'googlekey': sitekey, 'pageurl': PAGE, 'json': 1,
            }, timeout=30).json()
            tid = 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': tid, 'json': 1},
                    timeout=30).json()
                if res['status'] == 1:
                    times.append(time.time() - t0)
                    break
            else:
                errors += 1
        except Exception:
            errors += 1
    times.sort()
    return {
        'n': len(times),
        'median': statistics.median(times),
        'p90': times[int(len(times) * 0.9) - 1],
        'p99': times[int(len(times) * 0.99) - 1],
        'errors': errors,
    }

Запускайте скрипт по очереди на каждого провайдера с одним sitekey/pageurl — так выборки остаются сравнимыми.

Таблица для записи результатов

Тип CAPTCHA Провайдер Выборка Медиана, с P90, с P99, с Доля ошибок
reCAPTCHA v2 A 200 ваше значение ваше значение ваше значение ваше значение
reCAPTCHA v3 A 200 ваше значение ваше значение ваше значение ваше значение
Cloudflare Turnstile A 200 ваше значение ваше значение ваше значение ваше значение
GeeTest v3 A 200 ваше значение ваше значение ваше значение ваше значение

Заполняйте только собственные значения. Это внутренняя выборка, и её не стоит выдавать за универсальное обещание.

От P90/P99 к безопасной публикации результата

Используйте P90/P99 для расчёта таймаутов в продакшене, а медиану — для оценки типичной латентности пользовательского сценария. Никогда не планируйте capacity по среднему значению: одна аномально долгая задержка искажает оценку и приводит к заниженным таймаутам под реальной нагрузкой.

Публикуя результат — внутри команды или во внешней статье — указывайте только собственную методику, размер выборки и ориентировочные значения, без превосходной степени и без обещаний. Отметьте, что результат зависит от типа CAPTCHA, региона, нагрузки и параметров интеграции, и приложите дату замера: цифры устаревают за недели.

Troubleshooting

Симптом Что сделать
Большой разброс Увеличьте выборку, повторите в другой день
Высокая P99 Проверьте сетевые таймауты и ретраи
Много ошибок Сверьте sitekey и баланс ключа
Разные регионы дают разные цифры Измеряйте отдельно по каждому региону, не усредняйте

FAQ

Сколько запросов достаточно для надёжной медианы и P99?

Для медианы хватает 100 запросов, для P90 — около 200, для устойчивого P99 нужно порядка 1000: хвост формируется редкими событиями и на малой выборке не проявляется.

Можно ли использовать бенчмарки из чужих статей вместо своих измерений?

Нет. Опубликованная цифра верна только для сети, региона и момента замера её автора. Берите чужие материалы как ориентир по методике, а не как готовое число для своего SLA.

Как часто повторять измерения после первого замера?

Раз в квартал или после заметного изменения нагрузки, региона деплоя или версии CAPTCHA на целевой странице.

Почему медиана и среднее дают разные выводы на одной выборке?

Среднее чувствительно к редким долгим ответам, медиана показывает «середину» распределения и лучше описывает повседневную скорость.

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

Готовы измерить CAPTCHA solver в собственной среде? Подключите CaptchaAI.

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