CAPSOLVER
Blog
Cách giải quyết thách thức Cloudflare bằng Node.JS

Cách giải quyết Thách thức Cloudflare với Node.js

Logo of CapSolver

Anh Tuan

Data Science Expert

03-Dec-2025

Giới thiệu

Các script tự động hóa bằng Node.js của bạn có bị chặn bởi Cloudflare không? Bạn không phải là người duy nhất. Các biện pháp bảo mật mạnh mẽ của Cloudflare, như các bài kiểm tra JavaScript và chế độ "I'm Under Attack", hiệu quả trong việc ngăn bot nhưng cũng có thể làm gián đoạn các nhiệm vụ trích xuất dữ liệu và quét web hợp pháp. Các kiểm tra bảo mật này xác minh người truy cập bằng cách chạy các bài kiểm tra nền mà các script tự động thường không thể vượt qua.

Hướng dẫn này sẽ cho bạn biết cách vượt qua rào cản này. Chúng tôi sẽ đi qua quy trình rõ ràng, từng bước sử dụng Node.js và dịch vụ CapSolver để giải các bài kiểm tra Cloudflare và nhận được token cf_clearance để truy cập trơn tru.

⚙️ Yêu cầu tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có những thứ sau:

  • Một proxy hoạt động: Đây là yếu tố quan trọng để giải các bài kiểm tra Cloudflare. Rất khuyến khích sử dụng proxy ISP hoặc nhà ở, vì các địa chỉ IP của chúng ít có khả năng bị ghi nhận hơn.
  • Node.js đã cài đặt: Đảm bảo Node.js đã được cài đặt trên hệ thống của bạn.
  • Mã API CapSolver: Bạn sẽ cần tài khoản CapSolver để nhận mã API. CapSolver là một dịch vụ dựa trên AI được thiết kế để xử lý các CAPTCHA và các bài kiểm tra bot khác.

🤖 Bước 1: Cài đặt các gói Node.js cần thiết

Trước tiên, chúng ta cần cài đặt thư viện axios để thực hiện các yêu cầu HTTP. Mở terminal và thực hiện lệnh sau:

bash Copy
npm install axios

👨‍💻 Bước 2: Viết mã Node.js để giải bài kiểm tra Cloudflare

Dưới đây là mã mẫu để giải bài kiểm tra Cloudflare và nhận token cf_clearance bằng Node.js và API CapSolver. Mã này minh họa cách tạo AntiCloudflareTask và kiểm tra kết quả.

Mã Node.js Cập nhật

Mã này bao gồm các thực hành mới nhất từ tài liệu chính thức của CapSolver, với cấu trúc rõ ràng và các chú thích cần thiết.

javascript Copy
const axios = require('axios');

// -------------------VUI LÒNG THAY ĐỔI CÁC GIÁ TRỊ SAU-------------------
// Chi tiết proxy theo định dạng: http://username:password@ip:port
const PROXY = 'http://username:password@ip:port'; 
// Mã API của bạn từ Bảng điều khiển CapSolver
const CAPSOLVER_API_KEY = 'YourAPIKEY';
// URL của trang web mục tiêu nơi bạn muốn giải bài kiểm tra Cloudflare
const PAGE_URL = 'https://www.yourwebsite.com';
// ----------------------------------------------------------------


/**
 * Tạo một nhiệm vụ để giải bài kiểm tra Cloudflare bằng API CapSolver.
 * @param {string} websiteURL - URL của trang web mục tiêu.
 * @param {string} proxy - Proxy để sử dụng.
 * @returns {Promise<string|null>} - ID nhiệm vụ, hoặc null nếu tạo thất bại.
 */
async function createCloudflareTask(websiteURL, proxy) {
    console.log('Tạo nhiệm vụ Cloudflare cho CapSolver...');
    try {
        const response = await axios.post('https://api.capsolver.com/createTask', {
            clientKey: CAPSOLVER_API_KEY,
            task: {
                type: 'AntiCloudflareTask',
                websiteURL: websiteURL,
                proxy: proxy
            }
        });
        if (response.data.errorId > 0) {
            console.error(`Tạo nhiệm vụ thất bại: ${response.data.errorDescription}`);
            return null;
        }
        console.log(`Tạo nhiệm vụ thành công. ID nhiệm vụ: ${response.data.taskId}`);
        return response.data.taskId;
    } catch (error) {
        console.error(`Lỗi xảy ra khi tạo nhiệm vụ: ${error}`);
        return null;
    }
}

/**
 * Kiểm tra kết quả nhiệm vụ.
 * @param {string} taskId - ID nhiệm vụ trả về bởi CapSolver.
 * @returns {Promise<object|null>} - Đối tượng giải pháp, hoặc null nếu thất bại.
 */
async function getTaskResult(taskId) {
    console.log(`Nhận kết quả cho ID nhiệm vụ ${taskId}...`);
    let solution = null;

    while (!solution) {
        await new Promise(resolve => setTimeout(resolve, 3000)); // Chờ 3 giây

        try {
            const response = await axios.post('https://api.capsolver.com/getTaskResult', {
                clientKey: CAPSOLVER_API_KEY,
                taskId: taskId
            });

            if (response.data.errorId > 0) {
                console.error(`Lấy kết quả thất bại: ${response.data.errorDescription}`);
                return null;
            }

            if (response.data.status === 'ready') {
                console.log('Giải pháp đã nhận được thành công!');
                solution = response.data.solution;
            } else if (response.data.status === 'processing') {
                console.log('Nhiệm vụ vẫn đang xử lý, vui lòng đợi...');
            } else if (response.data.status === 'failed') {
                console.error(`Nhiệm vụ xử lý thất bại: ${response.data.errorDescription}`);
                return null;
            }
        } catch (error) {
            console.error(`Lỗi xảy ra khi lấy kết quả: ${error}`);
            return null;
        }
    }
    return solution;
}

/**
 * Hàm chính để thực hiện toàn bộ quy trình.
 */
async function main() {
    console.log('Bắt đầu giải bài kiểm tra Cloudflare...');
    
    const taskId = await createCloudflareTask(PAGE_URL, PROXY);
    if (!taskId) {
        console.log('Không thể tạo nhiệm vụ, thoát.');
        return;
    }

    const solution = await getTaskResult(taskId);
    if (!solution) {
        console.log('Không thể nhận giải pháp, thoát.');
        return;
    }

    console.log('Chi tiết giải pháp đã nhận được:');
    console.log(solution);

    // Bạn có thể sử dụng các cookie và user-agent đã nhận được để truy cập trang web mục tiêu.
    // Đối tượng giải pháp chứa 'url', 'status', 'headers', 'cookies', 'userAgent'.
    
    // Ví dụ: Cách sử dụng cookie và user-agent đã nhận được để thực hiện yêu cầu
    try {
        const cfCookie = solution.cookies.map(cookie => `${cookie.name}=${cookie.value}`).join('; ');
        
        console.log('\nTruy cập trang mục tiêu bằng cookie và user-agent đã nhận được...');
        const pageResponse = await axios.get(PAGE_URL, {
            headers: {
                'User-Agent': solution.userAgent,
                'Cookie': cfCookie
            },
            // Nên sử dụng một phiên bản axios có proxy riêng cho các yêu cầu tiếp theo.
            proxy: false, 
        });

        console.log(`\nTruy cập thành công! Mã trạng thái trang: ${pageResponse.status}`);
        // console.log('Nội dung trang:', pageResponse.data); // Gỡ bỏ ghi chú để xem nội dung trang

    } catch (error) {
        console.error(`\nLỗi truy cập trang bằng giải pháp: ${error.response ? error.response.status : error.message}`);
    }
}

main();

⚠️ Biến Quan Trọng Cần Thay Đổi

Trước khi chạy mã, hãy chắc chắn thay đổi các biến sau:

  • PROXY: Thay thế bằng địa chỉ máy chủ proxy và thông tin xác thực của bạn. Định dạng nên là http://username:password@ip:port.
  • CAPSOLVER_API_KEY: Tìm mã API của bạn trên Bảng điều khiển CapSolver và thay thế mẫu.

Kết luận

Bằng cách tích hợp CapSolver, các nhà phát triển có thể tự động hóa quy trình phức tạp trong việc xử lý các bài kiểm tra Cloudflare trong ứng dụng Node.js của họ. Cách tiếp cận này không chỉ có tỷ lệ thành công cao mà còn giúp bạn tránh phải đối phó với các chính sách bảo mật liên tục thay đổi. Bạn chỉ cần gọi một API và nhận được token cf_clearanceUser-Agent tương ứng, cho phép truy cập liền mạch vào trang web mục tiêu của bạn. Chiến lược này là thiết yếu cho mọi dự án yêu cầu thu thập dữ liệu quy mô lớn và ổn định.

Câu hỏi Thường Gặp (FAQ)

Câu hỏi 1: Tại sao tôi cần sử dụng proxy?
Trả lời 1: Cloudflare giám sát các địa chỉ IP để phát hiện hoạt động bất thường. Một địa chỉ IP thực hiện nhiều yêu cầu có thể bị ghi nhận là bot. Sử dụng proxy chất lượng cao với khả năng xoay (như proxy nhà ở hoặc ISP) mô phỏng hành vi người dùng thực tế và tăng đáng kể tỷ lệ thành công của bạn.

Câu hỏi 2: Token cf_clearance có hiệu lực bao lâu?
Trả lời 2: Token cf_clearance thường có hiệu lực trong vài giờ, mặc dù thời gian cụ thể phụ thuộc vào cài đặt của website trên Cloudflare. Khi hết hạn, bạn cần chạy quy trình lại để nhận token mới.

Câu hỏi 3: Tôi có thể sử dụng cookie đã nhận trong scraper của mình không?
Trả lời 3: Có. Sau khi nhận giải pháp từ CapSolver, bạn phải bao gồm cookie cf_clearanceUser-Agent tương ứng trong tất cả các yêu cầu HTTP tiếp theo. Việc sử dụng cùng địa chỉ IP proxy như khi tạo token là rất quan trọng. Mặc dù hướng dẫn này tập trung vào Node.js, các nguyên tắc tương tự áp dụng cho các ngôn ngữ khác. Ví dụ, bạn có thể học cách giải bài kiểm tra Cloudflare bằng Python và Selenium trong bài viết khác của chúng tôi.

Câu hỏi 4: CapSolver có thể xử lý các loại CAPTCHA nào khác?
Trả lời 4: CapSolver hỗ trợ nhiều loại bài kiểm tra ngoài Cloudflare, bao gồm các phiên bản khác nhau của reCAPTCHA và CAPTCHA dựa trên hình ảnh. Để cập nhật các giải pháp hiệu quả nhất, bạn có thể kiểm tra bảng xếp hạng hiệu suất của những người giải bài kiểm tra Cloudflare hàng đầu. Để xem danh sách đầy đủ các loại được hỗ trợ, tốt nhất là tham khảo tài liệu chính thức của CapSolver.

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 để xác định nếu `action` được yêu cầu để giải quyết Cloudflare Turnstile bằng cách sử dụng tiện ích mở rộng CapSolver
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.

Cloudflare
Logo of CapSolver

Aloísio Vítor

05-Dec-2025

Làm thế nào để Tự động hóa việc giải quyết Thách thức Cloudflare trong Selenium
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.

Cloudflare
Logo of CapSolver

Anh Tuan

04-Dec-2025

Cách giải quyết thách thức Cloudflare bằng Node.JS
Cách giải quyết Thách thức Cloudflare với Node.js

Tại sao Cloudflare chặn các trình quét Node.js và cách các nhà phát triển lấy cf_clearance một cách đáng tin cậy cho các quy trình dữ liệu.

Cloudflare
Logo of CapSolver

Anh Tuan

03-Dec-2025

Cách giải quyết cloudflare | Sử dụng Puppeteer Node.JS
Cách vượt qua Cloudflare | Sử dụng Puppeteer với Node.JS

Chúng ta sẽ khám phá cách giải quyết hiệu quả Turnstile của Cloudflare bằng cách sử dụng Puppeteer và Node.js cùng sự hỗ trợ từ dịch vụ giải Captcha.

Cloudflare
Logo of CapSolver

Lucas Mitchell

02-Dec-2025

Cách nhận diện Cloudflare Turnstile | Bằng cách sử dụng Extension CapSolver
Cách nhận diện Cloudflare Turnstile | Bằng cách sử dụng Extension CapSolver

Học cách nhận diện Cloudflare Turnstile để giải CAPTCHA hiệu quả. Tham khảo 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.

Cloudflare
Logo of CapSolver

Anh Tuan

19-Nov-2025

Cloudflare Turnstile và Challenge
Cách giải quyết thách thức Cloudflare Turnstile vào năm 2024

Khoảng 20% các trang web cần trích xuất dữ liệu sử dụng Cloudflare, một hệ thống bảo vệ chống bot mạnh mẽ có thể dễ dàng chặn quyền truy cập của bạn...

Cloudflare
Logo of CapSolver

Anh Tuan

18-Nov-2025