ReCAPTCHA
Ringkasan
Google reCAPTCHA adalah sistem captcha paling populer di dunia, digunakan oleh jutaan website untuk melindungi dari spam dan bot. Achicaptcha saat ini mendukung reCAPTCHA v2 dengan tingkat keberhasilan tinggi.
⚠️
Saat ini Achicaptcha hanya mendukung reCAPTCHA v2. reCAPTCHA v3 dan Enterprise belum didukung.

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 | RecaptchaV2TaskProxyless untuk penyelesaian ultra-cepat RecaptchaV2TaskProxylessNormal untuk penyelesaian normal |
task.websiteURL | string | ya | URL website yang berisi captcha |
task.websiteKey | string | ya | reCAPTCHA sitekey |
Contoh Request
POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}
}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": "03AGdBq27QGA96FJRo3mtz..."
}Penjelasan Status
errorId = 0danstatus = ready: Berhasil diselesaikan, baca hasil disolutionerrorId = 0danstatus = processing: Sedang menyelesaikan captcha, tunggu 2 detik dan coba lagierrorId > 0: Error sistem, mengembalikan kode error dan deskripsi
Contoh Integrasi
import requests
import time
def solve_recaptcha_v2(website_url, website_key, 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': 'RecaptchaV2TaskProxyless',
'websiteURL': website_url,
'websiteKey': website_key
}
}
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
website_url = 'https://www.google.com/recaptcha/api2/demo'
website_key = '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-'
token = solve_recaptcha_v2(website_url, website_key, 'YOUR_API_KEY')
print('Token reCAPTCHA:', token)Kode Error Umum
| Kode Error | Deskripsi | Catatan |
|---|---|---|
| 0 | sukses | Sukses |
| 1 | diproses | 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 kredit |
| 7 | task gagal, silakan buat task baru | Task gagal, silakan buat task baru |
| 8 | task ID tidak ada | Task ID tidak ada |
Best Practice
Untuk hasil terbaik saat menggunakan API Achicaptcha, ikuti prinsip-prinsip berikut:
1. Validasi Site Key
- Periksa site key sebelum mengirim request
- Pastikan site key yang diperoleh dari atribut
data-sitekeyakurat - Verifikasi URL website sesuai dengan halaman yang berisi captcha
2. Tangani Timeout
- Token memiliki waktu kadaluarsa (biasanya 120 detik)
- Gunakan token segera setelah menerima
- Jangan cache token terlalu lama
3. Interval Polling
- Tunggu setidaknya 2 detik antara pengecekan hasil
- Jangan spam API dengan terlalu banyak request berturut-turut
- Atur timeout untuk menghindari infinite loop (disarankan 120 detik)
4. Logika Retry
- Implementasikan retry untuk error sementara seperti
ERROR_NO_SLOT_AVAILABLE - Gunakan exponential backoff saat retry
- Batasi jumlah maksimum percobaan retry
5. Keamanan API Key
- Jangan hardcode API key dalam kode
- Gunakan environment variable
- Jangan expose API key di sisi client
Link berguna: