Zaman sorunlarını çözün. Çözüm başına 10 saniyelik bir fark, binlerce görevde saatlerce gecikmeye neden olur. Bu kılavuz, her CAPTCHA türü için tekrarlanabilir kıyaslamalar sağlarCaptchaAIdestekler ve ayrıca kendi ölçümlerinizi çalıştırmak için komut dosyaları.
Tipik Çözüm Süreleri
Bu kıyaslamalar, API gönderiminden sonuç alımına kadar ölçülen, tür başına 100 ardışık çözümden elde edilen ortalama süreleri yansıtır:
| CAPTCHA Türü | Medyan Çözümü | P90 Çöz | P99 Çöz | Başarı Oranı |
|---|---|---|---|---|
| reCAPTCHA v2 | 12-18'ler | 25'ler | 40'lar | yüksek |
| reCAPTCHA v2 Görünmez | 10–15 saniye | 20 saniye | 35'ler | yüksek |
| reCAPTCHA v3 | 8-12 saniye | 18'ler | 30'lar | %90+ |
| reCAPTCHA Kurumsal | 15–25 saniye | 35'ler | 50 saniye | %90+ |
| Cloudflare Turnstile | 5–10 saniye | 15'ler | 25'ler | %99+ |
| GeeTest v3 | 10–18 saniye | 25'ler | 40'lar | %90+ |
| Resim/OCR | 3–8 saniye | 12'li | 20 saniye | %85+ |
| BLS CAPTCHA | 5–10 saniye | 15'ler | 20 saniye | %100 |
Süreler proxy kalitesine, sunucu yüküne ve CAPTCHA karmaşıklığına bağlı olarak değişiklik gösterir.
Çözüm Süresini Etkileyen Faktörler
Ağ Gecikmesi
CaptchaAI'nin API uç noktalarına olan mesafeniz gidiş-dönüş süresini artırır. 200 ms'lik bir RTT toplamda ~1 saniye ekler (gönderme + 3-4 anket × 200 ms).
Vekil Kalitesi
Proxy'leri kullanırken, kendi sunucu altyapınız'leri genellikle veri merkezi proxy'lerinden daha hızlı çözüm üretir çünkü daha az ikincil zorluğu tetiklerler.
CAPTCHA Karmaşıklığı
reCAPTCHA v2 görüntü zorlukları zorluk derecesine göre değişir. Solan resimlerle yapılan "trafik ışıklarını seçme" mücadelesi, basit bir onay kutusu doğrulamasından daha uzun sürer.
Anket Stratejisi
Agresif yoklama (her 2 saniyede bir) sonuçları daha hızlı algılar ancak API çağrılarını artırır. Muhafazakar yoklama (her 10 saniyede bir) yükü azaltır ancak gecikmeyi artırır.
Python Karşılaştırma 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 Karşılaştırma 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);
})();
Sonuçların Yorumlanması
Medyan ve P90
- Ortanca — Tipik deneyim. Bunu kapasite planlaması için kullanın.
- P90 — 10 çözümden 9'u için "en kötü durum". Zaman aşımı ayarları için bunu kullanın.
- P99 — Gerçek uç durum. Maksimum zaman aşımınızı bundan daha yükseğe ayarlayın.
Optimum Yoklama Aralıkları
Yukarıdaki karşılaştırmalara dayanarak yoklamayı CAPTCHA türüne göre yapılandırın:
| CAPTCHA Türü | İlk Bekleme | Anket Aralığı | Maksimum Deneme Sayısı |
|---|---|---|---|
| Resim/OCR | 5'ler | 3'ler | 15 |
| Cloudflare Turnstile | 5'ler | 3'ler | 15 |
| BLS CAPTCHA | 5'ler | 3'ler | 15 |
| reCAPTCHA v2 | 15'ler | 5'ler | 20 |
| reCAPTCHA v3 | 10'lar | 5'ler | 20 |
| GeeTest v3 | 12'li | 5'ler | 20 |
| reCAPTCHA Kurumsal | 15'ler | 5'ler | 25 |
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
| Listelenenden daha yüksek katları çözün | Ağ gecikmesi veya proxy sorunları | CaptchaAI sunucularına daha yakın bir bölgeden test yapın |
| Çalıştırmalar arasında tutarsız sonuçlar | CAPTCHA zorluk değişimi | Örnek boyutunu 50'den fazla çalışmaya artırın |
| Birçok zaman aşımı | Geçersiz site anahtarı veya sayfa URL'si | Tek bir manuel testle parametreleri doğrulayın |
Kıyaslama sırasında ERROR_ZERO_BALANCE |
Tüm çalıştırmalar için yetersiz bakiye | Büyük kıyaslamaları çalıştırmadan önce yükleme yapın |
SSS
Çözüm süreleri günün saatine göre değişiklik gösteriyor mu?
Evet. Yoğun saatler (ABD çalışma saatleri), yüksek talep nedeniyle biraz daha uzun çözüm süreleri gösterebilir. Tam bir resim elde etmek için karşılaştırmaları farklı zamanlarda çalıştırın.
Bu verileri üretim zaman aşımı ayarları için kullanmalı mıyım?
Standart zaman aşımları için P90 değerlerini ve maksimum zaman aşımları için P99 değerlerini kullanın. Ağ değişkenliğini hesaba katmak için %20'lik bir arabellek ekleyin.
Proxy ayarları çözüm sürelerini nasıl etkiler?
Bir proxy sağlarsanız, CaptchaAI çözümü bunun üzerinden yönlendirir. Yavaş veya uzak proxy'ler toplam çözüm süresine 5-15 saniye ekleyebilir. Karşılaştırma için proxy'lerle ve proxy olmadan ayrı ayrı test edin.
İlgili Makaleler
Sonraki Adımlar
Karşılaştırma 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: