Reference

Đo điểm chuẩn CAPTCHA Giải quyết số lần giữa các loại bằng CaptchaAI

Giải quyết vấn đề thời gian. Sự khác biệt 10 giây cho mỗi lần giải quyết sẽ tạo thành độ trễ hàng giờ đối với hàng nghìn tác vụ. Hướng dẫn này cung cấp các điểm chuẩn có thể lặp lại cho mọi loại CAPTCHACaptchaAIhỗ trợ, cộng với các tập lệnh để chạy các phép đo của riêng bạn.

Thời gian giải quyết điển hình

Các điểm chuẩn này phản ánh thời gian trung bình từ 100 lần giải liên tiếp cho mỗi loại, được đo từ khi gửi API đến khi truy xuất kết quả:

Loại CAPTCHA Giải trung bình P90 Giải quyết P99 Giải Tỷ lệ thành công
reCAPTCHA v2 12–18 giây 25 giây 40 giây giá trị tham khảo cho mẫu nội bộ
reCAPTCHA v2 Vô hình 10–15 giây 20 giây 35 giây giá trị tham khảo cho mẫu nội bộ
reCAPTCHA v3 8–12 giây 18 giây 30 giây 90%+
reCAPTCHA doanh nghiệp 15–25 giây 35 giây 50 giây 90%+
Cloudflare Turnstile 5–10 giây 15 giây 25 giây 99%+
GeeTest v3 10–18 giây 25 giây 40 giây 90%+
Hình ảnh/OCR 3–8 giây 12 giây 20 giây 85%+
BLS CAPTCHA 5–10 giây 15 giây 20 giây 100%

Thời gian thay đổi tùy theo chất lượng proxy, tải máy chủ và độ phức tạp của CAPTCHA.

Các yếu tố ảnh hưởng đến thời gian giải quyết

Độ trễ mạng

Khoảng cách của bạn với các điểm cuối API của CaptchaAI sẽ tăng thêm thời gian khứ hồi. RTT 200 mili giây tổng cộng ~1 giây (gửi + 3–4 cuộc thăm dò × 200 mili giây).

Chất lượng proxy

Khi sử dụng proxy, đa dạng nguồn yêu cầu thường tạo ra khả năng giải quyết nhanh hơn proxy trung tâm dữ liệu vì chúng gây ra ít thách thức phụ hơn.

Độ phức tạp của CAPTCHA

Các thử thách hình ảnh reCAPTCHA v2 có độ khó khác nhau. Thử thách "chọn đèn giao thông" với hình ảnh mờ dần sẽ mất nhiều thời gian hơn so với việc xác minh hộp kiểm đơn giản.

Chiến lược bỏ phiếu

Thăm dò tích cực (2 giây một lần) phát hiện kết quả nhanh hơn nhưng tăng số lần gọi API. Bỏ phiếu thận trọng (cứ sau 10 giây) giúp giảm tải nhưng tăng thêm độ trễ.

Tập lệnh điểm chuẩn Python

# benchmark_captchaai.py
import os
import time
import statistics
import requests

API_KEY = os.environ.get("CAPTCHAAI_KEY", "YOUR_API_KEY")

def benchmark_solve(method, params, runs=10):
    """Benchmark a CAPTCHA type over multiple runs."""
    times = []
    successes = 0

    for i in range(runs):
        start = time.time()

        # Submit
        submit_params = {"key": API_KEY, "json": "1", **params}
        resp = requests.get("https://ocr.captchaai.com/in.php",
                            params=submit_params)
        result = resp.json()

        if result.get("status") != 1:
            print(f"  Run {i+1}: Submit failed - {result.get('request')}")
            continue

        task_id = result["request"]

        # Poll
        time.sleep(10)
        solved = False
        for _ in range(30):
            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:
                elapsed = time.time() - start
                times.append(elapsed)
                successes += 1
                solved = True
                print(f"  Run {i+1}: {elapsed:.1f}s")
                break
            if poll_result.get("request") != "CAPCHA_NOT_READY":
                print(f"  Run {i+1}: Error - {poll_result.get('request')}")
                break

            time.sleep(5)

        if not solved and poll_result.get("request") == "CAPCHA_NOT_READY":
            print(f"  Run {i+1}: Timeout")

    if times:
        return {
            "runs": runs,
            "successes": successes,
            "success_rate": f"{successes/runs*100:.0f}%",
            "median": f"{statistics.median(times):.1f}s",
            "p90": f"{sorted(times)[int(len(times)*0.9)]:.1f}s" if len(times) >= 10 else "N/A",
            "min": f"{min(times):.1f}s",
            "max": f"{max(times):.1f}s",
        }
    return {"error": "No successful solves"}

# Benchmark reCAPTCHA v2
print("=== reCAPTCHA v2 ===")
recaptcha_v2 = benchmark_solve("userrecaptcha", {
    "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "pageurl": "https://www.google.com/recaptcha/api2/demo",
})
print(recaptcha_v2)

# Benchmark Image/OCR
print("\n=== Image CAPTCHA ===")
# Submit a base64-encoded test image
import base64
# Use a test image for benchmarking
image_result = benchmark_solve("post", {
    "method": "base64",
    "body": "BASE64_ENCODED_CAPTCHA_IMAGE",
})
print(image_result)

Tập lệnh điểm chuẩn JavaScript

// benchmark_captchaai.js
const axios = require('axios');

const API_KEY = process.env.CAPTCHAAI_KEY || 'YOUR_API_KEY';

async function benchmarkSolve(params, runs = 10) {
  const times = [];
  let successes = 0;

  for (let i = 0; i < runs; i++) {
    const start = Date.now();

    // Submit
    const submit = await axios.get('https://ocr.captchaai.com/in.php', {
      params: { key: API_KEY, json: '1', ...params },
    });

    if (submit.data.status !== 1) {
      console.log(`  Run ${i + 1}: Submit failed - ${submit.data.request}`);
      continue;
    }

    // Poll
    await new Promise(r => setTimeout(r, 10000));
    let solved = false;

    for (let j = 0; j < 30; j++) {
      const poll = await axios.get('https://ocr.captchaai.com/res.php', {
        params: { key: API_KEY, action: 'get', id: submit.data.request, json: '1' },
      });

      if (poll.data.status === 1) {
        const elapsed = (Date.now() - start) / 1000;
        times.push(elapsed);
        successes++;
        solved = true;
        console.log(`  Run ${i + 1}: ${elapsed.toFixed(1)}s`);
        break;
      }
      if (poll.data.request !== 'CAPCHA_NOT_READY') {
        console.log(`  Run ${i + 1}: Error - ${poll.data.request}`);
        break;
      }
      await new Promise(r => setTimeout(r, 5000));
    }

    if (!solved) console.log(`  Run ${i + 1}: Timeout`);
  }

  if (times.length === 0) return { error: 'No successful solves' };

  times.sort((a, b) => a - b);
  return {
    runs, successes,
    successRate: `${((successes / runs) * 100).toFixed(0)}%`,
    median: `${times[Math.floor(times.length / 2)].toFixed(1)}s`,
    min: `${times[0].toFixed(1)}s`,
    max: `${times[times.length - 1].toFixed(1)}s`,
  };
}

(async () => {
  console.log('=== reCAPTCHA v2 ===');
  const v2 = await benchmarkSolve({
    method: 'userrecaptcha',
    googlekey: '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-',
    pageurl: 'https://www.google.com/recaptcha/api2/demo',
  });
  console.log(v2);

  console.log('\n=== Cloudflare Turnstile ===');
  const turnstile = await benchmarkSolve({
    method: 'turnstile',
    sitekey: 'YOUR_TURNSTILE_SITEKEY',
    pageurl: 'https://example.com',
  });
  console.log(turnstile);
})();

Giải thích kết quả

Trung bình so với P90

  • Trung vị — Trải nghiệm điển hình. Sử dụng điều này để lập kế hoạch năng lực.
  • P90 — "Trường hợp xấu nhất" đối với 9 trên 10 lượt giải. Sử dụng điều này để cài đặt thời gian chờ.
  • P99 — Vỏ true edge. Đặt thời gian chờ tối đa của bạn cao hơn mức này.

Khoảng thời gian bỏ phiếu tối ưu

Dựa trên các điểm chuẩn ở trên, hãy định cấu hình bỏ phiếu cho mỗi loại CAPTCHA:

Loại CAPTCHA Chờ ban đầu Khoảng thời gian thăm dò ý kiến Số lần thử tối đa
Hình ảnh/OCR 5 giây 3 giây 15
Cloudflare Turnstile 5 giây 3 giây 15
BLS CAPTCHA 5 giây 3 giây 15
reCAPTCHA v2 15 giây 5 giây 20
reCAPTCHA v3 10 giây 5 giây 20
GeeTest v3 12 giây 5 giây 20
reCAPTCHA doanh nghiệp 15 giây 5 giây 25

Khắc phục sự cố

Vấn đề Nguyên nhân Cách xử lý
Giải quyết lần cao hơn so với liệt kê Sự cố về độ trễ mạng hoặc proxy Kiểm tra từ khu vực gần máy chủ CaptchaAI hơn
Kết quả không nhất quán giữa các lần chạy Biến thể độ khó CAPTCHA Tăng cỡ mẫu lên hơn 50 lần chạy
Nhiều thời gian chờ URL trang hoặc khóa trang không hợp lệ Xác minh các thông số bằng một lần kiểm tra thủ công
ERROR_ZERO_BALANCE trong quá trình chuẩn Không đủ cân bằng cho tất cả các lần chạy Nạp tiền trước khi chạy benchmark lớn

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

Thời gian giải quyết có thay đổi theo thời gian trong ngày không?

Vâng. Giờ cao điểm (giờ làm việc tại Hoa Kỳ) có thể hiển thị thời gian giải quyết lâu hơn một chút do nhu cầu cao hơn. Chạy điểm chuẩn vào những thời điểm khác nhau để có được bức tranh hoàn chỉnh.

Tôi có nên sử dụng dữ liệu này cho cài đặt thời gian chờ sản xuất không?

Sử dụng giá trị P90 cho thời gian chờ tiêu chuẩn và P99 cho thời gian chờ tối đa. Thêm bộ đệm 20% để tính đến sự biến đổi của mạng.

Cài đặt proxy ảnh hưởng đến thời gian giải quyết như thế nào?

Nếu bạn cung cấp proxy, CaptchaAI sẽ định tuyến giải quyết thông qua proxy đó. Proxy chậm hoặc ở xa có thể thêm 5–15 giây vào tổng thời gian giải quyết. Để đo điểm chuẩn, hãy kiểm tra có và không có proxy riêng biệt.

bài viết liên quan

Các bước tiếp theo

Chạy tập lệnh chuẩn đối với tài khoản của chính bạn và mục tiêu CAPTCHA —lấy khóa API CaptchaAI của bạn.

Hướng dẫn liên quan:

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

Postagens relacionadas

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
Troubleshooting CAPTCHA Giải quyết tỷ lệ giảm: Chẩn đoán hồi quy hiệu suất
Hướng dẫn thực hành về CAPTCHA quyết định giải thích giảm tỷ lệ: Chẩn đoán hồi phục hiệu suất, với các nguyên nhân phổ biến, các bước chẩn đoán và cách khắc phụ...

Hướng dẫn thực hành về CAPTCHA quyết định giải thích giảm tỷ lệ: Chẩn đoán hồi phục hiệu suất, với các nguyên...

May 07, 2026
Tutorials Thông lượng giải CAPTCHA: Cách xử lý 10.000 tác vụ mỗi giờ
Hướng dẫn từng bước về Thông lượng giải CAPTCHA: Cách xử lý 10.000 tác vụ mỗi giờ, 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 r...

Hướng dẫn từng bước về Thông lượng giải CAPTCHA: Cách xử lý 10.000 tác vụ mỗi giờ, với các ví dụ có thể sử dụn...

May 09, 2026