Getting Started

CaptchaAI Quickstart: Pemecahan CAPTCHA Pertama Anda dalam 5 Menit

Anda butuh token CAPTCHA yang valid supaya alur otomasi bisa lanjut, dan Anda ingin membuktikan CaptchaAI benar-benar bekerja sekarang — bukan setelah membaca dokumentasi satu jam. Panduan ini membawa Anda dari akun kosong ke satu token Cloudflare Turnstile yang benar-benar terselesaikan dalam sekitar lima menit, hanya dengan sekali submit dan satu loop polling.

Kabar baiknya: apa pun tipe CAPTCHA yang Anda tangani nanti, alurnya identik. Semua tipe yang didukung CaptchaAI mengikuti empat langkah yang sama:

  1. Submit — kirim detail CAPTCHA ke in.php
  2. Simpan task ID dari response
  3. Polling — cek res.php setiap 5 detik sampai hasil siap
  4. Pakai token — injeksikan token ke halaman atau request target

Kuasai loop ini sekali, dan menambah reCAPTCHA v2, GeeTest v3, atau OCR gambar nanti cuma soal mengganti beberapa parameter.


Langkah 0: siapkan API key

  1. Daftar di captchaai.com
  2. Buka dashboard API
  3. Salin API key sepanjang 32 karakter

Akun Anda perlu thread aktif untuk mengirim task. Jika masih tahap evaluasi, hubungi support untuk thread trial. Plan berbayar dimulai dari BASIC ($15/bulan, 5 thread) dengan solve tak terbatas per thread — model biaya tetap ini pas untuk tim scraping yang volumenya naik-turun, karena tagihan tidak ikut naik seiring jumlah solve.


Langkah 1: kirim CAPTCHA pertama

Contoh di bawah menyelesaikan Cloudflare Turnstile, salah satu tipe yang paling sering muncul di form login dan pendaftaran. Anda cuma perlu dua nilai dari halaman target:

  • sitekey — kunci publik widget Turnstile (ada di atribut data-sitekey atau parameter script Turnstile, selalu diawali 0x)
  • pageurl — URL lengkap halaman tempat widget dimuat

Pilih salah satu bahasa di bawah; payload-nya sama persis, hanya sintaksnya yang berbeda.

cURL

curl -X POST "https://ocr.captchaai.com/in.php" \
  -d "key=YOUR_API_KEY" \
  -d "method=turnstile" \
  -d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
  -d "pageurl=https://staging.example.com/qa-login" \
  -d "json=1"

Python

import requests

response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "turnstile",
    "sitekey": "0x4AAAAAAAC3DHQFLr1GavNl",
    "pageurl": "https://staging.example.com/qa-login",
    "json": 1,
})
print(response.json())

Node.js

const response = await fetch("https://ocr.captchaai.com/in.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: "YOUR_API_KEY",
    method: "turnstile",
    sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
    pageurl: "https://staging.example.com/qa-login",
    json: "1",
  }),
});
console.log(await response.json());

PHP

<?php
$response = file_get_contents("https://ocr.captchaai.com/in.php?" . http_build_query([
    "key"       => "YOUR_API_KEY",
    "method"    => "turnstile",
    "sitekey"   => "0x4AAAAAAAC3DHQFLr1GavNl",
    "pageurl"   => "https://staging.example.com/qa-login",
    "json"      => 1,
]));
echo $response;

Langkah 2: simpan task ID

Response yang sukses berbentuk seperti ini:

{
  "status": 1,
  "request": "71823469"
}

Field request berisi task ID Anda — simpan, karena nilai inilah yang dipakai untuk mengambil hasil.

Kalau status bernilai 0, ada yang salah dan kode error muncul di field request. Lima error yang paling sering menghadang di panggilan pertama:

Error Arti Solusi
ERROR_WRONG_USER_KEY Format API key salah Cek 32 karakter
ERROR_KEY_DOES_NOT_EXIST API key tidak ditemukan Cocokkan dengan dashboard
ERROR_ZERO_BALANCE Tidak ada thread tersedia Top up atau tunggu thread bebas
ERROR_PAGEURL Parameter pageurl hilang Tambahkan URL lengkap
ERROR_WRONG_GOOGLEKEY sitekey kosong atau salah Ekstrak ulang sitekey (Turnstile diawali 0x)

Langkah 3: polling hasil

Jangan langsung polling. Beri jeda 15 detik dulu supaya token sempat diproses, baru cek res.php setiap 5 detik sampai hasil keluar. Selama masih diproses, API membalas CAPCHA_NOT_READY; teruskan loop sampai status bernilai 1.

Python

import time

time.sleep(15)

while True:
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": "71823469",
        "json": 1,
    }).json()

    if result.get("request") == "CAPCHA_NOT_READY":
        time.sleep(5)
        continue

    if result.get("status") == 1:
        token = result["request"]
        print(f"Solved! Token: {token[:60]}...")
        break

    raise RuntimeError(result)

Node.js

await new Promise((r) => setTimeout(r, 15000));

while (true) {
  const r = await fetch(
    `https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=71823469&json=1`,
  );
  const data = await r.json();
  if (data.request === "CAPCHA_NOT_READY") {
    await new Promise((r) => setTimeout(r, 5000));
    continue;
  }
  if (data.status === 1) {
    console.log("Solved:", data.request.slice(0, 60));
    break;
  }
  throw new Error(JSON.stringify(data));
}

Begitu selesai, field request berganti dari CAPCHA_NOT_READY menjadi token CAPTCHA yang siap dipakai.


Langkah 4: pakai token

Cara memasang token tergantung tipe CAPTCHA-nya:

  • Turnstile / reCAPTCHA — tulis token ke field cf-turnstile-response atau g-recaptcha-response, atau panggil callback halaman.
  • OCR gambar — masukkan teks hasil ke kolom jawaban.
  • GeeTest v3 — rangkai beberapa field hasil sesuai yang diminta situs.

Untuk Turnstile, injeksi paling ringkas langsung di browser:

document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();

Setelah field terisi, submit form seperti biasa. Ingat: token Turnstile dan reCAPTCHA bersifat sekali pakai dan hanya berlaku sekitar 120 detik — pakai segera, jangan di-cache.


Kesalahan umum di panggilan pertama

Hal-hal kecil ini menjegal hampir semua orang di hari pertama. Cek satu per satu sebelum membuka tiket support:

  • Ada spasi ikut tersalin di API key. Hapus spasi di awal dan akhir sebelum memakainya.
  • Protokol hilang di pageurl. Nilai wajib diawali https://..., bukan sekadar nama domain.
  • Polling terlalu dini. Mengecek di detik ke-0 cuma menghasilkan CAPCHA_NOT_READY berulang dan membuang satu slot thread. Tunggu 15 detik dulu.
  • Polling terlalu sering. Interval 5 detik sudah cukup; lebih rapat hanya menambah beban tanpa mempercepat hasil.
  • Lupa json=1 tapi mem-parse sebagai JSON. Tanpa json=1, API membalas teks biasa seperti OK|71823469, dan memanggil .json() langsung memicu error.
  • Thread habis. Kalau muncul ERROR_ZERO_BALANCE, semua thread sedang terpakai — lihat daftar kode error API dan cek alokasi thread pada plan Anda.

Menjalankan dari region Indonesia

Kalau worker Anda deploy di AWS ap-southeast-3 (Jakarta) atau ap-southeast-1 (Singapura), jarak jaringan ke endpoint solver menambah beberapa puluh milidetik per request — kecil dibanding waktu penyelesaian, tapi terasa saat Anda menjalankan ratusan task paralel. Untuk menaikkan throughput, tambah jumlah thread, bukan frekuensi polling. Dan untuk pekerjaan scraping, patuhi UU Pelindungan Data Pribadi (UU 27/2022): ambil hanya data yang memang berhak Anda proses dan hindari data pribadi.


Pertanyaan umum

Berapa lama waktu penyelesaian Turnstile biasanya?

Umumnya belasan hingga puluhan detik. Karena itu contoh di atas menunggu 15 detik sebelum polling pertama, lalu mengecek tiap 5 detik. Kalau CAPCHA_NOT_READY bertahan lebih dari satu menit, kemungkinan task tersangkut — batalkan dan kirim ulang.

Apakah hCaptcha bisa diselesaikan lewat alur ini?

Belum. hCaptcha dan FunCaptcha (Arkose Labs) saat ini tidak didukung, jadi alur ini tidak akan menyelesaikannya. Yang tersedia mencakup reCAPTCHA v2/v3, Cloudflare Turnstile dan Challenge, GeeTest v3, serta OCR gambar dan grid.

Bisakah satu API key dipakai untuk banyak tipe CAPTCHA?

Bisa. API key Anda tidak terikat ke satu tipe — cukup ganti nilai method (misalnya userrecaptcha untuk reCAPTCHA atau post untuk OCR gambar) dan sesuaikan parameternya. Loop submit → polling → pakai token tetap sama persis.

Berapa thread yang saya perlukan untuk memulai?

Untuk belajar dan uji coba, thread trial sudah cukup menjalankan alur ini dari ujung ke ujung. Saat siap produksi, plan termurah BASIC ($15/bulan, 5 thread) memproses hingga 5 CAPTCHA sekaligus, dengan solve tak terbatas per thread. Tambah thread hanya ketika Anda benar-benar menjalankan banyak task paralel.


Langkah selanjutnya

Komentar dinonaktifkan untuk artikel ini.