BLS CAPTCHA çözmenin benzersiz zorlukları vardır çünkü özel bir uygulama kullanır. İşte en sık karşılaşılan hatalar ve çözümleri.
API gönderme hataları
ERROR_BAD_PARAMETERS
Neden: Gerekli parametreler eksik (talimatlar veya resimler).
Düzeltme:
# 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
Neden: Resim verileri geçerli base64 değil veya desteklenmeyen bir format.
Düzeltme:
- Resimlerin base64 kodlu PNG veya JPEG olduğundan emin olun
data:image/...;base64,önekini kaldırın- Base64 dizesinin 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
Neden: Görüntülerin kalitesi çok düşük, bulanık veya talimatlar belirsiz.
Düzeltme:
- Görüntüleri tam çözünürlükte yakalayın
- Talimat metninin doğru şekilde çıkarıldığından emin olun
- Yeniden dene — bazı zorluklar doğası gereği daha zordur
Görüntü çıkarma hataları
Resimler dinamik olarak yükleniyor
Sorun: Sayfa ilk yüklendiğinde resimler DOM'da değil.
Düzeltme: Captcha'nın tamamen oluşturulması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"))
)
Resimler tuvaldir, img öğeleri değil
Sorun: Bazı BLS uygulamaları <canvas> öğelerinde görüntüler oluşturuyor.
Düzeltme: Tuval verilerini 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
Hotlinking önlemenin arkasındaki resimler
Sorun: Resim URL'leri, tarayıcının dışından getirildiğinde 403 değerini döndürüyor.
Düzeltme: Görüntüleri tarayıcı bağlamında çı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 uygulama hataları
Yanlış resimler seçildi
Neden: Çıkarma ve görüntüleme arasında görüntü sıralaması uyuşmazlığı.
Düzeltme: Tutarlı sıralamayı koruyun:
# 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 endeksleri eşleşmiyor
Neden: CaptchaAI 1 tabanlı dizinler döndürüyor, ancak kodunuz 0 tabanlı dizinleri kullanıyor.
Düzeltme:
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çimden sonra form gönderimi başarısız oluyor
Neden: Ek form alanları veya belirteçler eksik.
Düzeltme: Captcha'nın yanında gönderilmesi 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ı hataları
Çözüm tamamlanmadan Captcha'nın süresi doluyor
Sorun: BLS CAPTCHA'nin geçerlilik süresi kısadır.
Düzeltme:
- Görüntüleri çıkarın ve hemen CaptchaAI'ye gönderin
- Resimleri çıkarmayın ve göndermeden önce bekleyin
- Çözüm 60 saniyeden uzun sürerse captcha'nın süresi dolmuş olabilir; yenileyin ve yeniden deneyin
Oylama çok uzun sürüyor
Düzeltme: Doğru şekilde oy verdiğinizden emin olun:
# 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")
Hata ayıklama kontrol listesi
| Kontrol et | Eylem |
|---|---|
| Talimatlar çıkarıldı mı? | Talimat metnini yazdırın ve doğrulayın |
| Resimler geçerli mi? | Base64'ü dosyaya kaydedin ve doğrulamak için açın |
| Resim sayısı doğru mu? | Gönderilen ve görüntülenen görsellerin sayısını karşılaştırın |
| Resim sırası doğru mu? | DOM sırasının görüntüleme sırası ile eşleştiğini doğrulayın |
| Base64 öneki kaldırıldı mı? | data:image/...;base64,'yi kaldır |
| Çözüm biçimi? | Virgülle ayrılmış 1 tabanlı dizinleri ayrıştırma |
| Dizin dönüşümü? | 0 tabanlı dizi erişimi için 1'i çıkarın |
SSS
CaptchaAI'ye kaç resim göndermeliyim?
CAPTCHA'da görüntülenen tüm görselleri (genellikle 3-9 arası) gönderin. image_base64_1'yi image_base64_9 aracılığıyla kullanın.
Talimat İngilizce dışında bir dildeyse ne olur?
Talimatı tam olarak gösterildiği gibi gönderin. CaptchaAI çok dilli talimatları yönetir.
Çözümü hızlandırmak için görüntüleri önceden yükleyebilir miyim?
Hayır. BLS, oturum başına benzersiz görüntüler oluşturur. Her captcha örneği için bunları taze olarak çıkarmanız gerekir.
BLS CAPTCHA formatını değiştirirse ne olur?
Format değişirse görüntü çıkarma kodunun güncellenmesi gerekebilir. CaptchaAI API parametreleri (method=bls, talimatlar, resimler) aynı kalacaktır.