Troubleshooting

CAPTCHA Giải quyết tỷ lệ giảm thành công: Sơ đồ chẩn đoán

Khi tỷ lệ giải quyết của bạn giảm xuống, đừng đoán mò - hãy làm theo chẩn đoán có hệ thống này để tìm và khắc phục nguyên nhân gốc rễ.


Sơ đồ chẩn đoán

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, try min_score
│       │
│       ├── Site changed CAPTCHA type?
│       │   └── YES → Re-detect CAPTCHA type
│       │
│       └── Site added additional checks?
│           └── YES → Check for fingerprinting, cookies, headers

Bước 1: Đo lường tỷ lệ hiện tại của bạn

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()

Bước 2: Xác định danh mục vấn đề

Loại A: Lỗi cấp độ API

API CaptchaAI trả về lỗi thay vì mã thông báo.

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}")

Loại B: Từ chối mã thông báo

CaptchaAI trả về mã thông báo hợp lệ nhưng trang đích từ chối nó.

Các nguyên nhân thường gặp:

nguyên nhân Kiểm tra
Mã thông báo đã hết hạn Sử dụng mã thông báo> 120 giây sau khi tạo
Tên miền không khớp pageurl không khớp với tên miền gửi
điểm v3 quá thấp Trang web yêu cầu 0,7+ nhưng người giải được 0,3
Thiếu hành động v3 yêu cầu tham số hành động phù hợp
Thông số trang web đã thay đổi Cấu trúc trang hoặc khóa trang đã thay đổi

Bước 3: Khắc phục các sự cố thường gặp

Khắc phục: Mã thông báo hết hạn

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

Khắc phục: Sitekey cũ

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
    # ...

Sửa lỗi: Tham số hành động 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
    "min_score": "0.7",
    "json": 1,
}

Tỷ lệ thành công dự kiến

Loại CAPTCHA Tỷ lệ bình thường Ngưỡng cảnh báo
reCAPTCHA v2 95-99% Dưới 90%
reCAPTCHA v3 90-98% Dưới 85%
Cloudflare Turnstile 99-100% Dưới 95%
GeeTest v3 99-100% Dưới 95%
BLS 99-100% Dưới 95%
Hình ảnh/OCR 90-98% Dưới 85%

Khắc phục sự cố

Vấn đề Nguyên nhân Cách xử lý
Tỷ lệ giảm từ 98% xuống 70% Mã trang web hoặc trang đã thay đổi Trích xuất lại tất cả các thông số
tất cả các mã thông báo v3 đều bị từ chối Tham số hành động sai So khớp hành động từ nguồn trang
Mã thông báo hoạt động nhưng hết hạn Sử dụng quá chậm Gửi mã thông báo trong vòng 60 giây
Tỷ giá thay đổi theo thời gian trong ngày Giới hạn tốc độ phía máy chủ Thêm độ trễ giữa các lần gửi

Câu hỏi thường gặp

Tỷ lệ thành công bình thường là bao nhiêu?

95%+ cho hầu hết các loại CAPTCHA. Nếu bạn luôn ở mức dưới 90% thì có thể có vấn đề về thông số hoặc thời gian.

Tôi cần sử dụng token nhanh đến mức nào?

Mã thông báo reCAPTCHA sẽ hết hạn sau 120 giây. Mã thông báo quay vòng trong 300 giây. Sử dụng mã thông báo trong vòng 60 giây để có kết quả tốt nhất.

Tôi có nên báo cáo các giải pháp không chính xác?

Vâng. Sử dụng điểm cuối reportbad để báo cáo các giải pháp không chính xác. CaptchaAI sử dụng phản hồi này để cải thiện độ chính xác.


Hướng dẫn liên quan


Chẩn đoán nhanh, giải quyết tốt hơn —sử dụng CaptchaAI.

Os comentários estão desativados para este artigo.

Postagens relacionadas

DevOps & Scaling Xây dựng giải quyết CAPTCHA theo sự kiện bằng AWS SNS và CaptchaAI
Hướng dẫn Dev Ops xây dựng giải pháp giải quyết tình huống CAPTCHA bằng AWS SNS và Captcha AI, với các quyết định về kiến ​​trúc, các cân nhắc vận hành và mô hì...

Hướng dẫn Dev Ops xây dựng giải pháp giải quyết tình huống CAPTCHA bằng AWS SNS và Captcha AI, với các quyết đ...

Apr 25, 2026
Tutorials Xây dựng hàng đợi giải CAPTCHA bằng Python với CaptchaAI
Hướng dẫn từng bước để Xây dựng hàng đợi giải mã CAPTCHA bằng Python với Captcha AI, với các ví dụ có thể sử dụng lại trực tiếp và quy trình làm việc Captcha AI...

Hướng dẫn từng bước để Xây dựng hàng đợi giải mã CAPTCHA bằng Python với Captcha AI, với các ví dụ có thể sử d...

May 01, 2026
DevOps & Scaling Công nhân giải quyết CAPTCHA tự động mở rộng quy mô
Hướng dẫn Dev Ops về Công nhân giải quyết quy trình tự động mở rộng CAPTCHA, với các quyết định về kiến ​​trúc, các cân nhắc vận hành và mô hình tự động hóa cho...

Hướng dẫn Dev Ops về Công nhân giải quyết quy trình tự động mở rộng CAPTCHA, với các quyết định về kiến ​​trúc...

Apr 24, 2026