Skip to content
API
Captcha Grid
Temu

Temu Grid Captcha

Ikhtisar

Temu Grid Captcha adalah captcha pemilihan grid: halaman menampilkan grid ubin dan pemecah harus mengembalikan sel mana yang harus diklik (indeks berbasis 0, urutan baris: kiri ke kanan, atas ke bawah).

🔲

Field task.image mengodekan gambar grid sebagai satu string Base64. Tidak diperlukan field other tambahan.

Temu Grid Captcha UI example

1. Buat Tugas

Format Pengiriman Gambar

Gambar grid Temu Grid Captcha request payload (grid)

Permintaan

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

Parameter

Nama ParameterTipe DataWajib?Deskripsi
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyestemu
task.imagestringyesGambar grid yang dikodekan Base64

Contoh Permintaan

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

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
clientKeystringyesAPI key
taskIdstringyesTaskId 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.

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 periksa lagi
  • errorId > 0: Kesalahan sistem, periksa errorCode dan errorDescription

Contoh Integrasi

import requests
import base64
import time
 
def solve_temu(grid_path, api_key='YOUR_API_KEY'):
    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': 'temu',
                'image': grid_b64
            }
        }
    )
    result = create_resp.json()
 
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
 
    task_id = result['taskId']
 
    # Langkah 2: Periksa 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']  # e.g. "0,2,5"
 
# Penggunaan
indices = solve_temu('grid.jpg', 'YOUR_API_KEY')
print('Sel yang perlu diklik:', indices)

Kode Kesalahan Umum

Kode KesalahanDeskripsiCatatan
0successBerhasil
1processingSedang Diproses
2missing required fieldsField wajib tidak ada, periksa parameter
3task not supportedTipe tugas tidak didukung
4task creation failedPembuatan tugas gagal
5client key does not existAPI key tidak ada, periksa kunci
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 Achicaptcha API untuk Temu Grid Captcha, ikuti prinsip-prinsip berikut:

1. Pengkodean Gambar

  • Kirim hanya gambar grid sebagai satu string Base64
  • Jangan sertakan awalan data:image/...;base64, — hanya Base64 mentah
  • Pastikan gambar sudah sepenuhnya dimuat dan dikodekan sebelum dikirim

2. Interval Pemeriksaan

  • Tunggu setidaknya 2 detik antara pemeriksaan hasil
  • Jangan membanjiri API dengan permintaan berurutan
  • Tetapkan batas waktu untuk menghindari loop tak terbatas (disarankan: 60 detik)

3. 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

4. Logika Percobaan Ulang

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

5. Keamanan API Key

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

Tautan berguna: