Skip to content
API
Captcha Grid
Botion

Botion Grid Captcha

Ikhtisar

Botion adalah captcha pemilihan grid: halaman menampilkan gambar sampel referensi dan grid 3×3 dari ubin. Pemecah harus mengembalikan sel grid mana yang cocok dengan referensi (indeks berbasis 0, urutan baris: kiri ke kanan, atas ke bawah).

🔲

Field task.image mengenkode dua muatan Base64 yang digabungkan oleh | — gambar sampel terlebih dahulu, lalu gambar grid.

Botion captcha UI example

1. Buat Tugas

Format Pengiriman Gambar

Gambar sampel Botion request payload (sample | grid)

Gambar grid Botion request payload (sample | grid)

Permintaan

POST https://api.achicaptcha.com/createTask

Parameter

Nama ParameterTipe DataWajib?Deskripsi
clientKeystringyaKunci API
task.typestringyaGridCaptcha
task.subTypestringyabotion
task.imagestringyaBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — gambar sampel terlebih dahulu, lalu |, lalu gambar grid 3×3 (keduanya Base64, tanpa prefiks data:)
task.otherstringtidaktopk|grid_size. Default 3|3 jika dihilangkan

Contoh Permintaan

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridCaptcha",
    "subType": "botion",
    "image": "BASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE",
    "other": "3|3"
  }
}

Respons

Jika berhasil, server mengembalikan errorId = 0 dan taskId

{
  "errorId": 0,
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

2. Dapatkan Hasil

Permintaan

POST https://api.achicaptcha.com/getTaskResult

Parameter

Nama ParameterTipe DataWajib?Deskripsi
clientKeystringyaKunci API
taskIdstringyaTaskId yang diperoleh dari langkah (1)

Contoh Permintaan

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Respons

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "click": "0,2,5"
  }
}

solution.click adalah string indeks sel berbasis 0 (urutan baris) yang dipisahkan koma untuk diklik di grid 3×3.

Penjelasan Status

  • errorId = 0 dan status = ready: Berhasil dipecahkan, baca indeks sel di solution.click
  • errorId = 0 dan status = processing: Masih memproses, tunggu 2 detik dan polling lagi
  • errorId > 0: Kesalahan sistem, periksa errorCode dan errorDescription

Contoh Integrasi

import requests
import base64
import time
 
def solve_botion(sample_path, grid_path, api_key='YOUR_API_KEY', other='3|3'):
    with open(sample_path, 'rb') as f:
        sample_b64 = base64.b64encode(f.read()).decode()
    with open(grid_path, 'rb') as f:
        grid_b64 = base64.b64encode(f.read()).decode()
 
    # Langkah 1: Buat tugas
    create_resp = requests.post(
        'https://api.achicaptcha.com/createTask',
        json={
            'clientKey': api_key,
            'task': {
                'type': 'GridCaptcha',
                'subType': 'botion',
                'image': f'{sample_b64}|{grid_b64}',
                'other': other
            }
        }
    )
    result = create_resp.json()
 
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
 
    task_id = result['taskId']
 
    # Langkah 2: Poll untuk hasil
    while True:
        time.sleep(2)
        poll_resp = requests.post(
            'https://api.achicaptcha.com/getTaskResult',
            json={'clientKey': api_key, 'taskId': task_id}
        )
        result = poll_resp.json()
 
        if result['errorId'] != 0:
            raise Exception(result['errorDescription'])
 
        if result['status'] == 'ready':
            return result['solution']['click']  # mis. "0,2,5"
 
# Penggunaan
indices = solve_botion('sample.png', 'grid.png', 'YOUR_API_KEY')
print('Sel yang perlu diklik:', indices)

Kode Kesalahan Umum

Kode KesalahanDeskripsiCatatan
0successBerhasil
1processingMemproses
2missing required fieldsField yang diperlukan tidak ada, periksa parameter lagi
3task not supportedJenis tugas tidak didukung
4task creation failedPembuatan tugas gagal
5client key does not existKunci API tidak ada, periksa kunci API lagi
6insufficient account balanceSaldo akun tidak mencukupi, tambahkan kredit
7task failed, please create a new taskTugas gagal, buat tugas baru
8task ID does not existID tugas tidak ada

Praktik Terbaik

Untuk hasil terbaik saat menggunakan API Achicaptcha untuk Botion Grid Captcha, ikuti prinsip-prinsip ini:

1. Urutan Gambar

  • Selalu kirim gambar sampel (referensi) terlebih dahulu, lalu |, lalu gambar grid
  • Jangan sertakan prefiks data:image/...;base64, — hanya Base64 mentah
  • Pastikan kedua gambar sudah sepenuhnya dimuat dan dienkode sebelum dikirim

2. Parameter task.other

  • Formatnya adalah topk|grid_size (mis. 3|3)
  • Menghilangkannya akan menggunakan default 3|3, tetapi selalu atur secara eksplisit untuk menghindari perilaku tak terduga
  • grid_size yang salah akan merusak pemetaan indeks berbasis 0 di solution.click

3. Interval Polling

  • Tunggu setidaknya 2 detik antara pemeriksaan hasil
  • Jangan spam API dengan permintaan berturut-turut
  • Atur batas waktu untuk menghindari loop tak terbatas (disarankan: 60 detik)

4. Pemrosesan Hasil

  • solution.click adalah string indeks sel berbasis 0 (urutan baris, kiri ke kanan, atas ke bawah) yang dipisahkan koma
  • Pisahkan dengan , dan konversi ke bilangan bulat sebelum mengklik sel grid yang sesuai

5. Logika Percobaan Ulang

  • Terapkan percobaan ulang untuk kesalahan sementara seperti ERROR_NO_SLOT_AVAILABLE
  • Gunakan exponential backoff saat mencoba ulang
  • Batasi jumlah maksimum percobaan ulang

6. Keamanan Kunci API

  • Jangan hardcode kunci API di kode sumber
  • Gunakan variabel lingkungan atau manajer rahasia
  • Jangan pernah mengekspos kunci API di sisi klien

Tautan berguna: