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 để vượt qua xác minh bạn là người của Cloudflare mà không bị mắc kẹt
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.

Cloudflare
Logo of CapSolver

Rajinder Singh

19-Jan-2026

Cách vượt qua Cloudflare Challenge khi Scrape Web vào năm 2025
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.

Cloudflare
Logo of CapSolver

Emma Foster

07-Jan-2026

Tìm hiểu lỗi 1010 của Cloudflare và cách khắc phục
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.

Cloudflare
Logo of CapSolver

Sora Fujimoto

04-Jan-2026

Làm thế nào để xác định xem cData có cần thiết để giải Cloudflare Turnstile bằng phần mềm mở rộng CapSolver
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.

Cloudflare
Logo of CapSolver

Nikolai Smirnov

31-Dec-2025

Giải quyết Cloudflare Turnstile
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.

Cloudflare
Logo of CapSolver

Nikolai Smirnov

24-Dec-2025

Giải quyết Cloudflare
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

Cloudflare
Logo of CapSolver

Nikolai Smirnov

23-Dec-2025