Phân Tích Kỹ Thuật

Thử thách Cloudflare hoạt động như thế nào

Khi Cloudflare nghi ngờ khách truy cập là bot, nó sẽ hiển thị quảng cáo chuyển tiếp toàn trang với thông báo "Kiểm tra trình duyệt của bạn trước khi truy cập..." hoặc "Xác minh bạn là con người". Đây được gọi là Cloudflare Challenge - đừng nhầm lẫn với Turnstile, là một tiện ích được nhúng trong một trang.

Thử thách chặn quyền truy cập vào toàn bộ trang cho đến khi trình duyệt vượt qua quá trình xác minh. Sau khi được thông qua, Cloudflare sẽ đặt cookie <staging-session-cookie> để cấp quyền truy cập vào các yêu cầu tiếp theo.


Dòng thử thách hoạt động như thế nào

Request → Cloudflare proxy → Suspicious? → Challenge page
                                              ↓
                                    Browser verification
                                              ↓
                                    <staging-session-cookie> cookie set
                                              ↓
                                    Original page loads
  1. Yêu cầu bị chặn — Proxy ngược của Cloudflare đánh giá yêu cầu đến
  2. Đánh giá rủi ro — Danh tiếng IP, tiêu đề yêu cầu, dấu vân tay TLS và hành vi được phân tích
  3. Thử thách được đưa ra — Nếu đáng ngờ, trang thử thách sẽ thay thế phản hồi dự định
  4. Xác minh trình duyệt — Thử thách JavaScript chạy trong trình duyệt
  5. Bộ cookie — Khi thành công, cookie <staging-session-cookie> được đặt với TTL có thể định cấu hình
  6. Quyền truy cập được cấp — Trình duyệt tải lại và nhận nội dung trang gốc

Điều gì kích hoạt Cloudflare Challenge

Trình kích hoạt Mô tả
IP trung tâm dữ liệu Yêu cầu từ các nhà cung cấp dịch vụ lưu trữ đã biết
Thiếu tiêu đề Tiêu đề HTTP bị thiếu hoặc bất thường
Dấu vân tay TLS Dấu vân tay JA3/JA4 khớp với chữ ký bot đã biết
Tỷ lệ yêu cầu cao Quá nhiều yêu cầu từ cùng một IP
Cài đặt mức độ bảo mật Chủ sở hữu trang web đặt ngưỡng thử thách ở mức cao
Quy tắc theo quốc gia Quy tắc chặn hoặc thách thức địa lý
Điểm bot Điểm bot ML của Cloudflare quá thấp
Mối đe dọa đã biết IP xuất hiện trong danh sách tình báo mối đe dọa

Sau khi vượt qua thử thách, trình duyệt nhận được:

<staging-session-cookie>=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None

Thuộc tính chính:

  • Thời lượng: 15 phút đến 24 giờ (có thể định cấu hình bởi chủ sở hữu trang web)
  • Phạm vi: Gắn với miền cụ thể
  • Ràng buộc: Liên kết với tác nhân người dùng và địa chỉ IP được sử dụng trong quá trình xác minh
  • Cách sử dụng: Phải được đưa vào tất cả các yêu cầu tiếp theo để tránh bị thách thức lại

Quan trọng: Cookie <staging-session-cookie> được liên kết với Tác nhân người dùngđịa chỉ IP cụ thể được sử dụng trong quá trình xác minh. Việc thay đổi một trong hai sẽ làm mất hiệu lực cookie.


Thử thách Cloudflare Challenge vs Turnstile vs JS

tính năng Thử thách CF cửa quay Thử thách JS
loại Quảng cáo xen kẽ toàn trang Tiện ích trong trang Kiểm tra im lặng
Người dùng nhìn thấy Trang "Kiểm tra trình duyệt của bạn" Hộp kiểm hoặc không có gì không có gì
Chặn truy cập trang Không Tóm tắt
Đặt Đôi khi
Yêu cầu proxy để giải quyết Không N/A
Trang web sử dụng Cloudflare CDN Bắt buộc Tùy chọn Bắt buộc

Giải Cloudflare Challenge bằng CaptchaAI

Việc giải quyết Cloudflare Challenge yêu cầu proxy vì cookie <staging-session-cookie> được liên kết với địa chỉ IP.

Python

import requests
import time

API_KEY = "YOUR_API_KEY"

# Submit task — proxy is REQUIRED
response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY,
    "method": "cloudflare_challenge",
    "pageurl": "https://example.com/protected-page",
    "proxy": "username:password@proxy.example.com:8080",
    "proxytype": "HTTP",
    "json": 1
})

task_id = response.json()["request"]

# Poll for result
for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": 1
    }).json()

    if result.get("status") == 1:
        solution = result["request"]
        # solution contains <staging-session-cookie> cookie + user_agent
        print(f"<staging-session-cookie>: {solution}")
        break

Node.js

const axios = require('axios');

async function solveCloudflareChallenge(pageurl, proxy) {
  const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
    params: {
      key: 'YOUR_API_KEY',
      method: 'cloudflare_challenge',
      pageurl,
      proxy,
      proxytype: 'HTTP',
      json: 1
    }
  });

  const taskId = data.request;

  for (let i = 0; i < 60; i++) {
    await new Promise(r => setTimeout(r, 5000));
    const res = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
    });
    if (res.data.status === 1) return res.data.request;
  }
  throw new Error('Timeout');
}
# After getting the solution
<staging-session-cookie> = solution["<staging-session-cookie>"]
user_agent = solution["user_agent"]

# Use the SAME proxy and user agent for subsequent requests
session = requests.Session()
session.cookies.set("<staging-session-cookie>", <staging-session-cookie>, domain=".example.com")
session.headers["User-Agent"] = user_agent
session.proxies = {"https": "http://username:password@proxy.example.com:8080"}

# Now access the protected page
page = session.get("https://example.com/protected-page")
print(f"Status: {page.status_code}")

Tại sao cần có proxy

Cookie <staging-session-cookie> được ràng buộc bằng mật mã với:

  1. Địa chỉ IP — Việc giải quyết phải diễn ra từ cùng một IP mà bạn sẽ sử dụng
  2. User-Agent — Tác nhân người dùng giải quyết phải phù hợp với yêu cầu của bạn
  3. Dấu vân tay TLS — Một số cấu hình cũng kiểm tra các đặc tính TLS

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à các yêu cầu tiếp theo của bạn thì cookie không hợp lệ.


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

kéo dài bao lâu?

Chủ sở hữu trang web định cấu hình thời lượng, thường là 15 phút đến 24 giờ. Sau khi hết hạn, một thử thách mới phải được giải quyết.

Tôi có thể sử dụng lại trên các IP khác nhau không?

Không. Cookie được liên kết với IP được sử dụng trong quá trình xác minh. Thay đổi IP đòi hỏi một giải pháp mới.

Sự khác biệt giữa Cloudflare Challenge và Turnstile là gì?

Cloudflare Challenge là quảng cáo chuyển tiếp toàn trang chặn quyền truy cập trang. Turnstile là một tiện ích được nhúng trong trang, tương tự như reCAPTCHA. Thử thách yêu cầu trang web sử dụng Cloudflare làm proxy; Cloudflare Turnstile có thể được sử dụng trên bất kỳ trang web nào.

Việc giải quyết mất bao lâu?

Việc giải quyết Cloudflare Challenge mất 20–60 giây, lâu hơn Turnstile hoặc reCAPTCHA do xác minh đầy đủ trình duyệt.

Điều gì sẽ xảy ra nếu trang có cả Cloudflare và reCAPTCHA?

Trước tiên, hãy giải Cloudflare Challenge để truy cập trang, sau đó giải reCAPTCHA trên trang đã tải.


Hướng dẫn liên quan

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