Çö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/Istanbulbö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
- Birden çok CAPTCHA türünü tek iş akışında çözme
- CaptchaAI desteklenen CAPTCHA türleri özellik matrisi
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: