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