Skip to content
API
Captcha Geetest

Geetest Image Captcha

Ringkasan

Geetest adalah sistem captcha populer di Tiongkok dan negara-negara Asia, menggunakan tantangan interaktif seperti menyeret puzzle dan pengenalan gambar. Kami menyediakan layanan untuk memecahkan semua jenis Geetest Image (Geetest v3, Geetest v4, ...) di browser, emulator, dan phone farm.

🧩

Dokumentasi ini memandu Anda menangani Geetest Captcha yang mengharuskan pengguna mengidentifikasi dan mengklik objek secara berurutan pada gambar latar belakang. Untuk captcha jenis seret, silakan ikuti instruksi untuk Tiktok Captcha jenis seret.

Geetest Captcha

1. Buat Task

Format Pengiriman Gambar

Pisahkan gambar ikon dan gambar latar belakang seperti gambar di bawah ini Contoh Gambar Click

Request

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

Parameter

Nama ParameterTipe DataWajib?Deskripsi
clientKeystringyaApi key
task.typestringyaGeetestImageCaptchaTask
task.imagestringyaDaftar gambar base64 mengikuti prinsip: icon_1|icon_2|...|icon_n|background (String Base64 dipisahkan dengan |)
task.subTypeintyaJenis captcha: 7: Pilih objek secara berurutan

Contoh Request

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GeetestImageCaptchaTask",
    "image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...",
    "subType": 7
  }
}

Catatan: Parameter image harus berupa string base64 dari gambar ikon dan latar belakang, dipisahkan dengan |. Urutan: icon_1|icon_2|icon_3|...|background

Response

Ketika berhasil, server mengembalikan errorId = 0 dan taskId

{
  "errorId": 0,
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

2. Dapatkan Hasil

Request

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

Parameter

Nama ParameterTipe DataWajib?Deskripsi
clientKeystringyaApi key
taskIdstringyaTaskId yang diperoleh dari (1)

Contoh Request

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

Response

{
  "errorId": 0,
  "status": "ready",
  "solution": "x1,y1,x2,y2,x3,y3"
}

Penjelasan Status

  • errorId = 0 dan status = ready: Berhasil dipecahkan, baca hasil di solution
  • errorId = 1 dan status = processing: Sedang memecahkan captcha, tunggu 1-2 detik dan coba lagi
  • errorId selain 0 dan 1: Error sistem, mengembalikan kode error dan deskripsi

Arti Hasil

  • solution: Mengembalikan koordinat untuk diklik pada captcha, format x1,y1,x2,y2,x3,y3,...
    • Setiap pasangan (x, y) mewakili koordinat piksel untuk diklik pada gambar latar belakang
    • Urutan klik sesuai dengan urutan ikon yang ditampilkan

Contoh Integrasi

import requests
import time
 
def solve_geetest_image(base64_images, sub_type=7, api_key='YOUR_API_KEY'):
    # base64_images: "icon1|icon2|icon3|background" - string base64 dipisahkan dengan |
    
    # Langkah 1: Buat task
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'GeetestImageCaptchaTask',
            'image': base64_images,
            'subType': sub_type
        }
    }
    
    response = requests.post(create_task_url, json=create_task_payload)
    result = response.json()
    
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
    
    task_id = result['taskId']
    
    # Langkah 2: Dapatkan hasil
    get_result_url = 'https://api.achicaptcha.com/getTaskResult'
    
    while True:
        time.sleep(2)  # Tunggu 2 detik
        
        get_result_payload = {
            'clientKey': api_key,
            'taskId': task_id
        }
        
        response = requests.post(get_result_url, json=get_result_payload)
        result = response.json()
        
        if result['errorId'] not in [0, 1]:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']  # "x1,y1,x2,y2,x3,y3"
        
        # Jika status == 'processing', lanjutkan loop
 
# Penggunaan
# Asumsikan Anda memiliki gambar base64
icon1_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon2_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon3_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
background_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
 
base64_images = f'{icon1_base64}|{icon2_base64}|{icon3_base64}|{background_base64}'
solution = solve_geetest_image(base64_images, 7, 'YOUR_API_KEY')
print('Koordinat Geetest:', solution)  # "x1,y1,x2,y2,x3,y3"
 
# Parse koordinat dan gunakan
coords = [int(c) for c in solution.split(',')]
for i in range(0, len(coords), 2):
    x, y = coords[i], coords[i + 1]
    print(f'Klik di ({x}, {y})')
    # Lakukan klik pada koordinat (x, y)

Kode Error Umum

Kode ErrorDeskripsiCatatan
0suksesBerhasil
1sedang diprosesSedang diproses
2field wajib tidak adaField wajib tidak ada, periksa parameter lagi
3task tidak didukungTipe task tidak didukung
4pembuatan task gagalPembuatan task gagal
5client key tidak adaAPI key tidak ada, periksa API key lagi
6saldo akun tidak cukupSaldo akun tidak cukup, tambahkan credits
7task gagal, silakan buat task baruTask gagal, silakan buat task baru
8task ID tidak adaTask ID tidak ada

Praktik Terbaik

Untuk hasil terbaik saat menggunakan Achicaptcha API untuk Geetest Image, ikuti prinsip-prinsip berikut:

1. Siapkan Gambar dalam Format yang Benar

  • Semua gambar harus dikodekan ke base64
  • Urutan gambar: icon_1|icon_2|...|icon_n|background
  • Gambar base64 dipisahkan dengan karakter |
  • Pastikan gambar latar belakang adalah yang terakhir dalam string

2. Gunakan Hasil dengan Benar

  • Hasil yang dikembalikan adalah string koordinat: x1,y1,x2,y2,x3,y3,...
  • Setiap pasangan (x, y) adalah koordinat piksel pada gambar latar belakang
  • Urutan klik sesuai dengan urutan ikon yang ditampilkan
  • Klik dengan tepat pada koordinat untuk menyelesaikan captcha

3. Interval Polling

  • Tunggu setidaknya 1-2 detik antara pemeriksaan hasil
  • Jangan spam API dengan terlalu banyak permintaan berturut-turut
  • Tetapkan timeout untuk menghindari loop tak terbatas (disarankan 60 detik)

4. Penanganan Error

  • Periksa errorId = 1 untuk status pemrosesan
  • Coba lagi untuk error sementara (errorId = 6, 7)
  • Buat task baru jika task saat ini gagal
  • Batasi jumlah maksimum percobaan ulang

5. Keamanan API Key

  • Jangan hardcode API key dalam kode
  • Gunakan variabel lingkungan
  • Jangan ekspos API key di sisi klien
  • Lakukan panggilan API dari backend/server

Link berguna: