Khắc Phục Sự Cố

Vòng thử thách Cloudflare: Tại sao các thử thách cứ lặp đi lặp lại

Bạn đã giải được Cloudflare Challenge thông qua CaptchaAI, nhận được cookie <staging-session-cookie>, đặt nó trong phiên của bạn — và trang thử thách sẽ xuất hiện trở lại. Vòng lặp này xảy ra khi cookie không khớp với bối cảnh phiên. Dưới đây là mọi nguyên nhân và cách khắc phục.


Cách hoạt động của

Khi CaptchaAI giải được Cloudflare Challenge, nó sẽ trả về cookie <staging-session-cookie>. Cookie này bị ràng buộc với:

  1. IP proxy được sử dụng trong quá trình giải quyết
  2. Tác nhân người dùng được sử dụng trong quá trình giải
  3. Tên miền của trang web mục tiêu

Nếu bất kỳ điều nào trong số này khác nhau giữa việc giải quyết và yêu cầu tiếp theo của bạn, Cloudflare sẽ từ chối cookie và hiển thị lại thử thách.


Nguyên nhân 1: Tác nhân người dùng không khớp

Nguyên nhân phổ biến nhất. Tác nhân người dùng bạn gửi tới CaptchaAI phải khớp chính xác với Tác nhân người dùng trong yêu cầu của bạn.

import requests

USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

# Step 1: Solve with the SAME User-Agent
solve_data = {
    "key": "YOUR_API_KEY",
    "method": "cloudflare_challenge",
    "pageurl": "https://example.com",
    "proxy": "host:port:user:pass",
    "proxytype": "HTTP",
    "userAgent": USER_AGENT,  # Must match step 2
    "json": 1
}
submit = requests.post("https://ocr.captchaai.com/in.php", data=solve_data).json()

# ... poll for result ...

# Step 2: Use the SAME User-Agent in subsequent requests
session = requests.Session()
session.headers["User-Agent"] = USER_AGENT  # Must match step 1
session.cookies.set("<staging-session-cookie>", cf_clearance_value, domain=".example.com")
resp = session.get("https://example.com")

Nguyên nhân 2: IP proxy không khớp

Cookie <staging-session-cookie> được liên kết với IP đã giải quyết được thử thách. Nếu bạn yêu cầu trang web từ một IP khác, cookie sẽ bị từ chối.

PROXY = "host:port:user:pass"

# Solve with this proxy
solve_data = {
    "key": "YOUR_API_KEY",
    "method": "cloudflare_challenge",
    "pageurl": "https://example.com",
    "proxy": PROXY,
    "proxytype": "HTTP",
    "userAgent": USER_AGENT,
    "json": 1
}

# Use the SAME proxy for subsequent requests
session.proxies = {
    "http": f"http://user:pass@host:port",
    "https": f"http://user:pass@host:port"
}

Quan trọng: Nếu bạn sử dụng proxy luân phiên, hãy ghim vào một phiên cố định. IP phải giữ nguyên giữa việc giải và duyệt.


Cookie <staging-session-cookie> phải được đặt trên đúng tên miền với các thuộc tính phù hợp.

# WRONG — setting on wrong domain
session.cookies.set("<staging-session-cookie>", value, domain="example.com")

# CORRECT — include the dot prefix for subdomain coverage
session.cookies.set("<staging-session-cookie>", value, domain=".example.com")

# Or set all cookies returned by CaptchaAI
for cookie_str in result.get("cookies", "").split(";"):
    if "<staging-session-cookie>" in cookie_str:
        name, val = cookie_str.strip().split("=", 1)
        session.cookies.set(name.strip(), val.strip(), domain=".example.com")

Cookie <staging-session-cookie> có thời gian tồn tại giới hạn — thường là 15–30 phút. Sau khi hết hạn, Cloudflare lại thể hiện thử thách.

Khắc phục: Theo dõi tuổi của cookie và giải quyết lại trước khi hết hạn.

import time

last_solve_time = None
COOKIE_TTL = 900  # 15 minutes

def get_cf_clearance():
    global last_solve_time
    if last_solve_time and (time.time() - last_solve_time) < COOKIE_TTL:
        return  # Cookie still valid

    # Solve again
    <staging-session-cookie> = solve_cloudflare_challenge()
    session.cookies.set("<staging-session-cookie>", <staging-session-cookie>, domain=".example.com")
    last_solve_time = time.time()

Nguyên nhân 5: Dấu vân tay TLS không khớp

Cloudflare kiểm tra dấu vân tay TLS. Thư viện requests của Python có dấu vân tay TLS khác với Chrome. Một số trang web từ chối yêu cầu ngay cả với <staging-session-cookie> hợp lệ nếu dấu vân tay TLS không khớp.

Khắc phục: Sử dụng curl_cffi hoặc tls-client cho dấu vân tay TLS giống trình duyệt.

pip install curl_cffi
from curl_cffi import requests as curl_requests

session = curl_requests.Session(impersonate="chrome120")
session.cookies.set("<staging-session-cookie>", value, domain=".example.com")
resp = session.get("https://example.com")

Danh sách kiểm tra gỡ lỗi

Challenge keeps repeating
    ↓
User-Agent in solve request matches browsing request? → No → Sync User-Agent
    ↓ Yes
Same proxy IP for solve and browse? → No → Pin proxy IP (sticky session)
    ↓ Yes
Cookie set on correct domain (.example.com)? → No → Fix domain
    ↓ Yes
Cookie less than 15 minutes old? → No → Re-solve the challenge
    ↓ Yes
TLS fingerprint matches a browser? → No → Use curl_cffi or tls-client
    ↓ Yes
Site may have additional bot detection → Use headless browser instead

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

Thông thường là 15–30 phút. Một số trang web đặt thời lượng ngắn hơn. Chủ động giải quyết lại trước khi hết hạn.

Tôi có cần phiên bản Chrome cụ thể trong Tác nhân người dùng không?

Sử dụng Tác nhân người dùng thực tế, hiện tại. Tác nhân người dùng lỗi thời kích hoạt kiểm tra Cloudflare mạnh mẽ hơn.

Có, miễn là chúng nằm trên cùng một miền và bạn sử dụng cùng IP và Tác nhân người dùng.


Giải Cloudflare Challenge bằng CaptchaAI

Phá vỡ vòng thử thách tạicaptchaai.com.


Hướng dẫn liên quan

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