Grid image CAPTCHA Anda gagal solve terus-menerus? Penyebabnya hampir selalu ada di salah satu dari empat titik: pengiriman gambar ke API, kualitas gambar itu sendiri, cara memetakan hasil ke elemen halaman, atau captcha yang keburu kedaluwarsa. Begitu tahu titik masalahnya, perbaikannya biasanya cuma satu-dua baris kode.
Panduan ini merangkum error yang paling sering dilaporkan tim automation dan scraping di Indonesia — dari ERROR_WRONG_FILE_EXTENSION sampai CAPCHA_NOT_READY yang looping tanpa henti. Butuh jawaban cepat, langsung ke checklist di bawah.
Empat kategori masalah yang dibahas:
- Pengiriman gambar — format, encoding, ukuran file
- Kualitas gambar — resolusi, blur, watermark, cakupan grid
- Penerapan solusi — indeks sel, target klik, grid dinamis
- Timeout — captcha kedaluwarsa sebelum solusi sempat dipakai
| Kode Error / Gejala | Kategori |
|---|---|
ERROR_WRONG_FILE_EXTENSION |
Pengiriman gambar |
ERROR_TOO_BIG_CAPTCHA_FILESIZE |
Pengiriman gambar |
ERROR_ZERO_CAPTCHA_FILESIZE |
Pengiriman gambar |
ERROR_CAPTCHA_UNSOLVABLE |
Kualitas gambar |
| Sel salah teridentifikasi | Kualitas gambar |
| Index off-by-one | Penerapan solusi |
| Klik tidak berefek | Penerapan solusi |
| Grid berubah sendiri | Penerapan solusi |
| Captcha expired sebelum dipakai | Timeout |
CAPCHA_NOT_READY looping |
Timeout |
Checklist Cepat: Diagnosis Error Grid Image CAPTCHA
| Yang Dicek | Solusi Cepat |
|---|---|
| Format PNG/JPEG? | Base64 tanpa prefix data:image/...;base64, |
| Di bawah 600KB? | Resize dengan Pillow |
| Grid tertangkap utuh? | Screenshot elemen + margin piksel |
| Gambar tajam? | Resolusi penuh, jangan downscale |
| Solusi terparse benar? | Split berdasarkan koma |
| Indeks basis-0? | cells[idx - 1], bukan cells[idx] |
| Sudah cek iframe? | driver.switch_to.frame() dulu |
| Dikirim sebelum expired? | Submit segera, expired 2–3 menit |
Error Grid Image CAPTCHA Saat Kirim Gambar ke API
CaptchaAI menolak file sebelum memprosesnya — cek dari response API.
ERROR_WRONG_FILE_EXTENSION
Penyebab: File bukan format gambar valid.
Perbaikan:
- Gunakan PNG atau JPEG saja
- Pastikan base64 dikodekan benar
- Hapus prefix
data:image/...;base64,sebelum mengirim
# WRONG — includes data URI prefix
body = "data:image/png;base64,iVBORw0KGgo..."
# CORRECT — raw base64 only
body = "iVBORw0KGgo..."
Kalau file yang dikirim sudah lolos ketiga poin di atas tapi errornya tetap muncul, cek juga apakah proxy atau middleware di jalur request ikut mengubah encoding-nya.
ERROR_TOO_BIG_CAPTCHA_FILESIZE
Penyebab: Gambar melebihi ukuran file maksimum (umumnya 600KB). Perbaikan:
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()
Resize di sisi klien lebih cepat daripada menolak-kirim ulang — terapkan sebagai langkah rutin sebelum submit, bukan cuma saat error muncul.
ERROR_ZERO_CAPTCHA_FILESIZE
Penyebab: File kosong, atau ekstraksi gambar dari halaman gagal — biasanya karena elemen gambar belum selesai dimuat, atribut src kosong, atau gambarnya lazy-loaded dan diekstrak sebelum siap.
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"
)
Error Grid Image CAPTCHA Saat Proses Solving
ERROR_CAPTCHA_UNSOLVABLE
Penyebab: Gambar terlalu buram, terdistorsi, atau objeknya sulit dikenali. Ambil gambar di resolusi penuh, jangan perkecil, dan pastikan tidak ada overlay atau watermark yang menutupi grid. Kalau sudah begitu tapi tetap gagal, coba lagi dengan captcha baru — sebagian challenge memang ambigu dari sananya.
CaptchaAI Salah Pilih Sel
Penyebab: Kualitas gambar rendah atau pengambilan cuma sebagian.
Perbaikan:
- Screenshot seluruh elemen captcha, termasuk border
- Jangan crop terlalu rapat — sisakan margin piksel
- Simpan gambar hasil capture lalu cek manual
# 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()
Screenshot yang disimpan ini juga berguna sebagai bukti kalau Anda perlu membandingkan hasil sebelum dan sesudah ganti strategi capture.
Error Saat Menerapkan Solusi ke Halaman
Salah Hitung Indeks (Off-by-One)
Penyebab: Respons API berbasis 1, array di kode Anda berbasis 0.
# 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
Klik di Sel Tidak Berefek
Penyebab: Target klik salah — overlay, iframe, atau shadow DOM. Cek dulu apakah captcha-nya ada di dalam iframe sebelum menyalahkan selector:
# 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")
Grid Berubah Sendiri Setelah Diklik
Penyebab: Grid dinamis ala reCAPTCHA mengganti tile setelah diklik.
Perbaikan: Pakai metode token untuk reCAPTCHA:
# 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
})
Metode token bergantung sepenuhnya pada
googlekeydanpageurlyang benar — kalau dua parameter itu salah, hasilnya bukan grid yang gagal, tapi token yang ditolak di sisi target.
Error Timeout Grid Image CAPTCHA: Kedaluwarsa Sebelum Sempat Dipakai
Solusi Baru Kembali Setelah Captcha Sudah Expired
Penyebab: Grid CAPTCHA umumnya kedaluwarsa dalam 2–3 menit. Dua langkah berikut biasanya cukup:
- Submit gambar segera setelah capture — jangan tunda dengan proses lain dulu
- Kalau solve makan waktu lebih dari 60 detik, refresh dan coba lagi daripada menunggu
Kasus umum di tim scraping Indonesia: worker jalan dari AWS ap-southeast-1 (Singapura) atau GCP asia-southeast2 (Jakarta), tapi koneksinya lewat jaringan mobile kantor yang throughput-nya naik-turun. Latency tinggi plus jendela expired pendek bikin polling telat menangkap hasil, padahal solve-nya sudah selesai. Pindahkan capture-dan-submit ke region lebih dekat endpoint, atau perpendek interval polling.
CAPCHA_NOT_READY Looping Tanpa Henti
Penyebab: Task kemungkinan gagal secara diam-diam.
Perbaikan: Tetapkan jumlah percobaan ulang maksimum dan tangani kegagalannya:
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")
Pola debug yang sama berlaku di semua kategori di atas: isolasi dulu di kategori mana error muncul (checklist di awal artikel), baru masuk ke perbaikan spesifik kode errornya.
Pertanyaan Umum Seputar Error Grid Image CAPTCHA
Kenapa error grid image captcha bisa muncul tiba-tiba padahal script kemarin masih normal?
Biasanya ada perubahan kecil di halaman target — markup gambar berubah, ukuran file membesar, atau elemen di-load lazy.
Format gambar mana yang paling stabil, PNG atau JPEG?
PNG paling stabil karena lossless. JPEG bisa dipakai, tapi kompresi berat berisiko mengaburkan batas sel.
Apakah error di atas berasal dari sisi CaptchaAI atau dari script saya sendiri?
Mayoritas error di sini berasal dari pengiriman gambar atau parsing hasil di script Anda, bukan dari proses solve.
Pengecualiannya cuma ERROR_CAPTCHA_UNSOLVABLE — itu murni soal kualitas gambar yang dikirim, bukan bug di kode Anda.
Bisakah saya jalankan banyak task grid image captcha sekaligus tanpa kena limit?
Bisa. CaptchaAI menghitung concurrency berdasarkan thread, bukan per solve, jadi Anda bisa submit banyak task sekaligus selama masih dalam alokasi thread.
Apa yang harus dilakukan kalau grid captcha selalu keburu expired sebelum solve saya selesai?
Submit gambar sesegera mungkin setelah capture, bukan setelah proses lain selesai dulu.
Kalau masih sering expired, perpendek interval polling dan jalankan worker dekat endpoint API — lihat contoh region AWS/GCP di bagian timeout di atas.
Panduan Terkait
Kalau checklist dan perbaikan di atas belum menuntaskan masalah Anda, tiga panduan berikut membahas alur grid image CAPTCHA secara lebih lengkap: