Cloudflare Challenge
và CapMonster Cloud

Giải captcha, cài đặt trên trang web và kiểm tra.

Giá của giải pháp Cloudflare Challenge

CAPTCHA
Giá (USD)
$ 1.30
1000 token
$ 1.30
1000 token
Bạn nhận lại một website đã có captcha hoặc lớp bảo vệ khác nhưng không có quyền truy cập mã nguồn? Khi đó điều bạn cần biết là giải pháp nào đang chạy, cấu hình có đúng không và cách kiểm tra như thế nào.

Trong bài viết này, chúng tôi đã cố gắng trả lời tất cả những câu hỏi quan trọng. Bước đầu tiên để bắt đầu giải quyết vấn đề là xác định hệ thống bảo mật nào đang được sử dụng. Để làm điều đó, bạn có thể tham khảo danh sách các captcha và hệ thống chống bot phổ biến, trong đó có các ví dụ minh họa và những dấu hiệu chính giúp bạn nhanh chóng nhận biết mình đang làm việc với giải pháp nào.

Nếu bạn phát hiện trang web của mình đang sử dụng Cloudflare Challenge, bước tiếp theo là tìm hiểu chi tiết hơn về các đặc tính và cách hoạt động của nó. Ngay trong bài viết này, bạn cũng có thể xem hướng dẫn tích hợp hệ thống Cloudflare Challenge để hiểu đầy đủ cách nó vận hành trên trang web của bạn. Điều đó giúp bạn không chỉ nắm rõ lớp bảo vệ hiện tại mà còn lập kế hoạch bảo trì một cách hợp lý.

Cloudflare Challenge là gì
Cloudflare Challenge là gì
Cloudflare Challenge (hoặc Interstitial Challenge Pages) là một hệ thống xác minh của Cloudflare, được thiết kế để bảo vệ các trang web khỏi bot, spam và lưu lượng độc hại. Khi Cloudflare nghi ngờ rằng yêu cầu không đến từ người dùng thực (ví dụ: IP đáng ngờ hoặc thiếu JavaScript), nó sẽ hiển thị Challenge — tức là một 'thử thách' mà người dùng phải hoàn thành để xác nhận mình là con người. Loại xác minh này khác với Turnstile, vì người dùng trước tiên sẽ thấy một trang trung gian với thông báo “Just a moment…” và “Verifying you are human. This may take a few seconds.”

Cách giải Cloudflare Challenge bằng CapMonster Cloud

Khi kiểm tra lớp bảo vệ với Cloudflare Challenge, điều quan trọng là đảm bảo quá trình xác minh hoạt động đúng và loại bỏ đúng lưu lượng đáng ngờ.
Bạn có thể kiểm tra challenge đã cài đặt trên trang của mình thủ công:
  • Mở trang web ở chế độ ẩn danh nơi Challenge dự kiến xuất hiện và đảm bảo captcha hiển thị.
  • Thử đặt cookie cf_clearance sai trong trình duyệt (xem thông tin chi tiết bên dưới) — server sẽ trả về lỗi.
  • Sau khi giải captcha thành công, trang web thực tế sẽ mở ra mà không cần xác minh.
Để kiểm tra tự động và nhận diện captcha, bạn có thể sử dụng các dịch vụ chuyên dụng như CapMonster Cloud — công cụ này nhận các tham số captcha, xử lý trên server và trả về giải pháp sẵn sàng. Giải pháp này (token hoặc cookie) có thể được chèn vào form hoặc trình duyệt để vượt qua xác minh mà không cần người dùng tham gia.

Làm việc với CapMonster Cloud qua API thường gồm các bước:

Tạo nhiệm vụTạo nhiệm vụ
arrow
Gửi yêu cầu APIGửi yêu cầu API
arrow
Nhận kết quảNhận kết quả
arrow
Chèn cf_clearanceChèn cf_clearance
arrow
Nhận diện Cloudflare Challenge bằng thư viện có sẵn
Dịch vụ CapMonster Cloud cung cấp thư viện sẵn sàng cho Python, JavaScript (Node.js)C#.
Python
JavaScript
C#
Giải Challenge và chèn cookie
Ví dụ Node.js cho toàn bộ quy trình nhận diện captcha trên trang của bạn. Các cách tiếp cận: dùng yêu cầu HTTP để lấy HTML và tham số hệ thống bảo vệ, gửi phản hồi và xử lý kết quả. Hoặc dùng công cụ tự động hóa (ví dụ Playwright) — mở trang, chờ xác minh, gửi tham số qua CapMonster Cloud, nhận kết quả, chèn cookie vào trình duyệt (có thể dùng dữ liệu đúng hoặc sai để test) và xem kết quả.
python

  // npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from 'playwright';
import {
  CapMonsterCloudClientFactory,
  ClientOptions,
  TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';

// Cấu hình — thay bằng giá trị của bạn
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // Có thể gửi bất kỳ chuỗi nào
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36';

// Cấu hình proxy
const proxy = {
  proxyType: 'http',
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

  const cmcClient = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  // Khởi chạy trình duyệt
  const browser = await chromium.launch({
    headless: false,
    proxy: proxy.proxyAddress ? {
      server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
      username: proxy.proxyLogin,
      password: proxy.proxyPassword
    } : undefined
  });

  // Tạo context với User-Agent và kích thước cửa sổ cần thiết (tùy chọn)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Tạo trang và tải URL mục tiêu
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Trạng thái yêu cầu ban đầu:', resp?.status());

  // Lấy HTML của trang và chuyển sang Base64 cho CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Tạo nhiệm vụ Turnstile để lấy cf_clearance
  const solveResult = await cmcClient.Solve(new TurnstileRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    cloudflareTaskType: 'cf_clearance',
    htmlPageBase64: htmlBase64,
    userAgent: USER_AGENT,
    proxy: proxy.proxyAddress ? proxy : undefined
  }));

  const cf_clearance = solveResult?.solution?.cf_clearance;
  if (!cf_clearance) {
    console.error('Không thể lấy cf_clearance từ CapMonster:', solveResult);
    await browser.close();
    return;
  }
  console.log('cf_clearance nhận được:', cf_clearance);

  // Thêm cookie cf_clearance vào context trình duyệt
  await context.addCookies([{
    name: 'cf_clearance',
    value: cf_clearance,
    domain: '.' + new URL(TARGET_URL).hostname,
    path: '/',
    httpOnly: true,
    secure: true
  }]);
  console.log('Cookie cf_clearance đã được thêm thành công vào trình duyệt.');

  // Mở lại trang với cf_clearance đã được cài
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Trạng thái yêu cầu sau khi đặt cf_clearance:', resp2?.status());

  await browser.close();
  console.log('Script hoàn tất.');
}

main().catch(err => {
  console.error('Đã xảy ra lỗi:', err);
  process.exit(1);
});
  
Cách kết nối Cloudflare Challenge với trang web của bạn
Để hiểu cách captcha hoạt động trên trang, logic kiểm tra và cách kết nối hoặc cấu hình lại, chúng tôi khuyến nghị phần này. Nó mô tả quá trình triển khai bảo vệ và giúp bạn nắm nhanh các chi tiết.
1. Đăng ký hoặc đăng nhập tài khoản và kết nối tên miền với Cloudflare.
2. Kích hoạt Challenge thông qua luật WAF.
Đi tới: Security → Custom Rules → Create rule
HowTo Connect image 1

Ví dụ điều kiện (kiểm tra toàn bộ trang login):
javascript
http.request.uri.path contains "/login"
3. Chọn hành động:
Managed Challenge (khuyến nghị) — hệ thống tự quyết định có hiển thị Challenge và loại nào.
Đặt các cài đặt còn lại và nhấn Deploy.
Sau khi xác minh, người dùng nhận được cookie cf_clearance — giúp tránh hiển thị Challenge lại trên cùng thiết bị và trình duyệt.
Background
Các lỗi thường gặp và cách xử lý
Bug Icon
Tên miền hoặc cấu hình luật không hợp lệ
Challenge không hiển thị. Kiểm tra xem luật WAF có liên kết với URI, đường dẫn hoặc host đúng không.
Bug Icon
Hết thời gian tải trang hoặc challenge
Trình duyệt hoặc client không chờ phản hồi từ Cloudflare. Tăng timeout trong kiểm tra và giám sát.
Bug Icon
Kiểm tra lại hoặc cf_clearance hết hạn
Nếu người dùng sử dụng cf_clearance đã hết hạn, hệ thống sẽ hiển thị lại Challenge.
Bug Icon
Có xác minh khác sau Challenge
Sử dụng Challenge cùng lúc với luật tùy chỉnh có thể dẫn đến kiểm tra vòng lặp. Làm theo khuyến nghị của Cloudflare để giải quyết.
Kiểm tra độ bền vững của lớp bảo vệ
Khuyến nghị về bảo mật và tối ưu
Cấu hình WAF và Managed/JS/Interactive Challenge theo mức rủi ro.
Ghi lại sự kiện bảo mật và trạng thái vượt Challenge để hiểu lý do chặn và cảnh báo sai.
Để minh bạch và tuân thủ, thêm liên kết tới <span class="font-bold">Chính sách quyền riêng tư</span> và <span class="font-bold">Điều khoản sử dụng</span> Cloudflare/trang web trên các trang có Challenge.
Kết luận

Nếu bạn tiếp quản một trang web đã được cài sẵn captcha hoặc một hệ thống bảo vệ khác nhưng lại không có quyền truy cập vào mã nguồn thì cũng không có gì đáng lo! Việc xác định chính xác công nghệ nào đang được sử dụng khá đơn giản. Để kiểm tra xem mọi thứ có hoạt động đúng hay không, bạn có thể dùng dịch vụ nhận dạng CapMonster Cloud trong một môi trường thử nghiệm tách biệt nhằm đảm bảo cơ chế xử lý token và logic kiểm tra đang vận hành chính xác.

Với Cloudflare Challenge, bạn chỉ cần nhận diện hệ thống, quan sát hành vi của nó và xác nhận rằng lớp bảo vệ hoạt động đúng cách. Trong bài viết này, chúng tôi đã chỉ ra cách nhận biết Cloudflare Challenge và nơi tìm hướng dẫn tích hợp hoặc cấu hình lại, giúp bạn tự tin duy trì lớp bảo vệ và kiểm soát hoạt động của nó.

Conclusion

Câu hỏi thường gặp về Cloudflare Challenge

Cloudflare sử dụng cookie cf_clearance để nhận diện client đã vượt qua xác minh. API CapMonster Cloud trả về cookie này trong phản hồi getTaskResult.

Đối với yêu cầu HTTP thô: gửi trong header Cookie: cf_clearance=<value> ở các yêu cầu tiếp theo tới trang web đích.

Đối với tự động hóa trình duyệt: chèn vào ngữ cảnh trình duyệt trước khi tải lại URL được bảo vệ bằng Playwright, Selenium, Puppeteer hoặc trình duyệt headless khác để tự động giải trang Cloudflare «Just a moment».

Nếu cookie cf_clearance không còn hợp lệ, Cloudflare có thể hiển thị lại challenge thay vì cấp quyền truy cập nội dung được bảo vệ. Khi đó:

  1. Tạo yêu cầu createTask mới sử dụng htmlPageBase64 mới (trang HTML «Just a moment» mã hóa Base64, hiển thị với phản hồi 403) từ phản hồi challenge
  2. Nhận giá trị cf_clearance mới.
  3. Thử lại yêu cầu tới trang đích với cookie cf_clearance mới.

Turnstile thường nhúng widget vào trang hoặc luồng biểu mẫu, trong khi Cloudflare Bot Challenge ngắt yêu cầu bằng trang chuyển tiếp riêng trước khi trang đích được tải.

Đối với Cloudflare Challenge, CapMonster Cloud hỗ trợ hai chế độ kết quả: có thể trả về token hoặc cookie cf_clearance.

  • Nếu dùng tùy chọn dựa trên token, tác vụ có thể được giải bằng proxy CapMonster Cloud. Trong một số trường hợp cụ thể, bạn cũng có thể dùng proxy riêng.
  • Nếu cần cookie cf_clearance trong kết quả, bạn phải dùng proxy riêng khi tạo tác vụ.

Chi tiết về sử dụng proxy, xem tài liệu tác vụ.

CapMonster Cloud cung cấp thư viện sẵn có cho Python, JavaScript/Node.jsC#. Mỗi thư viện bao quát toàn bộ chu kỳ yêu cầu, bao gồm tạo tác vụ giải, truy vấn kết quả, và trả về token hoặc cookie cf_clearance sau khi challenge được giải.