Pemecahan Masalah

Kesalahan dan Pemecahan Masalah BLS CAPTCHA

Penyelesaian BLS CAPTCHA memiliki tantangan unik karena menggunakan implementasi khusus. Berikut kesalahan paling umum dan solusinya.


Kesalahan pengiriman API

ERROR_BAD_PARAMETERS

Penyebab: Parameter yang diperlukan tidak ada — baik instruksi maupun gambar.

Perbaikan:

# 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

Penyebab: Data gambar tidak valid base64 atau formatnya tidak didukung.

Perbaikan:

  • Pastikan gambar berkode base64 PNG atau JPEG
  • Hapus awalan data:image/...;base64,
  • Pastikan string base64 tidak terpotong
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

Penyebab: Kualitas gambar terlalu rendah, buram, atau instruksinya ambigu.

Perbaikan:

  • Ambil gambar dengan resolusi penuh
  • Pastikan teks instruksi diekstraksi dengan benar
  • Coba lagi — beberapa tantangan pada dasarnya lebih sulit

Kesalahan ekstraksi gambar

Gambar dimuat secara dinamis

Masalah: Gambar tidak ada di DOM saat halaman pertama kali dimuat.

Perbaikan: Tunggu hingga captcha dirender sepenuhnya:

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"))
)

Gambar adalah kanvas, bukan elemen img

Masalah: Beberapa implementasi BLS merender gambar pada elemen <canvas>.

Perbaikan: Ekstrak data kanvas sebagai base64:

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

Gambar di balik anti-hotlinking

Masalah: URL gambar menampilkan 403 saat diambil di luar browser.

Perbaikan: Ekstrak gambar dalam konteks browser:

# 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)

Kesalahan aplikasi solusi

Gambar yang dipilih salah

Penyebab: Urutan gambar tidak cocok antara ekstraksi dan tampilan.

Perbaikan: Pertahankan urutan yang konsisten:

# 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)

Indeks solusi tidak cocok

Penyebab: CaptchaAI mengembalikan indeks berbasis 1, tetapi kode Anda menggunakan berbasis 0.

Perbaikan:

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

Pengiriman formulir gagal setelah pemilihan yang benar

Penyebab: Bidang formulir atau token tambahan tidak ada.

Perbaikan: Periksa kolom tersembunyi yang harus dikirimkan bersama captcha:

# 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}")

Kesalahan batas waktu

Captcha kedaluwarsa sebelum penyelesaian selesai

Masalah: BLS CAPTCHA memiliki masa validitas yang singkat.

Perbaikan:

  • Ekstrak gambar dan segera kirimkan ke CaptchaAI
  • Jangan mengekstrak gambar lalu menunggu sebelum mengirimkannya
  • Jika penyelesaian memerlukan waktu >60 detik, captcha mungkin telah kedaluwarsa — segarkan dan coba lagi

Polling memakan waktu terlalu lama

Perbaikan: Pastikan Anda melakukan polling dengan benar:

# 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")

Daftar periksa debug

Periksa Tindakan
Instruksi diekstraksi? Cetak dan verifikasi teks instruksi
Gambar valid? Simpan base64 ke file dan buka untuk memverifikasi
Jumlah gambar benar? Bandingkan jumlah gambar yang dikirim vs yang ditampilkan
Urutan gambar sudah benar? Verifikasi pesanan DOM cocok dengan pesanan tampilan
Awalan Base64 dihapus? Hapus data:image/...;base64,
Format solusi? Parsing indeks berbasis 1 yang dipisahkan koma
Konversi indeks? Kurangi 1 untuk akses array berbasis 0

Pertanyaan Umum

Berapa banyak gambar yang harus saya kirim ke CaptchaAI?

Kirim semua gambar yang ditampilkan di CAPTCHA, biasanya 3–9. Gunakan image_base64_1 melalui image_base64_9.

Bagaimana jika pengajarannya dalam bahasa non-Inggris?

Kirim instruksi persis seperti yang ditampilkan. CaptchaAI menangani instruksi multibahasa.

Bisakah saya memuat gambar terlebih dahulu untuk mempercepat penyelesaian?

Tidak. BLS menghasilkan gambar unik per sesi. Anda harus mengekstraknya segar untuk setiap contoh captcha.

Bagaimana jika BLS mengubah format CAPTCHA-nya?

Jika formatnya berubah, kode ekstraksi gambar mungkin perlu diperbarui. Parameter API CaptchaAI (method=bls, instruksi, gambar) akan tetap sama.


Panduan Terkait

  • Cara Mengatasi BLS CAPTCHA Langkah demi Langkah
  • Referensi Kode Error CaptchaAI
Komentar dinonaktifkan untuk artikel ini.