Pemecahan Masalah

Kesalahan Koordinat Grid Image CAPTCHA: Diagnosis dan Perbaikan

Grid image CAPTCHA (reCAPTCHA v2 image challenge) mengembalikan indeks sel sebagai solusinya. Jika sel yang dikembalikan salah — mengklik tile yang salah atau mendapatkan ERROR_CAPTCHA_UNSOLVABLE — masalahnya biasanya ada pada cara Anda mengirim gambar, parameter ukuran grid, atau teks instruksi.


Cara Kerja Grid Image Solving

CaptchaAI menerima grid image Anda, menganalisis setiap sel, dan mengembalikan array indeks yang cocok dengan instruksi. Sel diberi nomor dari kiri ke kanan, atas ke bawah:

3×3 Grid:          4×4 Grid:
1 2 3              1  2  3  4
4 5 6              5  6  7  8
7 8 9              9  10 11 12
                   13 14 15 16

Responsnya terlihat seperti: [1, 3, 6, 9] — artinya sel 1, 3, 6, dan 9 berisi objek target.


Error Umum dan Perbaikannya

Ukuran Grid Salah

Kesalahan koordinat yang paling umum. Jika CAPTCHA berbentuk kotak 4×4 tetapi Anda mengirim grid_size=3x3, penomoran sel salah dan ubin yang salah dipilih.

# WRONG — 4×4 grid sent as 3×3
data = {
    "key": "YOUR_API_KEY",
    "method": "post",
    "grid_size": "3x3",      # Wrong!
    "img_type": "recaptcha",
    "instructions": "traffic lights",
    "json": 1
}

# CORRECT — match the actual grid
data = {
    "key": "YOUR_API_KEY",
    "method": "post",
    "grid_size": "4x4",      # Correct
    "img_type": "recaptcha",
    "instructions": "traffic lights",
    "json": 1
}

Cara mendeteksi ukuran grid secara terprogram:

from PIL import Image

img = Image.open("grid_captcha.png")
width, height = img.size

# reCAPTCHA grids are square. 3×3 tiles are ~100px each, 4×4 tiles are ~75px each
tile_width = width // 3
if width % 4 == 0 and (width // 4) < 100:
    grid_size = "4x4"
else:
    grid_size = "3x3"

print(f"Detected grid size: {grid_size}")

Gambar Terpotong atau Dimodifikasi

Mengirim gambar yang terpotong, diubah ukuran, atau screenshot halaman penuh akan mengubah alignment grid. CaptchaAI memerlukan gambar CAPTCHA asli persis seperti yang dirender.

Perbaikan: Ambil gambar langsung dari iframe reCAPTCHA, bukan screenshot halaman penuh.

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com")

# Switch to reCAPTCHA iframe
iframe = driver.find_element(By.CSS_SELECTOR, 'iframe[title*="recaptcha"]')
driver.switch_to.frame(iframe)

# Get the grid image element
grid_img = driver.find_element(By.CSS_SELECTOR, "img.rc-image-tile-wrapper img")
grid_img.screenshot("grid_captcha.png")  # Captures just the grid, not the whole page

Instruksi Salah atau Tidak Spesifik

Teks instruksi harus sesuai dengan yang diminta CAPTCHA. Instruksi yang tidak jelas menyebabkan pemilihan sel yang salah.

# WRONG — too vague
data["instructions"] = "select images"

# CORRECT — specific instruction from the CAPTCHA
data["instructions"] = "crosswalks"

Nilai instruksi umum: crosswalks, traffic lights, cars, buses, motorcycles, bicycles, fire hydrants, stairs, bridges, parking meters.


Offset Indeks Sel (0-based vs 1-based)

CaptchaAI mengembalikan indeks sel berbasis 1. Jika kode otomasi Anda menggunakan 0-based indexing, kurangi 1.

import json

# CaptchaAI returns 1-based indices
solution = json.loads(result["request"])  # e.g., [1, 3, 6, 9]

# Convert to 0-based for Selenium click automation
zero_based = [cell - 1 for cell in solution]

# Click grid cells using 0-based index
tiles = driver.find_elements(By.CSS_SELECTOR, ".rc-image-tile-wrapper img")
for idx in zero_based:
    tiles[idx].click()

Masalah Format Gambar

CaptchaAI mendukung JPG, JPEG, PNG, dan GIF. Format lain mengembalikan ERROR_WRONG_FILE_EXTENSION.

# WRONG — WebP or BMP
files = {"file": open("grid.webp", "rb")}  # Not supported

# CORRECT — convert to PNG first
from PIL import Image
img = Image.open("grid.webp")
img.save("grid.png", "PNG")
files = {"file": open("grid.png", "rb")}

Pohon keputusan

Grid cells are wrong
    ↓
Is grid_size correct (3x3 or 4x4)? → No → Fix grid_size parameter
    ↓ Yes
Is the image the original CAPTCHA (not cropped)? → No → Capture directly from iframe
    ↓ Yes
Is instruction text specific? → No → Use exact CAPTCHA instruction text
    ↓ Yes
Using 1-based indexing for clicks? → No → Convert solution to 0-based
    ↓ Yes
Image in supported format (JPG/PNG)? → No → Convert image format
    ↓ Yes
Report tiles to CaptchaAI via reportbad

Melaporkan Solusi yang Salah

Jika koordinat selalu salah meski parameter sudah benar, laporkan solusinya:

requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "reportbad",
    "id": task_id,
    "json": 1
})

Hal ini membantu CaptchaAI meningkatkan akurasi dan dapat mengembalikan biaya penyelesaian.


Pertanyaan Umum

Berapa ukuran grid yang didukung CaptchaAI?

Grid 3×3 dan 4×4. Ini adalah format reCAPTCHA image challenge standar.

Mengapa saya mendapatkan ERROR_CAPTCHA_UNSOLVABLE untuk grid image?

Kualitas gambar terlalu rendah, teks instruksi salah, atau gambar grid CAPTCHA tidak bisa dikenali. Pastikan Anda mengirim gambar asli yang belum terpotong dengan instruksi yang benar.

Sel saya offset satu. Apa yang salah?

CaptchaAI mengembalikan indeks 1-based. Jika kode Anda mengharapkan 0-based, kurangi 1 dari setiap indeks.


Panduan Terkait

  • Cara Solve Grid Image CAPTCHA via API
  • Referensi Kode Error CaptchaAI
  • Image CAPTCHA: Optimasi Kualitas Jawaban

Checklist Validasi Grid

  • Konfirmasi dimensi grid sesuai dengan koordinat yang diharapkan target sebelum submit jawaban apapun.
  • Normalisasikan scaling gambar dan viewport agar koordinat klik bertahan dari zoom browser dan perubahan device pixel ratio.
  • Tolak respons yang berada di luar grid yang dinyatakan, alih-alih meneruskan koordinat buruk secara diam-diam.
Komentar dinonaktifkan untuk artikel ini.