Troubleshooting

Penurunan Tingkat Keberhasilan Solve CAPTCHA: Diagram Alir Diagnosis

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.

Komentar dinonaktifkan untuk artikel ini.