Hướng Dẫn API

Tối ưu hóa độ trễ API CaptchaAI: Giải quyết nhanh hơn

Giải CAPTCHA có bốn thành phần độ trễ: gửi yêu cầu, chờ hàng đợi, thực thi bộ giải và truy xuất cuộc thăm dò. Bạn không thể kiểm soát thời gian thực hiện bộ giải nhưng bạn có thể tối ưu hóa mọi thứ khác.


Độ trễ cơ bản theo loại CAPTCHA

loại CAPTCHA Thời gian giải quyết điển hình Có thể đạt được tốt nhất
Hình ảnh/OCR 2-5 giây 1-3 giây
reCAPTCHA v2 15-30 giây 10-20 giây
reCAPTCHA v3 10-20 giây 8-15 giây
Cloudflare Turnstile 10-25 giây 8-15 giây
GeeTest v3 15-30 giây 10-20 giây

Cột "có thể đạt được tốt nhất" phản ánh những gì bạn nhận được sau khi áp dụng các biện pháp tối ưu hóa bên dưới.


1. Tối ưu hóa khoảng thời gian thăm dò ý kiến

Khoảng thời gian thăm dò mặc định là 5 giây sẽ lãng phí thời gian khi quá trình giải quyết hoàn tất giữa các cuộc thăm dò. Sử dụng bỏ phiếu thích ứng — bắt đầu nhanh, sau đó dừng lại:

Python

import time
import requests

API_KEY = "YOUR_API_KEY"
RESULT_URL = "https://ocr.captchaai.com/res.php"

def adaptive_poll(task_id, timeout=120):
    """Start polling at 3s, increase to 5s after 4 polls."""
    start = time.time()
    interval = 3  # start aggressive
    polls = 0

    while time.time() - start < timeout:
        time.sleep(interval)
        polls += 1

        resp = requests.get(RESULT_URL, params={
            "key": API_KEY, "action": "get",
            "id": task_id, "json": "1"
        }).json()

        if resp["status"] == 1:
            elapsed = time.time() - start
            print(f"Solved in {elapsed:.1f}s ({polls} polls)")
            return resp["request"]

        if resp["request"] != "CAPCHA_NOT_READY":
            raise Exception(resp["request"])

        # Back off after initial fast polls
        if polls >= 4:
            interval = 5

    raise TimeoutError(f"Task {task_id} timed out")

JavaScript

async function adaptivePoll(taskId, apiKey, timeout = 120000) {
  const start = Date.now();
  let interval = 3000;
  let polls = 0;

  while (Date.now() - start < timeout) {
    await new Promise(r => setTimeout(r, interval));
    polls++;

    const resp = await fetch(
      `https://ocr.captchaai.com/res.php?key=${apiKey}&action=get&id=${taskId}&json=1`
    );
    const data = await resp.json();

    if (data.status === 1) {
      console.log(`Solved in ${((Date.now() - start) / 1000).toFixed(1)}s (${polls} polls)`);
      return data.request;
    }
    if (data.request !== 'CAPCHA_NOT_READY') {
      throw new Error(data.request);
    }

    if (polls >= 4) interval = 5000;
  }
  throw new Error(`Task ${taskId} timed out`);
}

Tiết kiệm trung bình 1-4 giây so với khoảng thời gian cố định 5 giây.


2. Tổng hợp kết nối

Sử dụng lại kết nối HTTP thay vì mở kết nối mới cho mỗi cuộc thăm dò:

Python

session = requests.Session()
# Use session.get() and session.post() instead of requests.get/post
# The session reuses TCP connections automatically

JavaScript (Node.js)

const { Agent } = require('http');
const axios = require('axios');

const client = axios.create({
  httpAgent: new Agent({ keepAlive: true, maxSockets: 10 }),
  timeout: 10000,
});
// Use client.get() and client.post() for all API calls

Tiết kiệm ~50-100 mili giây cho mỗi yêu cầu bằng cách bỏ qua bắt tay TCP/TLS.


3. Tìm nạp trước CAPTCHA

Gửi nhiệm vụ CAPTCHA trước khi bạn cần mã thông báo. Trong khi trình quét của bạn xử lý trang N, hãy gửi CAPTCHA cho trang N+1:

from concurrent.futures import ThreadPoolExecutor

SUBMIT_URL = "https://ocr.captchaai.com/in.php"

def prefetch_submit(sitekey, page_url):
    resp = session.post(SUBMIT_URL, data={
        "key": API_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": page_url,
        "json": "1",
    })
    data = resp.json()
    if data["status"] == 1:
        return data["request"]
    raise Exception(data["request"])

# Submit next page's CAPTCHA while processing current page
with ThreadPoolExecutor(max_workers=2) as pool:
    # Submit CAPTCHA for page 2 while processing page 1
    future_task = pool.submit(prefetch_submit, "6Le-SITEKEY", "https://example.com/page/2")

    # Process page 1...
    process_page(current_data)

    # Now get the pre-submitted task ID and poll
    task_id = future_task.result()
    token = adaptive_poll(task_id)

Loại bỏ toàn bộ thời gian chờ đợi bằng cách giải quyết chồng chéo với xử lý.


4. Sử dụng đúng phương pháp CAPTCHA

CaptchaAI đôi khi hỗ trợ các phương thức nhanh hơn cho các tình huống cụ thể:

Kịch bản Phương pháp chậm Thay thế nhanh hơn
reCAPTCHA v2 với lệnh gọi lại đã biết userrecaptcha + thăm dò ý kiến userrecaptcha với pingback (URL gọi lại)
Văn bản hình ảnh CAPTCHA base64 với độ phân giải cao base64 với numeric=1 nếu chỉ có chữ số

5. Bỏ qua proxy khi không cần thiết

Định tuyến proxy thêm độ trễ. Chỉ gửi tham số proxy khi trang đích yêu cầu yêu cầu từ các IP cụ thể:

# Without proxy — faster for most use cases
data = {
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url,
    "json": "1",
}

# With proxy — only when required
data["proxy"] = "user:pass@1.2.3.4:8080"
data["proxytype"] = "HTTP"

6. Sử dụng URL gọi lại thay vì bỏ phiếu

Loại bỏ hoàn toàn việc bỏ phiếu bằng tham số pingback:

resp = session.post(SUBMIT_URL, data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url,
    "json": "1",
    "pingback": "https://your-server.com/captcha-callback",
})

CaptchaAI gửi kết quả tới URL của bạn khi quá trình giải hoàn tất. Không cần vòng bỏ phiếu. Đây là phương pháp truy xuất nhanh nhất.


7. Đánh giá các tối ưu hóa của bạn

import statistics

def benchmark(solve_func, iterations=20):
    times = []
    for i in range(iterations):
        start = time.time()
        try:
            solve_func()
            times.append(time.time() - start)
        except Exception:
            pass

    if times:
        print(f"Samples: {len(times)}/{iterations}")
        print(f"Mean:    {statistics.mean(times):.1f}s")
        print(f"Median:  {statistics.median(times):.1f}s")
        print(f"P95:     {sorted(times)[int(len(times)*0.95)]:.1f}s")
        print(f"Min:     {min(times):.1f}s")
        print(f"Max:     {max(times):.1f}s")

Khắc phục sự cố

Vấn đề Nguyên nhân Cách xử lý
Độ trễ thăm dò không thay đổi Vẫn đang sử dụng requests.get() mà không có phiên Chuyển sang session.get()
Mã thông báo tìm nạp trước hết hạn trước khi sử dụng Quá trình xử lý mất quá nhiều thời gian Giảm thời gian tìm nạp trước hoặc gửi gần thời điểm sử dụng hơn
URL gọi lại không bao giờ nhận được dữ liệu Không thể truy cập máy chủ từ CaptchaAI Đảm bảo URL công khai, đúng quy tắc tường lửa
Bỏ phiếu nhanh hơn gây ra giới hạn tỷ lệ Bỏ phiếu quá tích cực (< 2s) Giữ khoảng thời gian tối thiểu là 3 giây

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

Tối ưu hóa đơn lẻ lớn nhất là gì?

Đang tìm nạp trước. Nó chồng chéo thời gian giải quyết với thời gian xử lý, giảm độ trễ nhận thấy xuống gần bằng 0 một cách hiệu quả cho các quy trình làm việc tuần tự.

Thăm dò thích ứng có giúp ích cho CAPTCHA hình ảnh không?

Ít hơn như vậy. CAPTCHA hình ảnh giải quyết trong 2-5 giây, vì vậy cuộc thăm dò đầu tiên sau 3 giây thường bắt được chúng. Sự cải thiện rõ rệt hơn đối với reCAPTCHA (15-30 giây).


Giải mã CAPTCHA nhanh nhất với CaptchaAI

Nhận khóa API của bạn tạicaptchaai.com.


Hướng dẫn liên quan

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