Bir CAPTCHA çözümünün dört gecikme bileşeni vardır: istek gönderme, kuyrukta bekleme, çözücü yürütme ve yoklama alma. Çözücünün yürütme süresini kontrol edemezsiniz ancak diğer her şeyi optimize edebilirsiniz.
CAPTCHA türüne göre temel gecikme
| CAPTCHA türü | Tipik çözüm süresi | Ulaşılabilecek en iyi |
|---|---|---|
| Resim/OCR | 2-5s | 1-3s |
| reCAPTCHA v2 | 15-30'lar | 10-20'ler |
| reCAPTCHA v3 | 10-20'ler | 8-15s |
| Cloudflare Turnstile | 10-25s | 8-15s |
| GeeTest v3 | 15-30'lar | 10-20'ler |
"Ulaşılabilir en iyi" sütunu, aşağıdaki optimizasyonları uyguladıktan sonra elde ettiğiniz sonuçları yansıtır.
1. Anket aralıklarını optimize edin
Varsayılan 5 saniyelik yoklama aralığı, yoklamalar arasında çözüm tamamlandığında zaman kaybına neden olur. Uyarlanabilir yoklamayı kullanın; hızlı başlayın, sonra geri çekilin:
Python
import time
import requests
API_KEY = "YOUR_API_KEY"
RESULT_URL = "https://ocr.captchaai.com/res.php"
def adaptive_poll(task_id, timeout=120):
"""Start polling at 3s, increase to 5s after 4 polls."""
start = time.time()
interval = 3 # start aggressive
polls = 0
while time.time() - start < timeout:
time.sleep(interval)
polls += 1
resp = requests.get(RESULT_URL, params={
"key": API_KEY, "action": "get",
"id": task_id, "json": "1"
}).json()
if resp["status"] == 1:
elapsed = time.time() - start
print(f"Solved in {elapsed:.1f}s ({polls} polls)")
return resp["request"]
if resp["request"] != "CAPCHA_NOT_READY":
raise Exception(resp["request"])
# Back off after initial fast polls
if polls >= 4:
interval = 5
raise TimeoutError(f"Task {task_id} timed out")
JavaScript
async function adaptivePoll(taskId, apiKey, timeout = 120000) {
const start = Date.now();
let interval = 3000;
let polls = 0;
while (Date.now() - start < timeout) {
await new Promise(r => setTimeout(r, interval));
polls++;
const resp = await fetch(
`https://ocr.captchaai.com/res.php?key=${apiKey}&action=get&id=${taskId}&json=1`
);
const data = await resp.json();
if (data.status === 1) {
console.log(`Solved in ${((Date.now() - start) / 1000).toFixed(1)}s (${polls} polls)`);
return data.request;
}
if (data.request !== 'CAPCHA_NOT_READY') {
throw new Error(data.request);
}
if (polls >= 4) interval = 5000;
}
throw new Error(`Task ${taskId} timed out`);
}
Sabit 5 saniyelik aralığa kıyasla ortalama 1-4 saniye tasarruf sağlar.
2. Bağlantı havuzu oluşturma
Her anket için yenilerini açmak yerine HTTP bağlantılarını yeniden kullanın:
Python
session = requests.Session()
# Use session.get() and session.post() instead of requests.get/post
# The session reuses TCP connections automatically
JavaScript (Node.js)
const { Agent } = require('http');
const axios = require('axios');
const client = axios.create({
httpAgent: new Agent({ keepAlive: true, maxSockets: 10 }),
timeout: 10000,
});
// Use client.get() and client.post() for all API calls
TCP/TLS el sıkışmalarını atlayarak istek başına ~50-100 ms tasarruf sağlar.
3. CAPTCHA'ları önceden getirin
Belirteçlere ihtiyaç duymadan önce CAPTCHA görevlerini gönderin. Kazıyıcınız N sayfasını işlerken N+1 sayfasının CAPTCHA'sını gönderin:
from concurrent.futures import ThreadPoolExecutor
SUBMIT_URL = "https://ocr.captchaai.com/in.php"
def prefetch_submit(sitekey, page_url):
resp = session.post(SUBMIT_URL, data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"json": "1",
})
data = resp.json()
if data["status"] == 1:
return data["request"]
raise Exception(data["request"])
# Submit next page's CAPTCHA while processing current page
with ThreadPoolExecutor(max_workers=2) as pool:
# Submit CAPTCHA for page 2 while processing page 1
future_task = pool.submit(prefetch_submit, "6Le-SITEKEY", "https://example.com/page/2")
# Process page 1...
process_page(current_data)
# Now get the pre-submitted task ID and poll
task_id = future_task.result()
token = adaptive_poll(task_id)
Çözümlemeyi işlemeyle örtüştürerek tam bekleme süresini ortadan kaldırır.
4. Doğru CAPTCHA yöntemini kullanın
CaptchaAI bazen belirli senaryolar için daha hızlı yöntemleri destekler:
| Senaryo | Yavaş yöntem | Daha hızlı alternatif |
|---|---|---|
| Bilinen geri arama ile reCAPTCHA v2 | userrecaptcha + anket |
pingback ile userrecaptcha (geri arama URL'si) |
| Resim metni CAPTCHA | Yüksek çözünürlüklü base64 |
base64 ve numeric=1 yalnızca rakamlarsa |
5. Gerekmediğinde proxy'yi atlayın
Proxy yönlendirmesi gecikmeyi artırır. Proxy parametrelerini yalnızca hedef site belirli IP'lerden istek gerektirdiğinde gönderin:
# Without proxy — faster for most use cases
data = {
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"json": "1",
}
# With proxy — only when required
data["proxy"] = "user:pass@1.2.3.4:8080"
data["proxytype"] = "HTTP"
6. Yoklama yerine geri arama URL'lerini kullanın
pingback parametresiyle yoklamayı tamamen ortadan kaldırın:
resp = session.post(SUBMIT_URL, data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"json": "1",
"pingback": "https://your-server.com/captcha-callback",
})
CaptchaAI, çözüm tamamlandığında sonucu URL'nize gönderir. Oylama döngüsüne gerek yok. Bu en hızlı geri alma yöntemidir.
7. Optimizasyonlarınızı karşılaştırın
import statistics
def benchmark(solve_func, iterations=20):
times = []
for i in range(iterations):
start = time.time()
try:
solve_func()
times.append(time.time() - start)
except Exception:
pass
if times:
print(f"Samples: {len(times)}/{iterations}")
print(f"Mean: {statistics.mean(times):.1f}s")
print(f"Median: {statistics.median(times):.1f}s")
print(f"P95: {sorted(times)[int(len(times)*0.95)]:.1f}s")
print(f"Min: {min(times):.1f}s")
print(f"Max: {max(times):.1f}s")
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
| Anket gecikmesi değişmedi | Oturum olmadan hala requests.get() kullanılıyor |
session.get()'ye geçiş yap |
| Ön getirme belirteçlerinin kullanımdan önce geçerliliği sona erer | İşleme çok uzun sürüyor | Ön getirme penceresini azaltın veya kullanıma yaklaştıkça gönderin |
| Geri arama URL'si hiçbir zaman veri almaz | Sunucuya CaptchaAI'den ulaşılamıyor | Genel URL'yi sağlayın, güvenlik duvarı kurallarını düzeltin |
| Daha hızlı yoklama oran sınırlarına neden olur | Çok agresif oylama (< 2s) | Minimum aralığı 3 saniyede tutun |
SSS
En büyük tek optimizasyon nedir?
Önceden getiriliyor. Çözüm süresini işlem süresiyle örtüştürerek sıralı iş akışları için algılanan gecikmeyi etkili bir şekilde sıfıra yakın bir düzeye indirir.
Uyarlanabilir yoklama resim CAPTCHA'larına yardımcı olur mu?
Daha az. Resim CAPTCHA'ları 2-5 saniyede çözülür, dolayısıyla 3 saniyedeki ilk anket genellikle onları yakalar. İyileşme reCAPTCHA'da daha belirgindir (15-30 saniye).
CaptchaAI ile en hızlı CAPTCHA çözümünü elde edin
API anahtarınızı şu adresten alın:captchaai.com.