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
- Yêu cầu bị chặn — Proxy ngược của Cloudflare đánh giá yêu cầu đến
- Đá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
- Thử thách được đưa ra — Nếu đáng ngờ, trang thử thách sẽ thay thế phản hồi dự định
- Xác minh trình duyệt — Thử thách JavaScript chạy trong trình duyệt
- Bộ cookie — Khi thành công, cookie
<staging-session-cookie>được đặt với TTL có thể định cấu hình - 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 |
Cookie
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 và đị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 | Có | Không | Tóm tắt |
| Đặt |
Có | Đôi khi | Có |
| Yêu cầu proxy để giải quyết | Có | 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');
}
Sử dụng cookie
# 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:
- Đị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
- 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
- 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
- Cách giải Cloudflare Challenge bằng API
- Cloudflare Challenge Lỗi và cách sửa
- Cloudflare Turnstile hoạt động như thế nào
- Cách giải Cloudflare Turnstile bằng API