Funcaptcha Image
Ringkasan
FunCaptcha (juga dikenal sebagai Arkose Labs Captcha) adalah jenis captcha interaktif yang mengharuskan pengguna melakukan tindakan seperti memutar gambar, menyeret dan menjatuhkan objek untuk menyelesaikan tantangan. Ini digunakan oleh banyak situs web besar seperti Roblox, Epic Games, Outlook, dll.
🎮
FunCaptcha dirancang untuk melindungi dari bot sekaligus menciptakan pengalaman "menyenangkan" bagi pengguna melalui mini-game interaktif.

1. Buat Task
Request
POST https://api.achicaptcha.com/createTask
Parameter
| Nama Parameter | Tipe Data | Wajib? | Deskripsi |
|---|---|---|---|
clientKey | string | ya | Api key |
task.type | string | ya | FuncaptchaImageTask |
task.subType | string | ya | Nilai sama dengan 1 |
task.image | string | ya | Base64 dari gambar |
task.other | string | ya | Pertanyaan Contoh: "Use the arrows to rotate the object to face in the direction of the hand" |
Contoh Request
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FuncaptchaImageTask",
"subType": "1",
"image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...",
"other": "Use the arrows to rotate the object to face in the direction of the hand"
}
}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 Parameter | Tipe Data | Wajib? | Deskripsi |
|---|---|---|---|
clientKey | string | ya | Api key |
taskId | string | ya | TaskId 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": "1" // Indeks gambar yang perlu diklik (Dimulai dari 0)
}Penjelasan Status
errorId = 0danstatus = ready: Berhasil dipecahkan, baca hasil disolution.answer(array indeks gambar)errorId = 0danstatus = processing: Sedang memecahkan captcha, tunggu 2 detik dan coba lagierrorId > 0: Error sistem, mengembalikan kode error dan deskripsi error
Contoh Integrasi
import requests
import time
def solve_funcaptcha_image(image_base64, question, api_key='YOUR_API_KEY'):
# Langkah 1: Buat task
create_task_url = 'https://api.achicaptcha.com/createTask'
create_task_payload = {
'clientKey': api_key,
'task': {
'type': 'FuncaptchaImageTask',
'subType': '1',
'image': image_base64,
'other': question
}
}
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'] != 0:
raise Exception(result['errorDescription'])
if result['status'] == 'ready':
return result['solution']
# Jika status == 'processing', lanjutkan loop
# Penggunaan
image_base64 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...' # Base64 dari gambar
question = 'Use the arrows to rotate the object to face in the direction of the hand'
solution = solve_funcaptcha_image(image_base64, question, 'YOUR_API_KEY')
print('Solusi FunCaptcha:', solution)Kode Error Umum
| Kode Error | Deskripsi | Catatan |
|---|---|---|
| 0 | sukses | Berhasil |
| 1 | sedang diproses | Sedang diproses |
| 2 | field wajib tidak ada | Field wajib tidak ada, periksa parameter lagi |
| 3 | task tidak didukung | Tipe task tidak didukung |
| 4 | pembuatan task gagal | Pembuatan task gagal |
| 5 | client key tidak ada | API key tidak ada, periksa API key lagi |
| 6 | saldo akun tidak cukup | Saldo akun tidak cukup, tambahkan credits |
| 7 | task gagal, silakan buat task baru | Task gagal, silakan buat task baru |
| 8 | task ID tidak ada | Task ID tidak ada |
Praktik Terbaik
Untuk hasil terbaik saat menggunakan Achicaptcha API untuk FunCaptcha Image, ikuti prinsip-prinsip berikut:
1. Pemrosesan Gambar Base64
- Hanya menerima satu gambar. Untuk pengguna ponsel, gabungkan menjadi satu gambar besar sebelum mengirim
- Pastikan gambar dikodekan dengan benar dalam format Base64
- Hapus prefix
data:image/...;base64,jika ada - Periksa ukuran gambar wajar (tidak terlalu besar)
2. Pertanyaan
- Berikan pertanyaan yang tepat dari tantangan FunCaptcha
- Pertanyaan membantu sistem memahami jenis tantangan dengan lebih baik
- Contoh: "Use the arrows to rotate the object to face in the direction of the hand"
3. Interval Polling
- Tunggu setidaknya 2 detik antara pemeriksaan hasil
- Jangan spam API dengan terlalu banyak permintaan berturut-turut
- Tetapkan timeout untuk menghindari loop tak terbatas (disarankan 60 detik untuk tugas gambar)
4. Pemrosesan Hasil
- Hasil yang dikembalikan adalah satu angka (indeks dimulai dari 0)
- Gunakan hasil ini untuk mengirim ke FunCaptcha
5. Logika Coba Lagi
- Terapkan coba lagi untuk kesalahan sementara seperti
ERROR_NO_SLOT_AVAILABLE - Gunakan exponential backoff saat mencoba lagi
- Batasi jumlah maksimum percobaan ulang
6. Keamanan API Key
- Jangan hardcode API key dalam kode
- Gunakan variabel lingkungan
- Jangan ekspos API key di sisi klien
Link berguna: