Hampir setiap penurunan tingkat penyelesaian yang mendadak berujung pada satu dari empat penyebab — dan Anda bisa mengerucutkannya dalam hitungan menit, sebelum repot membuka tiket dukungan. Keempat tersangka utamanya:
- Kode error dari API CaptchaAI (saldo habis, thread penuh, API key salah).
- Sitekey atau parameter situs target yang berubah semalam.
- Proxy yang mulai diblokir atau melambat.
- Token yang kedaluwarsa sebelum sempat dikirim ke form.
Triase cepat: cocokkan gejala dengan tindakan pertama
Cocokkan pola yang Anda lihat dengan tindakan pertama yang paling mungkin berhasil. Sebagian besar kasus berhenti di baris pertama yang cocok.
| Skenario | Kemungkinan penyebab | Tindakan pertama |
|---|---|---|
Gagal total, semua ERROR_WRONG_USER_KEY |
API key tidak valid | Periksa ulang API key |
| Menurun bertahap selama beberapa hari | Degradasi proxy | Rotasi proxy |
| Tiba-tiba jatuh ke 0% | Sitekey atau halaman berubah | Ekstrak ulang parameter CAPTCHA |
| Solve berhasil tapi token ditolak situs | Token kedaluwarsa atau domain tidak cocok | Cek timing dan pageurl |
| Jalan di test site, gagal di target | Pembatasan spesifik situs | Bandingkan parameter antar situs |
Pastikan dulu penurunannya nyata: bandingkan dengan baseline
Buktikan dulu penurunannya nyata. Tanpa angka pembanding, "terasa lebih lambat" hanya firasat. Sandingkan metrik sekarang dengan baseline benchmark Anda.
| Metrik | Baseline | Saat ini | Delta | Perlu diselidiki? |
|---|---|---|---|---|
| Tingkat penyelesaian | 95% | ? | Turun > 5% = selidiki | |
| Waktu penyelesaian median | 15 detik | ? | Naik > 50% = selidiki | |
| Tingkat error | 2% | ? | > 5% = selidiki | |
| Tingkat penerimaan token | 98% | ? | Turun > 3% = situs berubah |
Pohon keputusan: dari gejala ke akar masalah
Kalau angkanya memang turun, mulai dari gejala lalu ikuti cabangnya. Sebagian besar kasus berhenti di satu cabang saja.
Solve rate dropped
├── Is the API returning errors? → Check error codes
│ ├── ERROR_WRONG_USER_KEY → API key issue
│ ├── ERROR_ZERO_BALANCE → Balance depleted
│ ├── ERROR_NO_SLOT_AVAILABLE → Rate limiting
│ └── ERROR_CAPTCHA_UNSOLVABLE → CAPTCHA changed
├── Are tokens returned but rejected by the target site?
│ ├── Token expired before submission → Speed up injection
│ ├── Sitekey changed → Re-extract from page
│ └── Domain mismatch → Check pageurl parameter
├── Are proxies failing?
│ ├── Proxy banned by target → Rotate proxies
│ └── Proxy timeout → Check proxy health
└── Did the target site change?
├── New CAPTCHA type → Update method parameter
├── JavaScript changes → Re-analyze page
└── Rate limiting by site → Reduce frequency
Contoh umum: tim price-monitoring dengan worker scraping di AWS ap-southeast-3 (Jakarta) melihat tingkat penyelesaian anjlok dari 94% ke 61% pagi hari — penyebabnya ketemu di Langkah 3, situs target mengganti sitekey semalam sebelumnya.
Langkah 1: jalankan skrip diagnostik CaptchaAI
Sebelum menyalahkan situs target, pastikan API-nya sehat. Skrip berikut mengecek saldo lalu menjalankan beberapa solve percobaan sambil mengumpulkan statistik error:
# diagnose_solve_rate.py
import os
import requests
from collections import Counter
API_KEY = os.environ.get("CAPTCHAAI_KEY", "YOUR_API_KEY")
def check_balance():
"""Verify API key and balance."""
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "getbalance", "json": "1",
})
result = resp.json()
print(f"Balance: {result}")
return result
def test_solve(sitekey, pageurl, runs=5):
"""Run test solves and collect error statistics."""
errors = Counter()
successes = 0
for i in range(runs):
# Submit
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": "1",
})
result = resp.json()
if result.get("status") != 1:
errors[result.get("request", "UNKNOWN")] += 1
print(f" Run {i+1}: Submit error: {result.get('request')}")
continue
task_id = result["request"]
import time
time.sleep(15)
# Poll
for _ in range(25):
poll = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get",
"id": task_id, "json": "1",
})
poll_result = poll.json()
if poll_result.get("status") == 1:
successes += 1
print(f" Run {i+1}: Solved")
break
if poll_result.get("request") != "CAPCHA_NOT_READY":
errors[poll_result.get("request", "UNKNOWN")] += 1
print(f" Run {i+1}: Error: {poll_result.get('request')}")
break
time.sleep(5)
else:
errors["TIMEOUT"] += 1
print(f" Run {i+1}: Timeout")
print(f"\nResults: {successes}/{runs} solved")
if errors:
print(f"Errors: {dict(errors)}")
# Run diagnostics
print("=== Balance Check ===")
check_balance()
print("\n=== Test Solves ===")
test_solve("YOUR_SITEKEY", "https://your-staging.example.com", runs=5)
Langkah 2: baca dan urutkan kode error berdasarkan frekuensi
Setelah skrip mengumpulkan distribusi error, urutkan dari yang paling sering — error dominan biasanya menunjuk ke akar masalah.
| Kesalahan | Artinya | Tindakan |
|---|---|---|
ERROR_ZERO_BALANCE |
Kredit habis | Isi ulang saldo dan selesai |
ERROR_NO_SLOT_AVAILABLE |
Semua thread terpakai (kena batas) | Kurangi concurrency atau naikkan paket |
ERROR_CAPTCHA_UNSOLVABLE |
CAPTCHA terlalu rumit atau berubah | Laporkan ke CaptchaAI; pastikan sitekey benar |
ERROR_WRONG_CAPTCHA_ID |
Polling pada task ID yang salah | Perbaiki pelacakan task ID di kode Anda |
CAPCHA_NOT_READY (timeout) |
Solve terlalu lama | Naikkan timeout polling; cek validitas sitekey |
Kalau ERROR_NO_SLOT_AVAILABLE mendominasi, Anda menabrak batas thread. CaptchaAI menagih per thread bersamaan, bukan per solve — naik dari STANDARD ($30/bulan, 15 thread) ke ADVANCE ($90/bulan, 50 thread) menambah throughput tanpa biaya tambahan.
Langkah 3: pastikan sitekey dan parameter situs target
Penyebab tersering bukan di sisi API, melainkan sitekey atau struktur halaman target yang berubah. Buka target, aktifkan DevTools (F12), lalu cocokkan tiap parameter dengan kode Anda — selisih satu karakter menggagalkan semua solve:
- reCAPTCHA: atribut
data-sitekeyatau pemanggilangrecaptcha.render - Cloudflare Turnstile:
data-sitekeypada widget-nya - GeeTest: parameter
gtdi inisialisasinya - Tipe berpindah (reCAPTCHA v2→v3, reCAPTCHA→Turnstile, gambar→Enterprise): sesuaikan parameter
method
Langkah 4: nilai kesehatan proxy
Kualitas proxy berpengaruh langsung ke tingkat penyelesaian, terutama untuk CAPTCHA berbasis token yang memakai proxy Anda.
| Masalah proxy | Gejala | Solusi |
|---|---|---|
| Proxy diblokir target | Token berhasil solve tapi ditolak | Rotasi ke egress jaringan yang diotorisasi baru |
| Proxy mengembalikan error | ERROR_PROXY_NOT_FOUND |
Verifikasi proxy masih hidup dan accessible |
| Proxy datacenter terdeteksi | Tingkat penyelesaian menurun | Beralih ke egress jaringan yang diotorisasi |
| Geo proxy tidak cocok | Hasil tidak konsisten | Samakan negara proxy dengan situs target |
Untuk isolasi cepat, jalankan tanpa proxy dulu jika tipe CAPTCHA mendukung; kalau langsung pulih, proxy biang keroknya.
Langkah 5: periksa masa berlaku token
Token CAPTCHA hanya valid untuk waktu terbatas. Kalau pipeline terlalu lama antara menerima token dan mengirimkannya ke form, token keburu kedaluwarsa dan ditolak situs.
| Jenis CAPTCHA | Masa berlaku token |
|---|---|
| reCAPTCHA v2 | ~120 detik |
| reCAPTCHA v3 | ~120 detik |
| Cloudflare Turnstile | ~300 detik |
| GeeTest v3 | ~60 detik |
Masalah ini sering muncul pada deployment dengan latency tinggi dan antrean internal panjang — lazim pada worker lintas region.
Perbaikan: ukur jeda antara getTaskResult dan pengiriman form. Jika lebih dari 60 detik, rampingkan pipeline.
Kapan waktunya menghubungi dukungan
Hubungi dukungan CaptchaAI jika:
- Semua langkah diagnostik lolos tetapi tingkat penyelesaian tetap rendah
ERROR_CAPTCHA_UNSOLVABLEmelebihi 20% pada sitekey yang sebelumnya normal- Saldo tampak benar tetapi solve tetap gagal
- Masalah bertahan lebih dari 2 jam
Sertakan dalam laporan Anda:
- Jenis CAPTCHA dan sitekey
- URL situs target
- Distribusi error dari skrip diagnostik
- Kapan masalah mulai muncul
- Perubahan apa pun yang Anda buat pada kode
Pertanyaan umum
Bagaimana cara memastikan masalahnya di kode saya atau di CaptchaAI?
Jalankan skrip diagnostik pada sitekey yang tadinya normal. Kalau berhasil di situs uji tapi gagal di target, masalahnya di parameter atau situs target — bukan di layanan.
Berapa penurunan tingkat penyelesaian yang wajar sebelum perlu diselidiki?
Fluktuasi harian beberapa persen itu normal. Mulai selidiki jika tingkat penyelesaian turun lebih dari 5% dari baseline, atau tingkat error konsisten melewati 5%.
Apakah proxy datacenter menurunkan tingkat penyelesaian?
Bisa, terutama pada CAPTCHA berbasis token yang sensitif terhadap reputasi IP. Kalau hasilnya tidak stabil, uji tanpa proxy dulu untuk memastikan sumbernya.
Apakah menambah thread membantu saat tingkat penyelesaian turun karena rate limit?
Jika error dominannya ERROR_NO_SLOT_AVAILABLE, ya. Itu tanda semua thread Anda terpakai; menaikkan paket menambah thread bersamaan, dengan solve tanpa batas per thread.
Artikel terkait
- Menganalisis tren waktu penyelesaian CAPTCHA dari waktu ke waktu
- Diagnosis saat tingkat keberhasilan solve CAPTCHA menurun
Langkah selanjutnya
Jaga pipeline CAPTCHA Anda tetap sehat — ambil kunci API CaptchaAI Anda.
Panduan terkait: