Làm thế nào để giải quyết Cloudflare khi quét dữ liệu web vào năm 2026 | Hướng dẫn từng bước

Aloísio Vítor
Image Processing Expert
09-Dec-2025

Các mã trạng thái Cloudflare phổ biến khi thực hiện WebScraping
Lỗi 1020
Lỗi Cloudflare 1020 cho biết quyền truy cập đã bị từ chối. Lỗi này xảy ra khi một quy tắc của tường lửa trang web, được bảo vệ bởi Cloudflare, bị vi phạm. Các hành động như gửi quá nhiều yêu cầu đến trang có thể dẫn đến vi phạm này.
Các cách phổ biến để khắc phục vấn đề này:
- Sử dụng proxy quay vòng để che giấu địa chỉ IP của bạn.
- Thay đổi và quay vòng tiêu đề User-Agent.
- Đảm bảo trình khách HTTP của bạn hỗ trợ TLS nếu sử dụng thư viện requests.
- Sử dụng các công cụ tự động hóa trình duyệt như Puppeteer, Playwright hoặc Selenium.
Lỗi 1015 / 429 giới hạn tốc độ
Lỗi Cloudflare 1015 xảy ra khi địa chỉ IP của bạn bị đánh dấu và cấm bởi Cloudflare do vượt quá giới hạn tốc độ của trang web trong quá trình quét. Điều này có thể dẫn đến việc gặp phải lỗi này.
Các cách phổ biến để khắc phục vấn đề này:
- Sử dụng proxy quay vòng hoặc một nhóm proxy lớn
- Kiểm tra xem trang web có thể theo dõi bạn qua tiêu đề, một số tiêu đề có thể khiến chúng theo dõi bạn và giới hạn tốc độ yêu cầu của bạn
- Đảm bảo rằng bạn không bị phát hiện qua TLS fingerprint, TCP, hoặc bất kỳ cách nào khác.
Lỗi 403
Mã trạng thái 403 là trạng thái phản hồi "Cấm", do máy chủ phát ra khi nó nhận biết yêu cầu là hợp lệ nhưng từ chối thực hiện. Điều này có thể xảy ra do thiếu các tiêu đề cần thiết trong yêu cầu của bạn, chẳng hạn như tiêu đề CORS, JWT hoặc tiêu đề xác thực mà máy chủ mong đợi.
Nếu trang web có thể truy cập bình thường và việc thêm tiêu đề đúng không giải quyết được vấn đề, có thể máy chủ đang phát hiện các yêu cầu của bạn là tự động.
Các cách phổ biến để khắc phục vấn đề này:
- Bạn không gửi tiêu đề đúng, thông tin yêu cầu.
- Proxy đã bị cấm
- Cần giải quyết một bài toán JavaScript, xem blog về Cloudflare Challenge 5s để hiểu cách giải quyết
- Trang web không cho phép bất kỳ lưu lượng nào
Nhận thưởng mã giảm giá CapSolver của bạn
Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã giảm giá CAPN khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% cho mỗi lần nạp tiền — không có giới hạn.
Nhận mã giảm giá ngay bây giờ trong Bảng điều khiển CapSolver
.
Xác định Cloudflare Challenge 5s và Cloudflare Turnstile Captcha
Cloudflare Challenge 5s
Cloudflare challenge trông như:

Đôi khi, trang này có thể có turnstile

Kiểm tra xem bạn có cần giải Cloudflare Challenge 5s hay không chỉ là turnstile, đối với turnstile đơn thuần, vui lòng tiếp tục đọc blog này.
Có một số yêu cầu khi giải quyết thử thách này bằng Capsolver.
- Proxy
- API Key của Capsolver
Gửi thông tin nhiệm vụ đến Capsolver
json
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiCloudflareTask",
"websiteURL": "https://www.yourwebsite.com",
"proxy": "158.120.100.23:334:user:pass"
}
}
Sau khi gửi thành công, API sẽ trả về taskId
json
{
"errorId": 0,
"taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
"status": "idle"
}
Lấy giá trị taskId này và sử dụng để truy xuất kết quả bằng phương pháp getTaskResult
Truy xuất kết quả
json
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "taskId"
}
Tùy thuộc vào tải hệ thống, bạn sẽ nhận được kết quả trong khoảng thời gian từ 1s đến 20s
Nếu bạn nhận được ERROR_CAPTCHA_SOLVE_FAILED trong phản hồi, có thể có một số lý do:
- Proxy của bạn không cần phải giải Cloudflare Challenge 5s (Một số trang web chỉ kích hoạt cho proxy xấu, hành động bot hoặc bất kỳ thứ gì có thể kích hoạt yêu cầu được thực hiện bởi bot). Đôi khi nó được kích hoạt mỗi lần, tùy thuộc vào cấu hình.
- Proxy của bạn bị cấm bởi Cloudflare và đang trong vòng lặp không thể vượt qua thử thách
- Trang web không sử dụng Cloudflare Challenge, xác minh rằng đó là thử thách và không phải là turnstile, kiểm tra các hình ảnh ví dụ.
- Proxy đang gặp thời gian chờ, điều này phổ biến khi sử dụng Proxy Residential
Nếu bạn nhận được phản hồi thành công, sẽ trông như:
json
{
"errorId": 0,
"taskId": "d8d3a8b4-30cc-4b09-802a-a476ca17fa54",
"status": "ready",
"solution": {
"accept-language": "en-US,en;q=0.9",
"cookies": {
},
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US,en;q=0.9",
"cache-control": "max-age=0",
"content-type": "application/x-www-form-urlencoded",
"origin": "",
"referer": "",
"sec-ch-ua": "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"",
"sec-ch-ua-arch": "\"arm\"",
"sec-ch-ua-bitness": "\"64\"",
"sec-ch-ua-full-version": "\"120.0.6099.71\"",
"sec-ch-ua-full-version-list": "\"Not_A Brand\";v=\"8.0.0.0\", \"Chromium\";v=\"120.0.6099.71\", \"Google Chrome\";v=\"120.0.6099.71\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-model": "\"\"",
"sec-ch-ua-platform": "\"macOS\"",
"sec-ch-ua-platform-version": "\"10.14.6\"",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
},
"proxy": "proxy của bạn",
"token": "token cf clearance",
"type": "challenge",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
}
Từ phản hồi này, bạn cần phân tích các giá trị của cookies, headers, token.
Yêu cầu của bạn cần phải trông như:
- Tiêu đề yêu cầu phải giống với những gì chúng tôi trả về cho bạn trong phản hồi
- Cookie của yêu cầu phải giống với những gì chúng tôi trả về cho bạn trong phản hồi
- Trình khách phải hỗ trợ cài đặt TLS, trong trường hợp này sử dụng TLS Chrome 120
- Sử dụng cùng một proxy để tương tác trên trang web và sử dụng cookie cf_clearance
- Giá trị token sẽ là giá trị cookie
cf_clearancemà bạn cần tạo
Ví dụ để giải Cloudflare Challenge với Python
python
# -*- coding: utf-8 -*-
import requests
import time
import tls_client
# TODO: API key của bạn
API_KEY = ""
proxy = ""
# TODO: URL trang đích:
page_url = ''
def call_capsolver():
data = {
"clientKey": API_KEY,
"task": {
"type": 'AntiCloudflareTask',
"websiteURL": page_url,
"proxy": proxy,
}
}
uri = 'https://api.capsolver.com/createTask'
res = requests.post(uri, json=data)
resp = res.json()
task_id = resp.get('taskId')
if not task_id:
print("không nhận được taskId:", res.text)
return
print('tạo taskId:', task_id)
while True:
time.sleep(1)
data = {
"clientKey": API_KEY,
"taskId": task_id
}
response = requests.post('https://api.capsolver.com/getTaskResult', json=data)
resp = response.json()
status = resp.get('status', '')
if status == "ready":
print("thành công => ", response.text)
return resp.get('solution')
if status == "failed" or resp.get("errorId"):
print("thất bại! => ", response.text)
return
def request_site(solution):
session = tls_client.Session(
client_identifier="chrome_120",
random_tls_extension_order=True
)
return session.get(
page_url,
headers=solution.get('headers'),
cookies=solution.get('cookies'),
proxy=proxy,
)
def main():
solution = {
"headers": {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"upgrade-insecure-requests": "1",
"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",
"sec-fetch-site": "none",
"sec-fetch-mode": "navigate",
"sec-fetch-user": "?1",
"sec-fetch-dest": "document",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-US,en;q=0.9",
}
}
# Yêu cầu đầu tiên (kiểm tra proxy của bạn):
res = request_site(solution)
print('1. mã trạng thái phản hồi:', res.status_code)
if res.status_code != 403:
print("proxy của bạn tốt và không bị Cloudflare Challenge")
return
elif 'window._cf_chl_opt' not in res.text:
print('==== proxy bị chặn ==== ')
return
# gọi capSolver:
solution = call_capsolver()
if not solution:
return
# Yêu cầu thứ hai (xác minh giải pháp):
res = request_site(solution)
print('2. mã trạng thái phản hồi:', res.status_code)
if __name__ == '__main__':
main()
Cloudflare Turnstile Captcha
Cloudflare Turnstile Captcha trông như:
-
Thử thách được quản lý

-
Thử thách không tương tác

-
Thử thách không thể nhìn thấy
không thể nhìn thấy, bạn có thể kiểm tra trên mạng / các tập lệnh được tải và xem liệu turnstile có được sử dụng hay không
Kiểm tra xem bạn có cần giải Cloudflare Turnstile Captcha hay không phải là Cloudflare Challenge 5s, đối với chỉ Cloudflare Challenge, vui lòng tiếp tục đọc blog này.
Có một số yêu cầu khi giải quyết thử thách này bằng Capsolver.
- API Key của Capsolver
Gửi thông tin nhiệm vụ đến Capsolver
json
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": "https://www.yourwebsite.com",
"websiteKey": "0x4XXXXXXXXXXXXXXXXX",
"metadata": {
"action": "login", //tùy chọn
"cdata": "0000-1111-2222-3333-example-cdata" //tùy chọn
}
}
}
"action" và "cdata" là tùy chọn, đôi khi sẽ được yêu cầu và đôi khi không.
Tùy thuộc vào cấu hình của trang web.
action là giá trị của thuộc tính data-action của phần tử Turnstile nếu tồn tại.
cdata là giá trị của thuộc tính data-cdata của phần tử Turnstile nếu tồn tại.
Sau khi gửi đúng, API sẽ trả về taskId
json
{
"errorId": 0,
"taskId": "014fc55c-46c9-41c8-9de7-6cb35d984edc",
"status": "idle"
}
Lấy giá trị taskId này và sử dụng để truy xuất kết quả bằng phương pháp getTaskResult
Truy xuất kết quả
json
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "taskId"
}
Tùy thuộc vào tải hệ thống, bạn sẽ nhận được kết quả trong khoảng thời gian từ 1s đến 20s
Nếu bạn nhận được ERROR_CAPTCHA_SOLVE_FAILED trong phản hồi, có thể có một số lý do:
- Proxy của bạn không cần phải giải Cloudflare Challenge 5s (Một số trang web chỉ kích hoạt cho proxy xấu, hành động bot hoặc bất kỳ thứ gì có thể kích hoạt yêu cầu được thực hiện bởi bot). Đôi khi nó được kích hoạt mỗi lần, tùy thuộc vào cấu hình.
- Proxy của bạn bị cấm bởi Cloudflare và đang trong vòng lặp không thể vượt qua thử thách
- Trang web không sử dụng Cloudflare Challenge, xác minh rằng đó là thử thách và không phải là turnstile, kiểm tra các hình ảnh ví dụ.
- Proxy đang gặp thời gian chờ, điều này phổ biến khi sử dụng Proxy Residential
Nếu bạn nhận được phản hồi thành công, sẽ trông như:
json
{
"errorId": 0,
"taskId": "d1e1487a-2cd8-4d4a-aa4d-4ba5b6c65484",
"status": "ready",
"solution": {
"token": "0.cZJPqwnyDxL86HvAXSk4lUTQhjwfyXDcR3qpVwFofuzosoKr1otKj_A-utazXx_Tnp1B2V6womrltBpRw9HbY851ktpaF7sBN-gQwtoRUew4Wj5PO4-WLYPnNRpXxludXzyQ.1oHJhu7619fb8c07ab942bd1587bc76e0e3cef95c7aa75400c4f7d3",
"type": "turnstile",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
}
Từ phản hồi này, bạn cần phân tích giá trị của token và đây sẽ là giải pháp captcha mà bạn cần gửi đến trang web.
Ví dụ để giải Cloudflare Challenge với Python
python
import time
from curl_cffi import requests
CAPSOLVER_API_KEY = "API KEY của bạn trên CAPSOLVER.COM"
PAGE_URL = ""
WEBSITE_KEY = ""
def solvecf(metadata_action=None, metadata_cdata=None):
url = "https://api.capsolver.com/createTask"
task = {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": PAGE_URL,
"websiteKey": WEBSITE_KEY,
}
if metadata_action or metadata_cdata:
task["metadata"] = {}
if metadata_action:
task["metadata"]["action"] = metadata_action
if metadata_cdata:
task["metadata"]["cdata"] = metadata_cdata
data = {
"clientKey": CAPSOLVER_API_KEY,
"task": task
}
response_data = requests.post(url, json=data).json()
print(response_data)
return response_data['taskId']
def solutionGet(taskId):
url = "https://api.capsolver.com/getTaskResult"
status = ""
while status != "ready":
data = {"clientKey": CAPSOLVER_API_KEY, "taskId": taskId}
response_data = requests.post(url, json=data).json()
print(response_data)
status = response_data.get('status', '')
print(status)
if status == "ready":
return response_data['solution']
time.sleep(2)
def main():
start_time = time.time()
taskId = solvecf()
solution = solutionGet(taskId)
if solution:
user_agent = solution['userAgent']
token = solution['token']
print("User_Agent:", user_agent)
print("Đã giải Turnstile Captcha, token:", token)
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Thời gian để giải captcha: {elapsed_time} giây")
if __name__ == "__main__":
main()
Ví dụ giải quyết thách thức Cloudflare bằng NodeJS
js
const axios = require('axios');
const CAPSOLVER_API_KEY = "";
const PAGE_URL = "";
const WEBSITE_KEY = "";
async function solvecf(metadata_action = null, metadata_cdata = null) {
const url = "https://api.capsolver.com/createTask";
const task = {
type: "AntiTurnstileTaskProxyLess",
websiteURL: PAGE_URL,
websiteKey: WEBSITE_KEY,
};
if (metadata_action || metadata_cdata) {
task.metadata = {};
if (metadata_action) {
task.metadata.action = metadata_action;
}
if (metadata_cdata) {
task.metadata.cdata = metadata_cdata;
}
}
const data = {
clientKey: CAPSOLVER_API_KEY,
task: task
};
const response = await axios.post(url, data);
console.log(response.data);
return response.data.taskId;
}
async function solutionGet(taskId) {
const url = "https://api.capsolver.com/getTaskResult";
let status = "";
while (status !== "ready") {
const data = { clientKey: CAPSOLVER_API_KEY, taskId: taskId };
const response = await axios.post(url, data);
console.log(response.data);
status = response.data.status;
console.log(status);
if (status === "ready") {
return response.data.solution;
}
await new Promise(resolve => setTimeout(resolve, 2000));
}
}
async function main() {
const start_time = Date.now();
const taskId = await solvecf();
const solution = await solutionGet(taskId);
if (solution) {
const user_agent = solution.userAgent;
const token = solution.token;
console.log("User_Agent:", user_agent);
console.log("Đã giải Turnstile Captcha, token:", token);
}
const end_time = Date.now();
const elapsed_time = (end_time - start_time) / 1000;
console.log(`Thời gian để giải captcha: ${elapsed_time} giây`);
}
main().catch(console.error);
🏁 Kết luận
Cloudflare triển khai nhiều cơ chế bảo vệ — từ các khối HTTP tiêu chuẩn như 1020, 403, 429 (1015) đến các thách thức nâng cao như Cloudflare Challenge 5s và Turnstile Captcha. Khi thực hiện quét trang web hoặc tự động hóa, xác định cơ chế bảo vệ đang hoạt động là bước đầu tiên quan trọng.
Hướng dẫn này giải thích các mã trạng thái Cloudflare phổ biến, cách phân biệt giữa Challenge 5s và Turnstile Captcha, và cung cấp các ví dụ hoạt động để giải quyết chúng bằng Capsolver API, bao gồm Python & NodeJS.
Bằng cách chọn phương pháp phù hợp — xoay proxy, cài đặt header đúng, bảo vệ dấu vân tay TLS, hoặc giải CAPTCHA/Thách thức bằng lập trình, bạn có thể nâng cao đáng kể tỷ lệ thành công khi quét trang web và giảm thiểu việc bị chặn.
Nếu yêu cầu của bạn vẫn bị ghi nhận, hãy kiểm tra lại cấu hình scraper của bạn: chất lượng proxy, header, dấu vân tay TLS và tần suất yêu cầu thường ảnh hưởng nhiều như chính công cụ giải CAPTCHA.
❓ Câu hỏi thường gặp (FAQs)
1. Làm thế nào để biết tôi đang đối mặt với Cloudflare Challenge 5s hay Turnstile Captcha?
Kiểm tra giao diện người dùng hoặc yêu cầu mạng.
- Nếu trang "Verifying your browser…" 5 giây xuất hiện → Challenge 5s
- Nếu có widget xác minh xuất hiện (hoặc tạo token ẩn) → Turnstile Captcha
2. Tại sao tôi vẫn bị chặn ngay cả sau khi giải thách thức?
Nguyên nhân có thể là:
- Proxy bị cấm hoặc chất lượng kém
- Thiếu hoặc header sai khi sử dụng lại giải pháp
- Không duy trì cùng một proxy cho các yêu cầu
- Không khớp dấu vân tay TLS
3. Tôi luôn cần proxy khi giải Cloudflare không?
- Challenge 5s cần proxy
- Turnstile có thể không cần proxy, nhưng proxy có thể giúp vượt qua các hạn chế trên trang nhạy cảm
4. Tôi có thể tự động hóa việc giải Cloudflare ở quy mô lớn không?
Có. Với proxy tốt, dấu vân tay thay đổi và logic tái sử dụng token, bạn có thể mở rộng việc quét — đảm bảo tuân thủ điều khoản trang web và yêu cầu pháp lý địa phương.
5. Turnstile khó giải hơn Challenge 5s không?
Turnstile thường dễ giải hơn vì nó thường trả về một token duy nhất. Challenge 5s yêu cầu cookie, header và sự nhất quán proxy, khiến nó phức tạp hơn.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.
Thêm

Cách vượt qua xác minh bạn là người thật của Cloudflare mà không bị mắc kẹt
Bị mắc kẹt ở "xác minh bạn là người" hoặc "Thử thách Cloudflare"? Học về các nguyên nhân phổ biến và khám phá các giải pháp kỹ thuật để hệ thống tự động vượt qua xác minh mỗi lần.

Rajinder Singh
19-Jan-2026

Cách vượt qua thử thách Cloudflare khi thu thập dữ liệu web vào năm 2026
Tìm hiểu cách vượt qua Cloudflare Challenge và Turnstile trong năm 2026 để thu thập dữ liệu web liền mạch. Khám phá tích hợp Capsolver, mẹo về dấu vân tay TLS và các bản sửa lỗi cho các lỗi thường gặp để tránh địa ngục CAPTCHA. Tiết kiệm thời gian và mở rộng quy mô quá trình trích xuất dữ liệu của bạn.

Emma Foster
07-Jan-2026

Tìm hiểu Lỗi 1010 của Cloudflare và cách khắc phục
Học cách giải quyết lỗi Cloudflare 1010, thường được gọi là "Access Denied: Bad Bot." Hiểu nguyên nhân gây ra lỗi này và khám phá các giải pháp thực tế, bao gồm tích hợp CapSolver, để vượt qua các kiểm tra bảo mật của Cloudflare và đảm bảo truy cập liền mạch vào các trang web.

Sora Fujimoto
04-Jan-2026

Làm thế nào để xác định xem cData có cần thiết để giải mã Cloudflare Turnstile bằng tiện ích mở rộng CapSolver không?
Học cách nhận diện cData để giải CAPTCHA hiệu quả của Cloudflare turnstile. Theo hướng dẫn từng bước của chúng tôi về việc sử dụng các công cụ và kỹ thuật của Capsolver.

Nikolai Smirnov
31-Dec-2025

Cách giải quyết Cloudflare Turnstile?
Giải nhanh Cloudflare Turnstile bằng API của CapSolver. Học cách tạo nhiệm vụ, quản lý proxy và truy xuất kết quả nhanh chóng để có trải nghiệm web mượt mà hơn.

Nikolai Smirnov
24-Dec-2025

Cách giải quyết các thách thức của Cloudflare?
Học cách giải quyết Thách thức Cloudflare với API Capsolver: Hướng dẫn từng bước về việc tạo nhiệm vụ và truy xuất kết quả, với hỗ trợ bằng Python và nhiều thứ khác

Nikolai Smirnov
23-Dec-2025


.