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

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
Bài viết blog này khám phá các kỹ thuật hiệu quả để giải quyết các biện pháp bảo vệ này nhờ sự hỗ trợ của CapSolver, một công cụ chuyên về giải quyết CAPTCHAs. Từ việc giải thích các quy trình bảo mật của Cloudflare đến việc cung cấp các chiến lược thực tế và mẫu mã code để vượt qua các hạn chế này.

Aloísio Vítor
09-Dec-2025

Cách giải Captcha Turnstile của Cloudflare bằng NodeJS
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách giải CAPTCHA Turnstile của Cloudflare bằng NodeJS.

Aloísio Vítor
08-Dec-2025

Cách khắc phục Lỗi 403 Truy cập bị từ chối của Cloudflare và 522/1020/1010/1015/1012
Cloudflare là một mạng phân phối nội dung (CDN) và dịch vụ bảo mật được sử dụng rộng rãi giúp các website giảm thiểu các mối đe dọa, bao gồm tấn công DDoS và bot gây hại...

Ethan Collins
08-Dec-2025

Lỗi Cloudflare 1006, 1007, 1008 - Giải pháp khắc phục | Cách sửa lỗi
Đang vật lộn với lỗi Cloudflare 1006, 1007 hoặc 1008? Tìm hiểu các giải pháp thực tế để giải quyết các lần từ chối truy cập này và nâng cao trải nghiệm quét web của bạn.

Rajinder Singh
05-Dec-2025

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

Aloísio Vítor
05-Dec-2025

Cách tự động hóa việc giải quyết bài kiểm tra Cloudflare trong Selenium
Nắm vững chiến lược tối ưu để giải quyết Cloudflare Challenge trong Selenium. Sử dụng Undetected-Chromedriver, mô phỏng hành vi và API của CapSolver để tự động hóa web đáng tin cậy.

Anh Tuan
04-Dec-2025


.