Troubleshooting

CAPTCHA Çözme Oranı Düşüşleri: Performans Regresyon Teşhisi

Çözüm oranındaki ani düşüşün nedeni neredeyse her zaman dört katmandan biridir. Doğru teşhis, hemen desteğe yazmak değil; bu katmanları sırayla eleyip sorunu tek bir yere sabitlemektir:

  • Kodunuz — yanlış sitekey, hatalı method veya token'ı geciktiren işlem hattı
  • Proxy'niz — işaretlenmiş ya da düşük kaliteli proxy
  • Hedef site — değişen sitekey, yeni CAPTCHA türü veya güncellenen sayfa
  • CaptchaAI servisi — bakiye, istek sınırı ya da geçici çözüm oranı dalgalanması

Örneğin İstanbul'daki bir e-ticaret ekibinin gece QA otomasyonu çözüm oranını sabaha karşı %90'dan %55'e düşürdüyse, aşağıdaki akış nedeni birkaç istekte gösterir.

Çözüm oranı düşüşünde hızlı teşhis tablosu

Elinizde belirli bir belirti varsa önce buradan bakın: satırı bulun, en olası nedene ve ilk eyleme geçin.

Senaryo En olası neden İlk eylem
Tüm istekler başarısız, tümü ERROR_WRONG_USER_KEY Geçersiz API anahtarı API anahtarını yeniden kontrol edin
Günler içinde kademeli düşüş Proxy kalitesinde bozulma Proxy havuzunu yenileyin
Bir anda sıfıra düşüş Sitekey veya sayfa değişti CAPTCHA parametrelerini yeniden çıkarın
Çözülüyor ama token'lar site tarafından reddediliyor Token süresinin dolması veya alan adı uyuşmazlığı Zamanlamayı ve pageurl'yi kontrol edin
Test sitesinde çalışıyor, hedefte başarısız Siteye özgü kısıtlamalar İki site arasındaki parametreleri karşılaştırın

Teşhis karar ağacı: çözüm oranı neden düştü?

Belirti net değilse aramaya nereden başlayacağınızı bu ağaç belirler. Hatanın hangi katmandan geldiğini işaretleyin, sonra ilgili adıma inin:

Solve rate dropped
├── Is the API returning errors? → Check error codes
│   ├── ERROR_WRONG_USER_KEY → API key issue
│   ├── ERROR_ZERO_BALANCE → Balance depleted
│   ├── ERROR_NO_SLOT_AVAILABLE → Rate limiting
│   └── ERROR_CAPTCHA_UNSOLVABLE → CAPTCHA changed
├── Are tokens returned but rejected by the target site?
│   ├── Token expired before submission → Speed up injection
│   ├── Sitekey changed → Re-extract from page
│   └── Domain mismatch → Check pageurl parameter
├── Are proxies failing?
│   ├── Proxy banned by target → Rotate proxies
│   └── Proxy timeout → Check proxy health
└── Did the target site change?
    ├── New CAPTCHA type → Update method parameter
    ├── JavaScript changes → Re-analyze page
    └── Rate limiting by site → Reduce frequency

Adım 1: CaptchaAI hata kodlarını ve bakiyeyi okuyun

İlk soru basit: API bir hata mı döndürüyor, yoksa token'lar geliyor ama reddediliyor mu? Aşağıdaki komut dosyası bakiyeyi doğrular, test çözümleri çalıştırır ve hataları sıklığa göre toplar. Çıktıdaki dağılım hangi adıma odaklanacağınızı söyler.

# diagnose_solve_rate.py
import os
import requests
from collections import Counter

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

def check_balance():
    """Verify API key and balance."""
    resp = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "getbalance", "json": "1",
    })
    result = resp.json()
    print(f"Balance: {result}")
    return result

def test_solve(sitekey, pageurl, runs=5):
    """Run test solves and collect error statistics."""
    errors = Counter()
    successes = 0

    for i in range(runs):
        # Submit
        resp = requests.get("https://ocr.captchaai.com/in.php", params={
            "key": API_KEY,
            "method": "userrecaptcha",
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": "1",
        })
        result = resp.json()

        if result.get("status") != 1:
            errors[result.get("request", "UNKNOWN")] += 1
            print(f"  Run {i+1}: Submit error: {result.get('request')}")
            continue

        task_id = result["request"]
        import time
        time.sleep(15)

        # Poll
        for _ in range(25):
            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:
                successes += 1
                print(f"  Run {i+1}: Solved")
                break
            if poll_result.get("request") != "CAPCHA_NOT_READY":
                errors[poll_result.get("request", "UNKNOWN")] += 1
                print(f"  Run {i+1}: Error: {poll_result.get('request')}")
                break
            time.sleep(5)
        else:
            errors["TIMEOUT"] += 1
            print(f"  Run {i+1}: Timeout")

    print(f"\nResults: {successes}/{runs} solved")
    if errors:
        print(f"Errors: {dict(errors)}")

# Run diagnostics
print("=== Balance Check ===")
check_balance()

print("\n=== Test Solves ===")
test_solve("YOUR_SITEKEY", "https://your-staging.example.com", runs=5)

ERROR_ZERO_BALANCE görürseniz sorun teşhis değil, bakiyedir: thread tabanlı planlar (BASIC $15/ay, 5 thread'den başlar) USD olarak öngörülebilir aylık maliyet sunar. Bakiye doğruysa çıktıdaki hata dağılımına bakıp ilgili adıma geçin.

Adım 2: Sitekey ve sayfa yapısı değişti mi?

Çözüm oranı düşüşlerinin en yaygın nedeni, hedef sitedeki değişen sitekey veya yeniden düzenlenmiş sayfa yapısıdır. Kodunuz eski değeri gönderiyorsa çözüm başarılı olur ama site token'ı kabul etmez. Geliştirici Araçları'nı (F12) açın ve mevcut değeri kodunuzdakiyle karşılaştırın:

  • reCAPTCHA: data-sitekey özniteliği veya grecaptcha.render çağrısı
  • Cloudflare Turnstile: Turnstile widget'ındaki data-sitekey
  • GeeTest: GeeTest başlatmasındaki gt parametresi

Tek bir karakter farkı bile tüm isteklerin başarısız olmasına yeter. Sitekey aynıysa, sitenin CAPTCHA türünü değiştirmiş olabileceğini kontrol edin — bazı siteler sürüm arasında sessizce geçiş yapar:

  • reCAPTCHA v2 → reCAPTCHA v3 (görünmez)
  • reCAPTCHA → Cloudflare Turnstile
  • Resim CAPTCHA → reCAPTCHA Enterprise

Tür değiştiyse method parametrenizi güncelleyin; eski method doğru token üretmez.

Adım 3: Proxy kalitesini değerlendirin

Proxy kalitesi, özellikle CaptchaAI'nin sizin proxy'nizi kullandığı token tabanlı CAPTCHA'larda çözüm oranını doğrudan etkiler. Tür destekliyorsa, izole etmek için önce proxy olmadan test edin.

Proxy sorunu Belirti Düzeltme
Proxy IP'niz hedef tarafından işaretlendi Token çözüldü ama reddedildi Proxy havuzunuzu yenileyin
Proxy erişilemiyor ERROR_PROXY_NOT_FOUND Proxy'nin canlı ve erişilebilir olduğunu doğrulayın
Düşük kaliteli proxy Çözüm oranları düşük Daha güvenilir bir proxy sağlayıcısına geçin
Proxy coğrafi uyumsuzluğu Tutarsız sonuçlar Proxy ülkesini hedef siteyle eşleştirin

Adım 4: Token zamanlamasını ve süresini ölçün

CAPTCHA token'larının geçerlilik süresi sınırlıdır. İşlem hattınız token'ı aldıktan sonra forma eklemeyi çok geciktirirse token'ın süresi dolar ve site onu reddeder.

CAPTCHA türü Token ömrü
reCAPTCHA v2 ~120 saniye
reCAPTCHA v3 ~120 saniye
Cloudflare Turnstile ~300 saniye
GeeTest v3 ~60 saniye

Düzeltme: getTaskResult ile form gönderimi arasındaki süreyi ölçün. 60 saniyeyi aşıyorsa ardışık düzeninizi hızlandırıp token'ı üretilir üretilmez enjekte edin.

Adım 5: Hata dağılımını sıklığa göre sıralayın

Kök nedeni bulmanın en hızlı yolu, hataları frekansa göre sıralayıp en baskın olanla başlamaktır:

Hata Anlamı Eylem
ERROR_CAPTCHA_UNSOLVABLE CAPTCHA çok karmaşık veya değişmiş CaptchaAI'ye bildirin; sitekey'in doğru olduğunu kontrol edin
ERROR_WRONG_CAPTCHA_ID Yanlış görev kimliği sorgulanıyor Kodunuzda görev kimliği takibini düzeltin
ERROR_ZERO_BALANCE Bakiye bitti Bakiyeyi yükleyin
ERROR_NO_SLOT_AVAILABLE İstek sınırına takıldınız Eşzamanlılığı azaltın veya gecikme ekleyin
CAPCHA_NOT_READY (zaman aşımı) Çözüm çok uzun sürüyor Sorgulama zaman aşımını artırın; sitekey'in geçerli olduğunu doğrulayın

Adım 6: Mevcut metrikleri temel değerlerle kıyaslayın

Daha önce ölçüm aldıysanız güncel değerleri temel (baseline) değerlerle karşılaştırın. Delta eşiği aşıyorsa araştırın:

Metrik Temel Mevcut Delta Endişe eşiği
Çözüm oranı %95 ? > %5 düşüş = araştırın
Medyan çözüm süresi 15 sn ? > %50 artış = araştırın
Hata oranı %2 ? > %5 = araştırın
Token kabul oranı %98 ? > %3 düşüş = site değişti

CaptchaAI desteğine ne zaman başvurmalısınız?

Tüm adımları yürüttünüz ama sorun sizde değilse desteğe yazın. Raporunuza şunları ekleyin: CAPTCHA türü ve sitekey, hedef site URL'si, hata dağılımı, sorunun başladığı an ve kodunuzdaki son değişiklikler.

  • Tüm teşhis adımları temiz geçiyor ama çözüm oranı düşük kalıyor
  • Daha önce çalışan sitekey'lerde ERROR_CAPTCHA_UNSOLVABLE oranı %20'yi geçiyor
  • Bakiye doğru görünüyor ama çözümler yine de başarısız
  • Sorun 2 saatten uzun süredir devam ediyor

SSS

Çözüm oranı düşüşünde ilk hangi adıma bakmalıyım?

Net bir belirti varsa yukarıdaki hızlı teşhis tablosundan başlayın. Belirsizse Adım 1'i çalıştırın; hata dağılımı sorunun API katmanında mı yoksa token reddi mi olduğunu gösterir.

Token çözüldüğü hâlde neden reddediliyor?

En sık üç neden: token forma eklenmeden süresi doldu, sitekey değişti ya da pageurl ile gerçek alan adı uyuşmuyor. Adım 2 ve Adım 4 bu üçünü ayırt eder.

Her ERROR_CAPTCHA_UNSOLVABLE hatasını bildirmeli miyim?

Hayır. Karmaşık CAPTCHA'larda %2–5 aralığında çözülememe oranı normaldir. Yalnızca oran sürekli %15–20'yi aşarsa CaptchaAI'ye bildirin.

Çözüm oranı ne kadar sürede toparlanır?

Sorun CaptchaAI tarafındaysa toparlanma genellikle birkaç saat içindedir. Hedef site değiştiyse entegrasyon parametrelerinizi güncelleyin.

İlgili Makaleler

Sonraki Adımlar

CAPTCHA işlem hattınızı sağlıklı tutun — CaptchaAI API anahtarınızı alın.

İlgili kılavuzlar:

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