Troubleshooting

Kesalahan dan Perbaikan Umum Grid Image CAPTCHA

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 googlekey dan pageurl yang 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:

  1. Submit gambar segera setelah capture — jangan tunda dengan proses lain dulu
  2. 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:

Komentar dinonaktifkan untuk artikel ini.