Reference

CaptchaAI ile CAPTCHA çözüm sürelerini tür bazında karşılaştırma

Çözüm süresi türden türe ciddi biçimde değişir: Cloudflare Turnstile ve resim CAPTCHA'ları birkaç saniyede biterken görüntü seçmeli reCAPTCHA v2 onlarca saniye sürebilir. Bu referans, CaptchaAI'nin desteklediği her tür için tekrarlanabilir çözüm süresi değerlerini ve aynı ölçümü kendi ortamınızda almak için Python ile Node.js komut dosyalarını verir. Amaç, zaman aşımı ve kapasite kararlarınızı tek bir ortalamaya değil gerçek dağılıma dayandırmaktır.

Türe göre tipik çözüm süreleri

Aşağıdaki değerler gözlemlenen verilere ve kullanıcı raporlarına dayanır. Sonuçlar ortama, hacme ve zamana göre değişebilir.

Spec tavanı sütunu SLA üst sınırıdır; Medyan ve yüzdelik değerler ise tür başına 100 ardışık çözümden ölçülen gözlemlerdir.

CAPTCHA türü Spec tavanı Medyan P90 P99 Başarı
reCAPTCHA v2 <60 sn 12–18 sn 25 sn 40 sn Yüksek
Görünmez reCAPTCHA v2 <30 sn 10–15 sn 20 sn 28 sn Yüksek
reCAPTCHA v3 <4 sn 1–3 sn 3 sn 4 sn Yüksek
reCAPTCHA Enterprise <60 sn 15–25 sn 35 sn 50 sn Yüksek
Cloudflare Turnstile <10 sn 4–8 sn 9 sn 10 sn Yüksek
GeeTest v3 <12 sn 6–10 sn 11 sn 12 sn Yüksek
Resim/OCR <0,5 sn 0,2–0,4 sn 0,5 sn 0,8 sn Yüksek
BLS CAPTCHA <1 sn 0,3–0,7 sn 0,9 sn 1 sn Yüksek

Spec tavanı sözleşmeye bağlı üst sınırdır; çözümler bunu sistematik olarak aşıyorsa destek kaydı açın. Başarı sütunu bilinçli olarak nitelikseldir: desteklenen türlerde başarı oranı yüksektir.

Ölçtüğünüz sayıyı nasıl okumalısınız

Kararlarınızı tek bir çalıştırmaya değil dağılımın tamamına dayandırın:

  • Medyan — Tipik deneyim; kapasite planlaması için kullanın.
  • P90 — 10 çözümden 9'unun kaldığı sınır; standart zaman aşımlarını buna göre belirleyin.
  • P99 — Gerçek uç durum; maksimum zaman aşımınızı bunun da üzerine ayarlayın.

Çözüm süresini etkileyen dört faktör

  • Ağ gecikmesi — API uç noktalarına olan mesafeniz gidiş-dönüş süresini (RTT) toplama ekler; 200 ms'lik bir RTT tek çözüme yaklaşık 1 saniye bindirir. Örneğin İstanbul'daki bir QA ekibi ölçümü Europe/Istanbul bölgesindeki bir sunucudan alıyorsa gördüğü toplam süre Spec tavanının biraz üzerinde çıkar; çünkü tavan yalnızca çözüm işini kapsar.
  • Proxy kalitesi — Bir proxy verirseniz çözüm onun üzerinden yönlendirilir; yavaş veya uzak bir proxy toplam süreye tek başına 5–15 saniye ekleyebilir. Kaynağı ayırt etmek için proxy'li ve proxy'siz ölçün.
  • CAPTCHA karmaşıklığı — Aynı tür içinde bile zorluk oynar; reCAPTCHA v2'de "trafik ışıklarını seçin" görevi basit bir onay kutusu doğrulamasından belirgin biçimde uzun sürer.
  • Sorgulama stratejisi — Agresif sorgulama (her 2 saniyede bir) sonucu erken yakalar ama API çağrılarını artırır; muhafazakâr sorgulama (her 10 saniyede bir) yükü düşürür ama gecikme ekler.

Türe göre sorgulama aralıkları

Yukarıdaki dağılıma göre sorgulamayı tür bazında yapılandırın:

Sorgulama aralığını çözüm süresinden kısa tutun; aksi halde hazır sonucu geç fark edersiniz.

CAPTCHA türü İlk bekleme Sorgulama aralığı Maks. deneme
Resim/OCR 5 sn 3 sn 15
Cloudflare Turnstile 5 sn 3 sn 15
BLS CAPTCHA 5 sn 3 sn 15
reCAPTCHA v2 15 sn 5 sn 20
reCAPTCHA v3 10 sn 5 sn 20
GeeTest v3 12 sn 5 sn 20
reCAPTCHA Enterprise 15 sn 5 sn 25

Python benchmark komut dosyası

# benchmark_captchaai.py
import os
import time
import statistics
import requests

API_KEY = os.environ.get("CAPTCHAAI_KEY", "YOUR_API_KEY")

def benchmark_solve(method, params, runs=10):
    """Benchmark a CAPTCHA type over multiple runs."""
    times = []
    successes = 0

    for i in range(runs):
        start = time.time()

        # Submit
        submit_params = {"key": API_KEY, "json": "1", **params}
        resp = requests.get("https://ocr.captchaai.com/in.php",
                            params=submit_params)
        result = resp.json()

        if result.get("status") != 1:
            print(f"  Run {i+1}: Submit failed - {result.get('request')}")
            continue

        task_id = result["request"]

        # Poll
        time.sleep(10)
        solved = False
        for _ in range(30):
            poll = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": API_KEY, "action": "get",
                "id": task_id, "json": "1",
            })
            poll_result = poll.json()

            if poll_result.get("status") == 1:
                elapsed = time.time() - start
                times.append(elapsed)
                successes += 1
                solved = True
                print(f"  Run {i+1}: {elapsed:.1f}s")
                break
            if poll_result.get("request") != "CAPCHA_NOT_READY":
                print(f"  Run {i+1}: Error - {poll_result.get('request')}")
                break

            time.sleep(5)

        if not solved and poll_result.get("request") == "CAPCHA_NOT_READY":
            print(f"  Run {i+1}: Timeout")

    if times:
        return {
            "runs": runs,
            "successes": successes,
            "success_rate": f"{successes/runs*100:.0f}%",
            "median": f"{statistics.median(times):.1f}s",
            "p90": f"{sorted(times)[int(len(times)*0.9)]:.1f}s" if len(times) >= 10 else "N/A",
            "min": f"{min(times):.1f}s",
            "max": f"{max(times):.1f}s",
        }
    return {"error": "No successful solves"}

# Benchmark reCAPTCHA v2
print("=== reCAPTCHA v2 ===")
recaptcha_v2 = benchmark_solve("userrecaptcha", {
    "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "pageurl": "https://www.google.com/recaptcha/api2/demo",
})
print(recaptcha_v2)

# Benchmark Image/OCR
print("\n=== Image CAPTCHA ===")
# Submit a base64-encoded test image
import base64
# Use a test image for benchmarking
image_result = benchmark_solve("post", {
    "method": "base64",
    "body": "BASE64_ENCODED_CAPTCHA_IMAGE",
})
print(image_result)

JavaScript benchmark komut dosyası

// benchmark_captchaai.js
const axios = require('axios');

const API_KEY = process.env.CAPTCHAAI_KEY || 'YOUR_API_KEY';

async function benchmarkSolve(params, runs = 10) {
  const times = [];
  let successes = 0;

  for (let i = 0; i < runs; i++) {
    const start = Date.now();

    // Submit
    const submit = await axios.get('https://ocr.captchaai.com/in.php', {
      params: { key: API_KEY, json: '1', ...params },
    });

    if (submit.data.status !== 1) {
      console.log(`  Run ${i + 1}: Submit failed - ${submit.data.request}`);
      continue;
    }

    // Poll
    await new Promise(r => setTimeout(r, 10000));
    let solved = false;

    for (let j = 0; j < 30; j++) {
      const poll = await axios.get('https://ocr.captchaai.com/res.php', {
        params: { key: API_KEY, action: 'get', id: submit.data.request, json: '1' },
      });

      if (poll.data.status === 1) {
        const elapsed = (Date.now() - start) / 1000;
        times.push(elapsed);
        successes++;
        solved = true;
        console.log(`  Run ${i + 1}: ${elapsed.toFixed(1)}s`);
        break;
      }
      if (poll.data.request !== 'CAPCHA_NOT_READY') {
        console.log(`  Run ${i + 1}: Error - ${poll.data.request}`);
        break;
      }
      await new Promise(r => setTimeout(r, 5000));
    }

    if (!solved) console.log(`  Run ${i + 1}: Timeout`);
  }

  if (times.length === 0) return { error: 'No successful solves' };

  times.sort((a, b) => a - b);
  return {
    runs, successes,
    successRate: `${((successes / runs) * 100).toFixed(0)}%`,
    median: `${times[Math.floor(times.length / 2)].toFixed(1)}s`,
    min: `${times[0].toFixed(1)}s`,
    max: `${times[times.length - 1].toFixed(1)}s`,
  };
}

(async () => {
  console.log('=== reCAPTCHA v2 ===');
  const v2 = await benchmarkSolve({
    method: 'userrecaptcha',
    googlekey: '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-',
    pageurl: 'https://www.google.com/recaptcha/api2/demo',
  });
  console.log(v2);

  console.log('\n=== Cloudflare Turnstile ===');
  const turnstile = await benchmarkSolve({
    method: 'turnstile',
    sitekey: 'YOUR_TURNSTILE_SITEKEY',
    pageurl: 'https://example.com',
  });
  console.log(turnstile);
})();

Sorun giderme

Sorun Sebep Çözüm
Çözüm süreleri listelenenden yüksek Ağ gecikmesi veya proxy sorunları CaptchaAI sunucularına daha yakın bir bölgeden ölçün
Çalıştırmalar arası tutarsız sonuçlar CAPTCHA zorluğunun değişmesi Örneklem boyutunu 50'nin üzerine çıkarın
Çok sayıda zaman aşımı Hatalı sitekey veya pageurl Parametreleri tek bir manuel testle doğrulayın
Benchmark sırasında ERROR_ZERO_BALANCE Tüm çalıştırmalara yetmeyen bakiye Büyük benchmark'lardan önce bakiye yükleyin

Sık sorulan sorular

Aynı CAPTCHA türünde çözüm süresi neden her seferinde farklı çıkıyor?

Çünkü tek bir sayı değil bir dağılım ölçüyorsunuz. Ağ gecikmesi, sunucu yükü ve o an sunulan CAPTCHA'nın zorluğu her çalıştırmada oynar. Bu yüzden medyanın yanında P90 ve P99'a da bakın.

reCAPTCHA v2 mi Turnstile mı daha kısa sürede çözülür?

Gözlemlenen değerlerde Cloudflare Turnstile medyanı 4–8 saniye, görüntü tabanlı reCAPTCHA v2 medyanı 12–18 saniyedir. Turnstile tipik olarak daha düşük gecikmelidir; yine de kesin fark ortamınıza göre değişir.

Daha fazla thread çözüm süresini kısaltır mı?

Hayır — thread sayısı tek çözümün süresini değil, aynı anda kaç çözümü paralel yürütebileceğinizi belirler. BASIC ($15/ay, 5 thread) ile beş çözüm eş zamanlı akar; hacim büyüdükçe daha yüksek thread'li bir plan kuyruk beklemesini azaltır.

İlgili makaleler

Sonraki adımlar

Komut dosyalarını kendi hesabınıza ve CAPTCHA hedeflerinize göre çalıştırın — CaptchaAI API anahtarınızı alın.

İlgili kılavuzlar:

Bu makale için yorumlar devre dışı bırakılmıştır.