API Tutorials

CaptchaAI API Gecikme Optimizasyonu: Daha Hızlı Çözümler

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.


İlgili kılavuzlar

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