Ketika tingkat penyelesaian Anda turun, jangan menebak-nebak — ikuti diagnosis sistematis ini untuk menemukan dan memperbaiki akar masalahnya.
Diagram Alir Diagnosis
Success rate dropped
│
├── Are tokens being generated?
│ ├── NO → Check API errors
│ │ ├── ERROR_WRONG_GOOGLEKEY → Sitekey changed. Re-extract.
│ │ ├── ERROR_BAD_PARAMETERS → Check required params
│ │ ├── ERROR_NO_SLOT → Retry with backoff
│ │ └── Other errors → See error decision tree
│ │
│ └── YES → Tokens generated but rejected by target site
│ │
│ ├── Token expired before use?
│ │ └── YES → Submit token faster (< 60-120s)
│ │
│ ├── Token used for wrong domain?
│ │ └── YES → Check pageurl matches submission domain
│ │
│ ├── reCAPTCHA v3 score too low?
│ │ └── YES → Check action parameter, attach cookies/UA/proxy
│ │
│ ├── Site changed CAPTCHA type?
│ │ └── YES → Re-detect CAPTCHA type
│ │
│ └── Site added additional checks?
│ └── YES → Check for sinyal browser, cookies, headers
Langkah 1: Ukur Tarif Anda Saat Ini
import requests
import time
from collections import defaultdict
class SuccessTracker:
"""Track solve success rates over time."""
def __init__(self):
self.stats = defaultdict(lambda: {"attempts": 0, "success": 0, "errors": defaultdict(int)})
def record(self, method, success, error_code=None):
self.stats[method]["attempts"] += 1
if success:
self.stats[method]["success"] += 1
elif error_code:
self.stats[method]["errors"][error_code] += 1
def report(self):
for method, data in self.stats.items():
rate = data["success"] / data["attempts"] * 100 if data["attempts"] > 0 else 0
print(f"\n{method}:")
print(f" Attempts: {data['attempts']}")
print(f" Success: {data['success']} ({rate:.1f}%)")
if data["errors"]:
print(" Errors:")
for err, count in sorted(data["errors"].items(), key=lambda x: -x[1]):
print(f" {err}: {count}")
tracker = SuccessTracker()
Langkah 2: Identifikasi Kategori Masalah
Kategori A: Kegagalan Tingkat API
CaptchaAI API mengembalikan kesalahan, bukan token.
def diagnose_api_failures(api_key, method, params, attempts=10):
"""Run test solves and collect error patterns."""
errors = defaultdict(int)
successes = 0
for i in range(attempts):
try:
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key, "method": method, "json": 1, **params,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
errors[result.get("request", "UNKNOWN")] += 1
continue
task_id = result["request"]
# Quick poll
time.sleep(15)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
successes += 1
else:
errors[data.get("request", "POLL_ERROR")] += 1
except Exception as e:
errors[f"EXCEPTION:{type(e).__name__}"] += 1
time.sleep(2)
print(f"\nResults: {successes}/{attempts} success")
for err, count in sorted(errors.items(), key=lambda x: -x[1]):
print(f" {err}: {count}")
Kategori B: Penolakan Token
CaptchaAI mengembalikan token yang valid, tetapi situs target menolaknya.
Penyebab umum:
| Penyebab | Periksa |
|---|---|
| Token kedaluarsa | Token digunakan > 120 detik setelah digenerate |
| Domain mismatch | pageurl tidak cocok dengan domain submit |
| Skor v3 terlalu rendah | Situs membutuhkan 0.7+ tapi solver hanya dapat 0.3 |
| Parameter action tidak ada | v3 memerlukan parameter action yang sesuai |
| Situs mengubah parameter | Sitekey atau struktur halaman berubah |
Langkah 3: Perbaiki Masalah Umum
Perbaiki: Kedaluwarsa Token
def solve_and_use_immediately(api_key, sitekey, pageurl):
"""Solve and use token as fast as possible."""
# Submit
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1,
}, timeout=30)
task_id = resp.json()["request"]
# Poll aggressively
for _ in range(24):
time.sleep(5)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
token = data["request"]
# USE IMMEDIATELY — don't store for later
submit_form(token)
return True
return False
Perbaiki: Sitekey Basi
def solve_with_fresh_params(api_key, pageurl):
"""Re-extract sitekey before each solve."""
import re
resp = requests.get(pageurl, timeout=15)
match = re.search(r'data-sitekey="([^"]+)"', resp.text)
if not match:
raise RuntimeError("Could not find sitekey")
sitekey = match.group(1)
# Now solve with fresh sitekey
# ...
Perbaiki: Parameter Tindakan v3
# Check what action the site uses
# Look for: grecaptcha.execute('sitekey', {action: 'submit'})
data = {
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"version": "v3",
"action": "submit", # Must match site's action
"json": 1,
}
Tingkat Keberhasilan yang Diharapkan
| Jenis CAPTCHA | Tarif Normal | Ambang Peringatan |
|---|---|---|
| reCAPTCHA v2 | 95-99% | Di bawah 90% |
| reCAPTCHA v3 | 90-98% | Di bawah 85% |
| Cloudflare Turnstile | 99–100% | Di bawah 95% |
| GeeTest v3 | 99-100% | Di bawah 95% |
| BL | 99-100% | Di bawah 95% |
| Gambar/OCR | 90-98% | Di bawah 85% |
Pemecahan Masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
| Rate turun dari 98% ke 70% | Sitekey atau halaman berubah | Ekstrak ulang semua parameter |
| Token v3 semuanya ditolak | Parameter action salah | Sesuaikan action dari sumber halaman |
| Token berfungsi tapi kedaluarsa | Terlalu lambat digunakan | Submit token dalam 60 detik |
| Rate bervariasi berdasarkan waktu | Rate limiting sisi server | Tambahkan delay antar submit |
Pertanyaan Umum
Berapa tingkat keberhasilan yang normal?
tinggi (indikatif) untuk sebagian besar jenis CAPTCHA. Jika Anda terus-menerus berada di bawah 90%, kemungkinan ada masalah parameter atau waktu.
Seberapa cepat saya perlu menggunakan token?
Token reCAPTCHA kedaluarsa dalam 120 detik. Token Cloudflare Turnstile dalam 300 detik. Gunakan token dalam 60 detik untuk hasil terbaik.
Haruskah saya melaporkan solve yang salah?
Ya. Gunakan endpoint reportbad untuk melaporkan solusi yang salah. CaptchaAI menggunakan feedback ini untuk meningkatkan akurasi.
Panduan Terkait
Diagnosis dengan cepat, solve lebih baik — gunakan CaptchaAI.