Troubleshooting

BLS CAPTCHA Hataları ve Sorun Giderme

BLS CAPTCHA otomasyonunda gördüğünüz hataların neredeyse tamamı dört noktadan çıkar:

  • Talimat eksik gönderiliyorinstructions alanı payload'a hiç eklenmemiş.
  • Görüntüler geçerli base64'e dönüşmemiş — önek kalmış ya da dize kesilmiş.
  • Çıkarma ile görüntüleme sırası kaymış — doğru görseller yanlış indekste.
  • BLS'in dar geçerlilik penceresine takılıyorsunuz — çözüm gelene kadar CAPTCHA'nın süresi doluyor.

Aşağıda her hatayı bu dört aşamadan birine bağlayıp CaptchaAI ile uygulanacak somut düzeltmeyi veriyoruz. BLS, Schengen vize başvuru merkezlerinde yaygın kullanıldığı için Türkiye'deki geliştiricilerin sık karşılaştığı bir CAPTCHA türüdür; standart reCAPTCHA veya Turnstile'dan farklı olarak özel bir uygulama kullanır ve hataları da kendine özgüdür. Bu adımlar yetkili bir QA iş akışı içindir.


Hangi hata hangi aşamadan çıkar

Hata mesajını gördüğünüzde önce onu doğru aşamaya yerleştirin; çünkü aynı belirti farklı kök nedenlerden gelebilir. Aşağıdaki tablo başlangıç noktanızı belirler.

Aşama Tipik hata Önce nereye bakın
Görev gönderimi ERROR_BAD_PARAMETERS, ERROR_WRONG_FILE_EXTENSION payload alanları ve base64 biçimi
Görüntü çıkarma eksik/yanlış görüntü, 403 DOM zamanlaması, canvas ve hotlink
Forma uygulama yanlış görsel seçimi çıkarma sırası ve 1/0 tabanlı indeks
Süre penceresi zaman aşımı, ERROR_CAPTCHA_UNSOLVABLE çıkarma ile gönderim arasındaki gecikme

API'ye görev gönderirken çıkan hatalar

Bu hatalar in.php uç noktasına görev gönderirken çıkar; kaynağı genelde payload'daki eksik veya bozuk bir alandır.

ERROR_BAD_PARAMETERS

Zorunlu parametrelerden biri eksik olduğunda çıkar — ya talimat metni ya da görüntüler gönderilmemiştir. instructions alanını mutlaka ekleyin:

# WRONG — missing instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "bls",
    "image_base64_1": img1, "json": 1
})

# CORRECT — include instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "bls",
    "instructions": "Select all images with a car",
    "image_base64_1": img1, "json": 1
})

ERROR_WRONG_FILE_EXTENSION

Görüntü verisi geçerli base64 değilse ya da desteklenmeyen bir formattaysa çıkar. Şu üç noktayı sırayla doğrulayın:

  • Görüntülerin base64 kodlanmış PNG veya JPEG olduğundan emin olun
  • data:image/...;base64, önekini kaldırın
  • base64 dizesinin ortadan kesilmediğini doğrulayın
import base64

# Strip the data URI prefix
src = img_element.get_attribute("src")
if src.startswith("data:image"):
    b64 = src.split(",")[1]
else:
    # Download and encode
    img_data = requests.get(src).content
    b64 = base64.b64encode(img_data).decode()

ERROR_CAPTCHA_UNSOLVABLE

Görüntüler çok düşük çözünürlüklü ya da bulanıksa, veya talimat metni belirsizse dönebilir. Görüntüleri tam çözünürlükte yakalayın, talimatın doğru çıkarıldığını doğrulayın ve gerekirse yenileyip yeniden deneyin — bazı doğrulamalar doğası gereği daha zordur.

Bu hata gönderim aşamasında görünse de kökü çoğu zaman görüntü çıkarmadadır: kırpılmış veya yeniden boyutlanmış bir görsel, temiz payload ile bile çözülemez döner.


Görüntüleri sayfadan çıkarırken çıkan sorunlar

Payload doğruysa ama çözüm yanlış geliyorsa, sorun görüntülerin sayfadan çıkarılma biçimindedir.

Görüntüler dinamik olarak yükleniyor

Sayfa ilk açıldığında görüntüler henüz DOM'da olmayabilir. CAPTCHA'nın tamamen oluşmasını bekleyin:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait for captcha images to load
WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".captcha-image img"))
)

Görüntüler img değil, canvas üzerinde

Bazı BLS uygulamaları görüntüleri <canvas> öğelerinde çizer; bu durumda src yerine canvas verisini base64 olarak çıkarın:

canvas_elements = driver.find_elements(By.CSS_SELECTOR, ".captcha-canvas")
for i, canvas in enumerate(canvas_elements, 1):
    b64 = driver.execute_script(
        "return arguments[0].toDataURL('image/png').split(',')[1];",
        canvas
    )
    payload[f"image_base64_{i}"] = b64

Görüntü URL'leri tarayıcı dışından istendiğinde 403 dönerse, görüntüleri tarayıcı bağlamı içinde çıkarın:

# Get image data from within the browser
b64 = driver.execute_script("""
    var img = arguments[0];
    var canvas = document.createElement('canvas');
    canvas.width = img.naturalWidth;
    canvas.height = img.naturalHeight;
    canvas.getContext('2d').drawImage(img, 0, 0);
    return canvas.toDataURL('image/png').split(',')[1];
""", img_element)

Çözümü forma uygularken çıkan hatalar

CaptchaAI doğru indeksleri döndürse de form reddedilebilir; bu aşamada sorun genelde sıralama ve indekslemededir.

Yanlış görüntüler seçiliyor

Çıkarma ile görüntüleme arasında görüntü sırası uyuşmadığında yanlış görseller seçilir. Sıralamayı DOM sırasıyla tutarlı tutun:

# Ensure images are indexed in display order
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
# The order of find_elements matches DOM order = display order
for i, img in enumerate(captcha_imgs, 1):
    payload[f"image_base64_{i}"] = extract_base64(img)

Çözüm indeksleri tutmuyor

CaptchaAI 1 tabanlı indeks döndürür; kodunuz 0 tabanlı dizin kullanıyorsa her seçim bir kayar. Erişimden önce 1 çıkarın:

solution = result["request"]  # e.g., "1,3,5"
indices = [int(i) for i in solution.split(",")]

# Convert to 0-based for array access
for idx in indices:
    captcha_imgs[idx - 1].click()  # 1-based → 0-based

Doğru seçime rağmen form gönderimi başarısız

Seçim doğru olsa da gönderilmesi gereken ek form alanları veya token'lar eksik olabilir. CAPTCHA ile birlikte gitmesi gereken gizli alanları kontrol edin:

# Look for hidden captcha tokens
hidden_fields = driver.find_elements(By.CSS_SELECTOR, "input[type='hidden']")
for field in hidden_fields:
    name = field.get_attribute("name")
    value = field.get_attribute("value")
    print(f"Hidden field: {name}={value}")

Zaman aşımı ve süre hataları

BLS doğrulamaları kısa ömürlüdür; hataların bir kısmı doğrudan bu dar pencereden çıkar.

CAPTCHA, çözüm bitmeden süresi doluyor

BLS CAPTCHA'nın geçerlilik penceresi kısa olduğu için çıkarma ile gönderim arasındaki her saniye risklidir:

  • Görüntüleri çıkarır çıkarmaz CaptchaAI'ye gönderin
  • Çıkarma ile gönderim arasında bekleme koymayın
  • Çözüm 60 saniyeden uzun sürerse CAPTCHA'nın süresi dolmuş olabilir; yenileyip yeniden deneyin

Örneğin bir Schengen başvuru formunu staging ortamında test ederken görüntüleri çıkarıp beklettiğinizde süre aşımına düşersiniz; çıkarma ve gönderimi tek adımda zincirlemek bunu çözer.

Görüntüleri diske yazıp ayrı bir işçide çözmeye çalışmak bu pencerede en sık yapılan hatadır; akışı tek süreçte tutun.

Sonuç sorgulaması çok uzun sürüyor

res.php uç noktasını doğru aralıkla sorgulayın; çözülemeyen bir görevde sonsuza kadar beklemek yerine erken çıkın:

# Standard polling pattern
for _ in range(30):  # 30 attempts × 5 seconds = 150 seconds max
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": 1
    }).json()

    if result.get("status") == 1:
        return result["request"]
    if result.get("request") == "ERROR_CAPTCHA_UNSOLVABLE":
        # Don't keep polling — start over
        raise Exception("Unsolvable")

Hızlı teşhis kontrol listesi

Bir hatayı tek tek elemek için bu listeyi yukarıdan aşağıya çalıştırın:

Kontrol Yapılacak
Talimat çıkarıldı mı? Talimat metnini yazdırıp doğrulayın
Görüntüler geçerli mi? base64'ü dosyaya kaydedip açarak kontrol edin
Görüntü sayısı doğru mu? Gönderilen görsel sayısını ekrandakiyle karşılaştırın
Görüntü sırası doğru mu? DOM sırasının görüntüleme sırasıyla eşleştiğini doğrulayın
base64 öneki kaldırıldı mı? data:image/...;base64, kısmını silin
Çözüm biçimi ne? Virgülle ayrılmış 1 tabanlı indeksleri ayrıştırın
İndeks dönüşümü yapıldı mı? 0 tabanlı dizi erişimi için 1 çıkarın

Sık sorulan sorular

Türkiye'deki geliştiricilerden en sık gelen sorular ve kısa yanıtları:

BLS CAPTCHA sürekli ERROR_CAPTCHA_UNSOLVABLE dönüyor, neden?

Genelde üç nedenden biri: görüntüler tam çözünürlükte değil, talimat metni yanlış çıkarılmış ya da payload'a eksik görüntü gönderilmiş. Önce talimatı ve görüntü sayısını yazdırıp doğrulayın.

Talimat İngilizce değilse CaptchaAI'ye ne göndermeliyim?

Talimatı ekranda göründüğü haliyle gönderin. CaptchaAI çok dilli talimatları işler; metni çevirmeye çalışmayın.

Sonuç sorgulamasını ne sıklıkla yapmalıyım?

Standart desen 5 saniyede bir sorgu ve en fazla 30 denemedir. Daha sık sorgulamak istek sınırına takabilir; ERROR_CAPTCHA_UNSOLVABLE gelirse beklemeyi bırakıp baştan başlayın.

BLS otomasyonu için hangi CaptchaAI planı yeterli?

BLS akışları tek seferde tek CAPTCHA çözer; BASIC ($15/ay, 5 thread) çoğu bireysel iş akışına yeter. Paralel hacimde STANDARD ($30/ay, 15 thread) veya ADVANCE ($90/ay, 50 thread) daha rahat çalışır.

BLS randevu portalındaki CAPTCHA'yı otomatik çözmek uygun mu?

CaptchaAI yalnızca CAPTCHA doğrulamasını çözer; onu yetkili test ve QA iş akışları içinde kullanın. Kişisel veri işleyen akışlarda KVKK yükümlülüklerinizi gözetin ve portalın kullanım şartlarına uyun.


İlgili kılavuzlar

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