Tuần trước, tôi đã mất 40 phút để gỡ lỗi một script Python vốn chạy ngon lành trên ba website thử nghiệm — rồi mới phát hiện trang thứ tư đang nằm sau Cloudflare. Scraper cứ quay vòng ở trang “Checking your browser…” và chỉ trả về HTML của challenge. Nghe quen chứ?
Nếu bạn từng bị “kẹt cứng” như vậy, bạn không hề đơn độc. Hơn 24 triệu website đang hoạt động hiện dùng Cloudflare, trong đó có khoảng 22% toàn bộ website trên internet. Điều đó biến Cloudflare thành rào cản phổ biến nhất với bất kỳ ai muốn thu thập dữ liệu web — dù là để tạo lead, theo dõi giá, nghiên cứu bất động sản hay phân tích đối thủ.
Vấn đề là hầu hết các bài hướng dẫn đều liệt kê hàng loạt cách bypass theo kiểu rải đều, nhưng lại không nói rõ trong trường hợp nào thì nên thử cách nào trước. Bài viết này đi theo hướng khác: một cây quyết định theo thứ tự ưu tiên, ước tính độ tin cậy nói thẳng nói thật, và một lộ trình không cần code mà phần lớn bài khác bỏ qua.
- Độ khó: Từ cơ bản đến trung bình (tùy phương pháp bạn dùng)
- Thời gian cần thiết: Khoảng 10–30 phút cho lộ trình không cần code; các cách dùng code thì thay đổi tùy trường hợp
- Bạn cần gì: Trình duyệt Chrome (cho lộ trình không cần code), tùy chọn Python 3.9+ (cho các cách dùng code), và một URL mục tiêu
Cloudflare Protection là gì (và vì sao nó chặn scraper của bạn)?

Cloudflare là một reverse proxy nằm giữa người truy cập và máy chủ gốc của website. Mỗi request đều đi qua lớp biên của Cloudflare trước, và Cloudflare sẽ quyết định có trả trang, đưa ra challenge, hay chặn thẳng. Điều quan trọng cần hiểu là: Cloudflare không cần biết chắc scraper của bạn là độc hại. Nó chỉ cần đánh giá request của bạn đủ mức tự động hóa hoặc đáng ngờ là được.
Hệ thống Bot Management của Cloudflare hoạt động theo nhiều lớp — không phải một “ổ khóa” duy nhất, mà giống cả một trạm kiểm tra an ninh. Nó xem IP reputation, HTTP headers, TLS fingerprints, việc thực thi JavaScript, browser fingerprinting và các mẫu hành vi. Khi thư viện Python requests của bạn gửi GET đến một trang được bảo vệ bởi Cloudflare, nó thường bị rớt ở nhiều lớp cùng lúc: bắt tay TLS không đúng, không chạy JavaScript, không có cookie, không có browser fingerprint. Đó là lý do vì sao chuyện giả header đơn giản đã không còn ăn thua từ nhiều năm trước.
Những triệu chứng phổ biến nhất bạn sẽ gặp: 403 Forbidden, 503 kèm “Checking your browser…”, 1020 Access Denied, lặp challenge vô hạn, widget Turnstile không bao giờ qua được, và các trang HTML challenge thay vì JSON như bạn mong đợi.
Passive Detection: Cloudflare kiểm tra gì trước cả khi trang kịp tải
Ngay trước khi bạn nhìn thấy một trang, lớp kiểm tra thụ động của Cloudflare đã chấm điểm request của bạn:
- IP reputation: IP datacenter, dải IP cloud và các exit proxy đã biết thường bị gắn cờ. IP residential và mobile carrier được tin cậy hơn nhiều. Các báo cáo cộng đồng trong năm 2026 liên tục cho thấy duyệt web residential trên máy local thì qua, nhưng môi trường Docker hoặc VPS lại bị chặn.
- Phân tích HTTP headers: Cloudflare so sánh User-Agent, Accept-Language, thứ tự header và phiên bản HTTP của bạn. Chỉ cần lệch một chút — ví dụ nhận mình là Chrome 136 nhưng TLS handshake lại “lộ” ra Python — là đủ để bị phát hiện.
- TLS fingerprinting (JA3/JA4): Trong lúc bắt tay TLS, client của bạn để lộ mẫu cipher suite, extension và ưu tiên giao thức. JA3/JA4 nén những tín hiệu đó thành một định danh. Chrome thật và script Python
requestsđể lại những “hình dạng” rất khác nhau. - HTTP/2 fingerprinting: Browser và thư viện HTTP khác nhau ở SETTINGS frames của HTTP/2, thứ tự pseudo-header và hành vi ưu tiên. Công trình JA4 Signals của Cloudflare còn đi xa hơn nhận diện theo từng request đơn lẻ, mà theo dõi cả mẫu hành vi giữa các request theo thời gian.
- AI Labyrinth: Đây là cái bẫy mới hơn của Cloudflare. Thay vì chặn crawler đáng ngờ, nó đưa chúng vào các trang honeypot do AI tạo ra trông có vẻ hợp lý nhưng chỉ làm lãng phí tài nguyên của crawler. Có khi scraper của bạn còn chẳng nhận ra mình đã bị dính bẫy.
Active Detection: Những challenge chạy ngay trong trình duyệt
Khi các kiểm tra thụ động chưa đủ chắc chắn, Cloudflare sẽ nâng cấp lên challenge chủ động:
- JavaScript challenges: Lớp “Checking your browser…” kinh điển. JavaScript Detections của Cloudflare chạy script ẩn để nhận diện request tự động.
- Turnstile: Giải pháp thay thế CAPTCHA của Cloudflare. Các chế độ widget Turnstile gồm Managed, Non-Interactive và Invisible. Nó phân tích chuyển động chuột, môi trường trình duyệt, TLS fingerprint, v.v. — mà chưa chắc đã hiện ra một bài toán trực quan nào.
- Canvas và WebGL fingerprinting: Các kiểm tra này phát hiện browser headless render khác browser thật.
- Tín hiệu hành vi: Thời gian request, kiểu cuộn trang, chuỗi click. Một scraper kéo 50 trang trong 3 giây mà không hề có chuyển động chuột thì chẳng giống con người chút nào.
Kết luận thực tế: nếu Cloudflare đã đẩy bạn lên challenge chủ động, thì các HTTP client thuần như requests, httpx, hay thậm chí curl_cffi cũng không qua nổi. Bạn cần một thứ thực sự chạy trong môi trường trình duyệt thật.
Các cấp độ bảo vệ Cloudflare: vì sao cùng một script có thể chạy ở site này nhưng fail ở site khác
Đây là phần mà đa số hướng dẫn bypass bỏ sót hoàn toàn. Cloudflare không có một mức bảo vệ duy nhất. Một website dùng gói Free của Cloudflare với “Security Level: Medium” là một bài toán hoàn toàn khác với site dùng Enterprise, bật Bot Management và Turnstile. Cùng một script có thể chạy vèo vèo ở site này nhưng đâm sầm vào tường ở site kia.
| Cấp Cloudflare | Biện pháp phòng thủ điển hình | Độ khó vượt qua | Thường hiệu quả với |
|---|---|---|---|
| Gói Free (bảo mật thấp) | Bot Fight Mode, rule WAF cơ bản, IP reputation | ⭐ Thấp | Khám phá internal API, curl_cffi với header đúng, phiên trình duyệt thật |
| Gói Pro (trung bình) | Super Bot Fight Mode, Managed Challenge, JavaScript detections | ⭐⭐ Trung bình | Phiên trình duyệt thật, browser automation dạng stealth, residential proxies |
| Business | WAF mạnh hơn, Bot Analytics, challenge chặt hơn ở các đường dẫn quan trọng | ⭐⭐⭐ Trung bình–cao | Trích xuất bằng browser session, duy trì session, residential/mobile proxies, scraping API trả phí |
| Enterprise / Bot Management | Bot scores, trường JA3/JA4, rule theo endpoint, Turnstile, AI Labyrinth | ⭐⭐⭐⭐ Cao | Internal API (nếu truy cập được), công cụ dùng user session thật, scraping API cấp nhà cung cấp |

Trang giá của Cloudflare niêm yết Free là $0, Pro là $20/tháng, Business là $200/tháng, và Enterprise thì giá tuỳ chỉnh. Bot Fight Mode là công tắc đơn giản của gói Free; Super Bot Fight Mode bổ sung thêm nhiều kiểm soát cho Pro/Business; còn Enterprise Bot Management có bot scores chi tiết và rule riêng cho từng endpoint.
Cách nhận diện sơ bộ cấp độ bạn đang đối mặt: Nếu gặp 403 với màn chặn có thương hiệu Cloudflare nhưng không có script challenge, thường đó là WAF hoặc fingerprint bị từ chối. Nếu thấy cf-turnstile div hoặc script challenges.cloudflare.com/turnstile/v0/api.js, đó là Turnstile. Nếu thấy trang trung gian “Checking your browser”, đó thường là Managed Challenge. Nếu chỉ một số đường dẫn lỗi trong khi homepage vẫn tải được, rất có thể là WAF hoặc Bot Management rule theo từng endpoint.
Hãy xác định mức bảo vệ trước khi chọn cách tiếp cận. Bạn sẽ tiết kiệm được hàng giờ debug.
Cây quyết định “thử cái này trước” để vượt Cloudflare
Thay vì thử bừa, hãy đi theo thứ tự ưu tiên. Bắt đầu từ cách đơn giản và ổn định nhất, chỉ nâng cấp khi thật sự cần:
| Bước | Thử trước | Vì sao | Nếu thất bại → |
|---|---|---|---|
| 1 | Kiểm tra internal/undocumented API | Bỏ qua Cloudflare hoàn toàn; nhanh nhất, ổn định nhất | Bước 2 |
| 2 | Dùng công cụ no-code có render trình duyệt sẵn (ví dụ Thunderbit) | Không cần cài đặt, tự xử lý JS challenge | Bước 3 |
| 3 | Giả mạo TLS fingerprint (curl_cffi) | Nhanh, nhẹ, không cần browser | Bước 4 |
| 4 | Stealth browser automation (SeleniumBase UC / Puppeteer stealth) | Xử lý JS challenge + fingerprinting | Bước 5 |
| 5 | FlareSolverr + Docker | Mã nguồn mở, phù hợp server | Bước 6 |
| 6 | Scraping API trả phí (ScrapingBee, ZenRows, Scrapfly, v.v.) | Giao luôn cuộc đua chống bot cho nhà cung cấp | — |

Logic rất đơn giản: ưu tiên cách miễn phí và ít tốn công trước, còn cách cần code nhiều hoặc trả phí để sau. Hãy nhảy thẳng tới bước phù hợp với tình huống của bạn.
Một benchmark cộng đồng vào tháng 3/2026 cho biết curl_cffi vượt qua 16/20 domain được test (80%), FlareSolverr đạt khoảng 55–70%, và các proxy aggregator trả phí đạt xấp xỉ 97% tỷ lệ thành công trung bình — nhưng ngay trong thread đó cũng cảnh báo rằng các con số này thay đổi theo từng đợt Cloudflare cập nhật. Hãy xem mọi tỷ lệ thành công là chỉ mang tính định hướng, không phải cam kết.
Bước 1: Bỏ qua cuộc chiến — tìm internal API phía sau Cloudflare
Có bốn thread khác nhau trên forum mà tôi từng xem đều khuyên nên tìm internal API của site thay vì đối đầu trực diện với Cloudflare. Thành thật mà nói, đây là nước đi khôn ngoan nhất để bắt đầu. Nếu site có internal API, bạn bypass Cloudflare luôn — không cần mẹo, không cần giả fingerprint, không cần plugin stealth.

Cách làm theo quy trình:
- Mở Chrome DevTools → vào tab Network → lọc theo XHR/Fetch.
- Tương tác với trang: tìm kiếm, lọc, phân trang, cuộn. Hãy xem có response JSON nào xuất hiện trong Network tab không.
- Kiểm tra URL request và headers. Thường endpoint API không bị bảo vệ bởi Cloudflare hoặc mức bảo vệ nhẹ hơn trang frontend.
- Chuột phải vào request → Copy → Copy as cURL. Dán vào terminal hoặc Postman để test.
- Tái tạo request trong Python (dùng
requestshoặccurl_cffi) với cùng headers, cookies và query parameters.
Nếu API trả về JSON có cấu trúc rõ ràng, bạn có thể không cần scraper truyền thống nữa. Một thread Reddit từ tháng 1/2026 mô tả đúng tình huống này: một người bị Cloudflare chặn dù đã dùng curl_cffi, và phát hiện đường duy nhất khả thi là chặn response API trực tiếp.
Mẹo thực tế: Sau khi lệnh cURL copy chạy được, hãy bắt đầu lược bớt các header không cần thiết. Những header như sec-ch-ua, cookie, CSRF token, và referer có thể là bắt buộc; còn các control cache của browser thường thì không. Nếu chuyển từ cURL copy trong browser sang code, hãy giữ TLS fingerprint khớp với User-Agent.
Giới hạn: Không phải site nào cũng có API có thể truy cập. Một số API cần xác thực, CSRF token, tham số request được ký, hoặc cookie gắn với session. Nhưng khi hoạt động, đây là phương pháp gần như ~99% thành công với gần như không cần bảo trì.
Thử Thunderbit để scrape ngay trong trình duyệt
Bước 2: Lộ trình không cần code — vượt Cloudflare bằng tiện ích trình duyệt (Thunderbit)
Hầu hết các bài hướng dẫn khác đều mặc định người đọc sẽ viết Python hoặc JavaScript. Nhưng từ khóa này cũng thu hút đội sales xây list lead, bộ phận ecommerce theo dõi giá đối thủ, và chuyên viên bất động sản kéo dữ liệu nhà đất. Những người này không muốn dựng Docker container.
Vượt Cloudflare bằng tiện ích trình duyệt Get Started Free
Một Chrome extension như Thunderbit có thể xử lý rất tự nhiên nhiều kiểm tra của Cloudflare vì nó chạy ngay trong phiên trình duyệt thật của bạn. Nó thừa hưởng TLS fingerprint thật của Chrome, cookie, trạng thái đăng nhập, và tín hiệu hành vi của bạn — đúng những thứ Cloudflare tin tưởng. Không cần plugin stealth, không cần xvfb-run, không cần gõ lệnh terminal.

Hướng dẫn từng bước
- Cài Thunderbit Chrome Extension từ Chrome Web Store.
- Mở trang được bảo vệ bởi Cloudflare trong Chrome. Nếu Cloudflare đưa ra challenge, hãy vượt qua như một người dùng bình thường — bấm checkbox Turnstile, chờ trang “Checking your browser” biến mất. Bạn là người thật trong trình duyệt thật; Cloudflare sẽ cho qua.
- Bấm “AI Suggest Fields” ở thanh bên Thunderbit. AI sẽ quét trang và đề xuất các cột dữ liệu như “Product Name,” “Price,” “Rating,” hoặc bất kỳ trường nào phù hợp.
- Rà soát các trường được đề xuất. Bỏ những gì không cần, thêm trường tuỳ chỉnh bằng cách mô tả bằng tiếng Anh tự nhiên.
- Bấm “Scrape.” Thunderbit sẽ trích xuất dữ liệu từ trang đang hiển thị.
- Xuất dữ liệu sang Google Sheets, Excel, Airtable, Notion, CSV hoặc JSON.
Với các website có phân trang, Thunderbit xử lý cả pagination bằng click lẫn infinite scroll. Với trang chi tiết (ví dụ bạn có danh sách link sản phẩm và muốn lấy thông số từ từng trang), hãy dùng subpage scraping — Thunderbit sẽ đi qua từng trang chi tiết được liên kết và làm giàu bảng dữ liệu của bạn.
Theo kinh nghiệm của tôi, quy trình này thường mất khoảng 5–10 phút từ lúc cài đặt đến lúc xuất được bảng tính cho bộ dữ liệu 50–100 dòng điển hình.
Khi nào scrape bằng trình duyệt là tốt nhất, và khi nào thì không
Tôi muốn nói rõ về giới hạn. Scrape bằng trình duyệt bị ràng buộc bởi tốc độ session của bạn. Nó lý tưởng cho công việc quy mô vừa — từ vài trăm đến vài nghìn trang. Nếu bạn cần crawl hàng triệu trang theo lịch, bạn sẽ muốn dùng cách dựa trên code hoặc API.
Tùy chọn Cloud Scraping của Thunderbit có thể tăng tốc bằng cách scrape tối đa 50 trang cùng lúc cho các site công khai. Và với workflow của developer hoặc quy mô lớn hơn, Thunderbit Web Scraper API xử lý render JavaScript, chống bot và xoay proxy với batch lên tới 50–100 URL mỗi request.
Nhưng với người dùng kinh doanh đang scrape lead, dữ liệu giá hoặc danh sách bất động sản ở quy mô hợp lý? Đây thường là phương pháp duy nhất bạn cần. Không code, không proxy, không phải bảo trì.
Bước 3: Giả mạo TLS fingerprint bằng curl_cffi (cách code nhẹ)
Nếu bạn quen Python và lộ trình không cần code không khớp với workflow của bạn, curl_cffi là lựa chọn code nhẹ nhất. Đây là Python binding dựa trên libcurl, có thể giả lập TLS fingerprint của browser thật. Khác với requests hay httpx, bắt tay TLS của bạn sẽ trông giống như đến từ Chrome hoặc Safari.
Tính đến năm 2026, các điểm giả lập được hỗ trợ bao gồm chrome136, safari184 và nhiều profile lịch sử khác. Thư viện này còn có bản phát hành PyPI vào tháng 4/2026, nên vẫn đang được duy trì tích cực.
Khi nào nên dùng: Các site có bảo vệ Cloudflare mức Free hoặc Pro, chủ yếu dựa vào fingerprint thụ động — không có JavaScript challenge chủ động, không có Turnstile.
Ví dụ cơ bản:
from curl_cffi import requests
url = "https://example.com/products"
resp = requests.get(
url,
impersonate="chrome136",
headers={
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept-language": "en-US,en;q=0.9",
},
timeout=30,
)
print(resp.status_code)
print(resp.text[:500])
Một lỗi rất hay gặp: Hãy giữ User-Agent khớp với target giả lập. Nếu bạn giả lập Chrome 136, đừng gửi User-Agent của Chrome 120. Sự không nhất quán là một tín hiệu.
Giới hạn: curl_cffi không thực thi JavaScript. Nếu site hiển thị challenge “Checking your browser” hoặc widget Turnstile, cách này sẽ thất bại. Nó cũng không hữu ích với site yêu cầu trạng thái session dựa trên cookie từ challenge của trình duyệt. Hãy xem nó như một nỗ lực đầu tiên nhanh và rẻ cho lớp bảo vệ chỉ dựa trên passive signals.
Các lựa chọn cùng nhóm: tls-client và curl-impersonate cũng cung cấp khả năng giả lập TLS tương tự.
Bước 4: Stealth browser automation (Puppeteer Stealth và SeleniumBase UC)
TLS spoofing sẽ không đủ khi site yêu cầu thực thi JavaScript, challenge chủ động hoặc Turnstile. Lúc đó bạn cần một trình duyệt đầy đủ. Có hai lựa chọn chính:
- SeleniumBase UC Mode (Python): Tài liệu chính thức mô tả UC Mode là cách để automation trông “người” hơn và tránh các dịch vụ chống bot. Nó có cả ví dụ xử lý Cloudflare Turnstile.
- Puppeteer với
puppeteer-extra-plugin-stealth(Node.js): Vẫn được dùng rộng rãi, nhưng ngày càng mong manh trong 2026. Báo cáo cộng đồng mô tả việc bị phát hiện qua cờ CDP (Chrome DevTools Protocol) và profile browser không khớp.
Cả hai công cụ đều khởi chạy một Chromium thật nhưng vá các tín hiệu automation có thể bị phát hiện: navigator.webdriver, metadata WebGL, danh sách plugin, và nhiều thứ khác.
Những mẹo cấu hình thật sự quan trọng:
- Dùng chế độ headed (không headless). Tài liệu SeleniumBase cảnh báo rằng UC Mode có thể bị phát hiện khi chạy headless. Trên server Linux, hãy dùng virtual display.
- Random hóa viewport và User-Agent, nhưng phải đảm bảo chúng nhất quán với nhau và với vị trí địa lý của proxy.
- Thêm độ trễ thực tế giữa các hành động. Cách nhau 200ms giữa các lần tải trang là lộ bot ngay.
- Lưu cookie và browser profile sau khi vượt challenge ban đầu. Đừng giải lại challenge ở mỗi request.
- Kết hợp với residential proxy để cải thiện IP reputation.
Rủi ro của cách này nằm ở bảo trì. Bộ automation trình duyệt có thể hỏng khi Chrome cập nhật, Cloudflare thêm tín hiệu mới, plugin stealth chậm cập nhật, hoặc target thêm Turnstile theo từng đường dẫn. Một benchmark của ScrapeOps cho thấy nhiều bộ stealth-browser vẫn fail các bài test fingerprint do tổ hợp “franken-fingerprint” — timezone, ngôn ngữ và địa lý proxy không khớp nhau.
Cách này rất mạnh nhưng chi phí vận hành cao. Hãy dành ngân sách thời gian cho việc sửa chữa liên tục.
Xoay proxy: vì sao IP quan trọng chẳng kém fingerprint
Ngay cả khi browser stealth hoàn hảo, gửi quá nhiều request từ một IP vẫn sẽ kích hoạt rate limit. Cloudflare tin IP residential và mobile hơn rất nhiều so với IP datacenter.
- Residential proxies: khoảng ~$1.50–$8+/GB ở mức dung lượng ban đầu trong năm 2026. Được tin cậy hơn nhưng đắt hơn.
- Datacenter proxies: rẻ hơn, nhưng thường fail khá nhanh với các mục tiêu Cloudflare nghiêm túc.
- Chiến lược xoay: xoay theo session, không xoay theo request. Xoay theo request sẽ phá cookie gắn session và
cf_clearance. Hãy giữ IP, cookie và fingerprint nhất quán trong cùng một session.
Không có “kích thước tối thiểu” kỳ diệu cho pool proxy. Một tác vụ scrape lead ít volume có thể chạy với vài session residential sticky; còn một hệ thống theo dõi giá volume cao có thể cần hàng trăm exit cùng logic retry.
Bước 5: FlareSolverr — server bypass Cloudflare mã nguồn mở
FlareSolverr là một proxy server mã nguồn mở, dùng Chromium với undetected-chromedriver trong Docker để giải Cloudflare challenge rồi trả về cookie/header để tái sử dụng. Dự án này có bản phát hành v3.5.0 vào tháng 5/2026, nên vẫn đang được duy trì.
Khi nào nên dùng: Pipeline scrape phía server, nơi bạn cần một dịch vụ giải challenge ổn định — ví dụ một job tự động chạy ban đêm và cần cookie cf_clearance mới.
Cơ chế hoạt động: Scraper của bạn gửi URL tới API của FlareSolverr. FlareSolverr mở trang trong browser, cố gắng giải challenge, rồi trả lại HTML cùng cookie. Sau đó bạn có thể dùng lại cookie đó trong HTTP client thông thường cho các request tiếp theo.
Tổng quan cài đặt: Dùng Docker Compose, khởi chạy container, gửi POST request đến local API endpoint. ScrapeOps có một bài hướng dẫn khá ổn.
Những giới hạn cần nói rõ ngay:
- Không thể giải đáng tin cậy các challenge Turnstile tương tác hoặc Enterprise Bot Management.
- Issue trên GitHub và thread Reddit cho thấy hành vi không ổn định: phát hiện challenge sai, timeout Turnstile, crash trang.
- Cần hạ tầng Docker và phải bảo trì thường xuyên.
- Tốn tài nguyên — mỗi lần giải challenge sẽ khởi chạy một browser context.
Độ tin cậy ước tính: 60–80% với target bảo vệ mức trung bình. Thấp hơn với Enterprise, cao hơn với các trang challenge đơn giản. Nếu FlareSolverr không đáp ứng, đã đến lúc nghĩ đến API trả phí.
Bước 6: Scraping API trả phí lo phần Cloudflare cho bạn
Đôi khi bài toán rất đơn giản: tự duy trì hạ tầng stealth tốn chi phí engineering hơn cả phí thuê dịch vụ. Scraping API trả phí sẽ gánh toàn bộ cuộc đua chống bot cho nhà cung cấp chuyên trách — bạn chỉ gửi URL, họ lo fingerprinting, proxy, giải challenge và retry.
Cách so sánh các dịch vụ:
| Nhà cung cấp | Hỗ trợ Cloudflare | Render JS | Residential proxy | Đầu ra có cấu trúc | Mô hình giá |
|---|---|---|---|---|---|
| ScrapingBee | Có | Có | Có | Chỉ HTML | Credit theo request |
| ZenRows | Có (tuyên bố >99% thành công) | Có | Có (premium) | HTML, một phần parsing | CPM có hệ số nhân |
| Scrapfly | Có (liệt kê CF, Akamai, DataDome) | Có | Có | HTML, một phần parsing | Credit-based |
| Browserless | Có | Có (headless Chrome) | Có (tích hợp sẵn) | HTML, screenshots | Unit-based |
| Thunderbit API | Có | Có | Có | JSON/CSV có cấu trúc nhờ AI schema | Có gói miễn phí + gói trả phí |
Khi nào hợp lý: Scraping volume lớn, cần độ ổn định cấp enterprise, hoặc team bạn không muốn tự duy trì hạ tầng scraping. Mức chi phí thường vào khoảng $30–$500+/tháng cho nhu cầu nhỏ đến trung bình, và tăng cao hơn với enterprise.
Thunderbit API đáng được nhắc riêng vì nó xuất ra dữ liệu có cấu trúc chứ không chỉ HTML thô. Extract endpoint có thể xử lý batch tới 50 URL mỗi request và trả JSON/CSV dựa trên schema do AI tạo — rất hữu ích nếu bạn cần dữ liệu sạch, sẵn sàng phân tích thay vì HTML để tự parse.
Bảng xếp hạng độ tin cậy trung thực: cái gì thật sự chạy được, và cái gì dễ gãy
Tôi đã theo dõi báo cáo cộng đồng, issue trên GitHub và tuyên bố của nhà cung cấp xuyên suốt 2025–2026. Phần dưới đây là bảng so sánh thẳng thắn. Đây là ước tính định hướng, không phải benchmark trong phòng lab:

| Phương pháp | Tỷ lệ thành công ước tính | Gánh nặng bảo trì | Sẽ hỏng khi… | Mức chi phí |
|---|---|---|---|---|
| Internal API (nếu có) | ~90–99% | Thấp | API đổi, thêm auth, token được ký | Miễn phí |
| Browser extension (Thunderbit) | ~85–95% (phiên thật) | Thấp (AI thích ứng với layout đổi) | Site cần flow xác thực đặc biệt, Turnstile quá gắt theo từng thao tác | Có gói miễn phí |
curl_cffi / TLS spoofing | ~70–85% | Trung bình (cần cập nhật fingerprint) | Cloudflare đổi JA3 checks, cần JS challenge chủ động | Miễn phí |
| Puppeteer + stealth plugin | ~70–90% | Cao (plugin cập nhật chậm) | Phát hiện CDP, tín hiệu fingerprint mới, headless detection | Miễn phí + chi phí proxy |
| FlareSolverr | ~60–80% | Cao (Docker, phụ thuộc thay đổi) | Bảo vệ cấp Enterprise, tương tác Turnstile | Miễn phí + chi phí hạ tầng |
| Paid scraping API | ~85–95% | Thấp (nhà cung cấp tự duy trì) | Nhà cung cấp chưa kịp cập nhật; vượt ngân sách | Khoảng ~$30–500+/tháng |
Cột quan trọng nhất không phải tỷ lệ thành công — mà là “Sẽ hỏng khi…”. Mỗi phương pháp đều có điểm gãy. Chiến lược tốt nhất là chọn phương pháp ít tốn công nhất mà vẫn chạy được cho target của bạn, rồi chuẩn bị một phương án dự phòng.
Không có giải pháp vĩnh viễn. Cloudflare liên tục cập nhật. Cuộc chạy đua này là có thật.
Mẹo để không bị Cloudflare để ý quá sớm dù dùng cách nào
Bất kể bạn chọn phương pháp nào, một vài thói quen sẽ giúp bạn “ẩn mình” trước Cloudflare lâu hơn:
- Tôn trọng rate limit. Thêm độ trễ hợp lý giữa các request — tối thiểu 2–5 giây nếu muốn giống người dùng. Đánh site với tốc độ máy là cách nhanh nhất để bị chặn.
- Giữ fingerprint nhất quán. User-Agent, TLS fingerprint, phiên bản browser, múi giờ, locale và vị trí IP phải kể cùng một câu chuyện. Một User-Agent Chrome 136 từ IP Đức, locale
en-USvà TLS handshake kiểu Python là quá mâu thuẫn. - Tái sử dụng cookie và session sau khi vượt challenge. Đừng giải lại challenge ở mỗi request.
- Đừng đổi IP giữa session. Cloudflare theo dõi tính liên tục của session.
- Dùng IP residential hoặc mobile khi use case và ngân sách cho phép.
- Theo dõi soft block: HTML challenge trong khi bạn đang mong JSON, bảng rỗng, redirect sang login, hoặc trang trông rất giống bẫy AI Labyrinth.
- Tránh giờ cao điểm khi bên vận hành site có thể siết WAF rule.
- Xây đường dự phòng: ưu tiên API → browser session → nhà cung cấp trả phí.
Riêng với người dùng Thunderbit, AI sẽ tự thích ứng khi layout trang thay đổi, nên bạn mất ít thời gian bảo trì CSS selector hơn và có nhiều thời gian hơn để dùng dữ liệu thực sự.
Một lưu ý nhanh về pháp lý và đạo đức
Không phải trọng tâm của bài viết này, nhưng quá quan trọng để bỏ qua.
Scraping dữ liệu công khai có tiền lệ pháp lý thuận lợi ở Mỹ trong một số bối cảnh — lập luận CFAA trong vụ hiQ kiện LinkedIn đã vượt qua phán quyết trả về của Tòa Tối cao, dù hai bên đã dàn xếp vào năm 2022 và bức tranh pháp lý đầy đủ vẫn khá phức tạp. Gần đây hơn, Reddit đã kiện Anthropic vào năm 2025 vì cáo buộc scrape bình luận người dùng, và Reddit cũng kiện Perplexity cùng các công ty scraping dữ liệu vào cuối năm đó.
Ở EU, GDPR áp dụng bất cứ khi nào có dữ liệu cá nhân, và EU AI Act bổ sung các nghĩa vụ cụ thể liên quan đến scraping không nhắm mục tiêu để huấn luyện AI.
Một vài nguyên tắc thực tế:
- Luôn kiểm tra Điều khoản Dịch vụ của website.
- Việc dùng Cloudflare protection là tín hiệu cho thấy chủ site muốn kiểm soát truy cập tự động — hãy tôn trọng điều đó.
- Tránh thu thập dữ liệu cá nhân nếu không có cơ sở hợp pháp.
- Với workflow thương mại hoặc khối lượng lớn, hãy ưu tiên API chính thức, dữ liệu được cấp phép hoặc xin phép bằng văn bản nếu có thể.
- Khi không chắc chắn, hãy hỏi luật sư về trường hợp và khu vực pháp lý cụ thể của bạn.
Thunderbit được thiết kế cho các nhu cầu kinh doanh hợp pháp — tạo lead, theo dõi giá, nghiên cứu thị trường — trên dữ liệu công khai.
Kết luận: nên thử gì trước và thử gì tiếp theo
Điều tiết kiệm thời gian lớn nhất trong toàn bộ bài viết này không phải là một tool hay một đoạn code — mà là xác định cấp độ bảo vệ trước khi bắt đầu. Chỉ riêng việc đó đã giúp bạn tránh hàng giờ debug cho một phương pháp vốn dĩ không bao giờ hoạt động.
Bắt đầu ở đây:
- Kiểm tra internal API (miễn phí, nhanh, và thường bị bỏ qua).
- Nếu bạn là người dùng kinh doanh không viết code, hãy thử Thunderbit Chrome Extension — phiên trình duyệt thật của bạn là tài sản mạnh nhất khi đối đầu với Cloudflare.
- Nếu bạn là developer và target chỉ dùng fingerprint thụ động, hãy thử
curl_cffi. - Chỉ nâng lên stealth browser, FlareSolverr hoặc API trả phí khi các cách đơn giản hơn không hiệu quả.
Không có phương pháp nào là vĩnh viễn. Hãy kết hợp đúng công cụ cho đúng quy mô với một kế hoạch dự phòng, và bạn sẽ phải nhìn thấy ít trang 403 hơn rất nhiều.
Nếu muốn tìm hiểu sâu hơn, chúng tôi đã viết về web scraping không cần code, AI web scraping, và những AI web scraper tốt nhất trên blog Thunderbit. Và nếu bạn muốn xem extension hoạt động thực tế, hãy ghé kênh YouTube của Thunderbit để xem video hướng dẫn.
Thử Thunderbit cho các site được bảo vệ bởi Cloudflare
Thử Thunderbit AI Web Scraper Get Started Free
Câu hỏi thường gặp
1. Có thể vượt Cloudflare hoàn toàn không?
Không có phương pháp nào đảm bảo thành công 100%, đặc biệt với Bot Management cấp Enterprise có Turnstile, fingerprinting JA4 và AI Labyrinth. Cách đáng tin cậy nhất là kết hợp fingerprint trình duyệt thật với IP reputation tốt. Tìm được internal API là cách gần nhất với “vượt hoàn toàn”, vì nó tránh Cloudflare ngay từ đầu — nhưng không phải site nào cũng có.
2. Vượt Cloudflare khi scrape dữ liệu có hợp pháp không?
Điều này phụ thuộc vào khu vực pháp lý, Điều khoản Dịch vụ của website và dữ liệu bạn thu thập. Việc scrape dữ liệu công khai có tiền lệ pháp lý thuận lợi ở Mỹ trong một số bối cảnh (hiQ v. LinkedIn), nhưng việc vượt qua cơ chế kiểm soát truy cập kỹ thuật, vi phạm ToS hoặc thu thập dữ liệu cá nhân mà không có cơ sở hợp pháp có thể tạo rủi ro pháp lý. Với workflow thương mại, nếu có thể hãy ưu tiên API chính thức hoặc dữ liệu được cấp phép, và hỏi luật sư nếu bạn chưa chắc.
3. Cách dễ nhất để vượt Cloudflare mà không cần code là gì?
Các browser extension như Thunderbit chạy ngay trong phiên Chrome thật của bạn có thể xử lý Cloudflare challenge tự động — bạn tương tác với site như một người dùng bình thường, rồi để extension trích xuất và xuất dữ liệu. Không cần Python, không cần Docker, không cần cấu hình proxy.
4. Vì sao scraper của tôi chạy được ở một số site Cloudflare nhưng lại fail ở site khác?
Mức bảo vệ của Cloudflare thay đổi rất mạnh theo gói (Free, Pro, Business, Enterprise) và cấu hình. Một phương pháp chạy tốt với JS challenge cơ bản ở site gói Free có thể thất bại trước Turnstile hoặc Bot Management đầy đủ ở site Enterprise. Luôn xác định cấp độ bảo vệ trước — xem đó là JS check đơn giản, Managed Challenge hay widget Turnstile — rồi mới chọn cách bypass.
5. Các cách bypass Cloudflare thường hỏng sau bao lâu?
Các phương pháp dựa trên code như plugin stealth và TLS spoofing có thể xuống cấp sau vài tuần đến vài tháng với target khó, khi Cloudflare cập nhật cơ chế phát hiện. API trả phí và công cụ dùng phiên trình duyệt thật thường bền hơn vì chúng thích ứng ở tầng hạ tầng hoặc tầng session người dùng. Internal API hiếm khi hỏng, trừ khi site thiết kế lại backend hoặc đổi mô hình xác thực. Chiến lược dài hạn an toàn nhất là có nhiều phương án dự phòng thay vì phụ thuộc vào một cách duy nhất.
Tìm hiểu thêm


