Izgara görüntüsü CAPTCHA çözme, görüntü kalitesi, format uyuşmazlıkları veya yanlış çözüm uygulaması nedeniyle başarısız olabilir. İşte en yaygın hatalar ve bunların nasıl çözüleceği.
Resim gönderme hataları
ERROR_WRONG_FILE_EXTENSION
Neden: Yüklenen dosya geçerli bir resim biçimi değil.
Düzeltme:
- Yalnızca PNG veya JPEG biçimini kullanın
- Base64 dizesinin düzgün şekilde kodlandığını doğrulayın
- Göndermeden önce
data:image/...;base64,önekini kaldırın
# WRONG — includes data URI prefix
body = "data:image/png;base64,iVBORw0KGgo..."
# CORRECT — raw base64 only
body = "iVBORw0KGgo..."
ERROR_TOO_BIG_CAPTCHA_FILESIZE
Neden: Resim maksimum dosya boyutunu (genellikle 600 KB) aşıyor.
Düzeltme:
from PIL import Image
import io
import base64
# Resize if too large
img = Image.open("captcha.png")
if img.width > 600:
ratio = 600 / img.width
img = img.resize((600, int(img.height * ratio)), Image.LANCZOS)
buffer = io.BytesIO()
img.save(buffer, format="PNG")
b64 = base64.b64encode(buffer.getvalue()).decode()
ERROR_ZERO_CAPTCHA_FILESIZE
Neden: Boş dosya veya resim çıkarma işlemi başarısız oldu.
Düzeltme:
- Çıkarmadan önce resim öğesinin yüklendiğini doğrulayın
srcözelliğinin boş olmadığını kontrol edin- Geç yüklenen görselleri bekleyin
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Wait for image to load
WebDriverWait(driver, 10).until(
lambda d: d.find_element(By.CSS_SELECTOR, ".captcha img").get_attribute("complete") == "true"
)
Hataları çözme
ERROR_CAPTCHA_UNSOLVABLE
Neden: Görüntü çok bulanık, bozuk veya nesneler tanınmıyor.
Düzeltme:
- Görüntüyü tam çözünürlükte yakalayın; ölçeği küçültmeyin
- Izgarayı engelleyen kaplama veya filigran olmadığından emin olun
- Yeni bir captcha ile yeniden deneyin (bazı zorluklar doğası gereği belirsizdir)
Yanlış hücreler belirlendi
Neden: Düşük görüntü kalitesi veya kısmi yakalama.
Düzeltme:
- Kenarlıklar dahil tüm captcha öğesinin ekran görüntüsünü alın
- Çok sıkı kırpmayın; birkaç piksel kenar boşluğu ekleyin
- Yakalanan görüntüyü kaydedip manuel olarak inceleyerek doğrulayın
# Take a proper element screenshot
captcha_el = driver.find_element(By.CSS_SELECTOR, "#captcha-container")
captcha_el.screenshot("debug_captcha.png")
# Open and check manually
from PIL import Image
Image.open("debug_captcha.png").show()
Çözüm uygulama hataları
Tek tek dizin hataları
Neden: 1 tabanlı API yanıtı ile 0 tabanlı dizi dizini oluşturma arasında uyumsuzluk.
# API returns "1,3,5" (1-based)
solution = "1,3,5"
indices = [int(i) for i in solution.split(",")]
# DON'T: use directly as array index
# cells[1], cells[3], cells[5] ← WRONG (off by one)
# DO: convert to 0-based
for idx in indices:
cells[idx - 1].click() # 1→0, 3→2, 5→4
Hücreler tıklamalara yanıt vermiyor
Neden: Tıklama hedefi yanlış — yer paylaşımı, iframe veya gölge DOM.
Düzeltme:
# Check if captcha is in an iframe
iframes = driver.find_elements(By.TAG_NAME, "iframe")
for iframe in iframes:
if "captcha" in iframe.get_attribute("src").lower():
driver.switch_to.frame(iframe)
break
# Now find and click cells
cells = driver.find_elements(By.CSS_SELECTOR, ".grid-cell")
Dinamik ızgara — döşemeler tıklatıldıktan sonra değişir
Neden: reCAPTCHA tarzı dinamik ızgaralar döşemelerin yerini alıyor.
Düzeltme: reCAPTCHA için resim yöntemi yerine jeton yöntemini kullanın:
# Token method handles dynamic grids automatically
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "SITE_KEY",
"pageurl": "https://example.com",
"json": 1
})
Zaman aşımı hataları
Çözüm geri dönmeden önce Captcha'nın süresi doluyor
Neden: Izgara CAPTCHA'larının geçerliliği genellikle 2-3 dakika içinde sona erer.
Düzeltme:
- Görüntüyü çekildikten hemen sonra gönderin
- Çözüm 60 saniyeden uzun sürerse yenileyip yeniden deneyin
CAPCHA_NOT_READY süresiz olarak döngüye giriyor
Neden: Görev sessizce başarısız olmuş olabilir.
Düzeltme: Maksimum yeniden deneme sayısını ayarlayın ve hataları yönetin:
for attempt in range(30):
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") not in ["CAPCHA_NOT_READY"]:
break # Actual error, stop polling
raise Exception("Grid captcha solve failed — refresh and retry")
Hata ayıklama kontrol listesi
| Kontrol et | Eylem |
|---|---|
| Resim formatı mı? | PNG veya JPEG, düzgün şekilde kodlanmış |
| Resim boyutu? | 600 KB'ın altında |
| Tam ızgara yakalandı mı? | Izgaranın tamamını kenar boşluklarıyla birlikte ekle |
| Görüntü kalitesi? | Net, bulanık veya küçültülmemiş |
| Çözüm biçimi? | Virgülle ayrılmış dizinleri doğru şekilde ayrıştırın |
| Endeks tabanı mı? | Diziler için 1 tabanlıyı 0 tabanlıya dönüştürme |
| Iframe bağlamı? | Varsa captcha iframe'e geçin |
| Captcha'nın süresi doldu mu? | Yakalandıktan hemen sonra gönderin |
SSS
Hangi görüntü formatı en iyi sonuçları verir?
PNG, kayıpsız olduğu için en iyi sonuçları verir. JPEG çalışır ancak yoğun sıkıştırma hücre sınırlarını bulanıklaştırabilir ve doğruluğu azaltabilir.
Talimat metnini ızgara görselleriyle birlikte eklemeli miyim?
recaptcha=1'li method=post için talimat gerekli değildir; çözücü, nesneleri görsel olarak tanımlar. method=bls için her zaman talimat metnini ekleyin.
Birden fazla grid CAPTCHA'sını paralel olarak çözebilir miyim?
Evet. Her çözüm bağımsızdır. Birden fazla görev gönderin ve her birini ayrı ayrı oylayın.
Izgara standart olmayan boyutlara sahipse ne olur?
CaptchaAI görüntüyü olduğu gibi analiz eder. Standart olmayan ızgaralar (örneğin, 5×3, 2×4) sabit ızgara varsayımlarından ziyade görsel analize dayalı olarak ele alınır.