CAPSOLVER
Blog
Cách giải Captcha AWS bằng Puppeteer [Javascript] với phần mở rộng CapSolver

Làm thế nào để giải AWS Captcha sử dụng Puppeteer [Javascript] với phần mở rộng CapSolver

Logo of CapSolver

Anh Tuan

Data Science Expert

25-Nov-2025

Những điểm chính

  • Thách thức chính: Các nhiệm vụ tự động hóa tìm kiếm AI quy mô lớn bằng Puppeteer thường bị chặn bởi các biện pháp bảo mật tiên tiến như CAPTCHA AWS WAF.
  • Giải pháp: Phương pháp đáng tin cậy nhất để tự động hóa trình duyệt là tích hợp dịch vụ giải CAPTCHA chuyên dụng trực tiếp vào môi trường trình duyệt hoặc sử dụng gọi API trực tiếp.
  • Thực hiện: Bằng cách tải tiện ích mở rộng CapSolver vào phiên bản Chromium được điều khiển bởi Puppeteer, bạn có thể tự động giải các thách thức AWS WAF mà không cần gọi API phức tạp trong đoạn mã chính. Ngoài ra, API CapSolver cung cấp giải pháp mạnh mẽ, không cần giao diện người dùng.
  • Thực hành tốt nhất: Sử dụng tiện ích mở rộng trình duyệt với Puppeteer là một thực hành tốt nhất để duy trì tỷ lệ thành công cao trong tự động hóa tìm kiếm AI.

I. Giới thiệu

Tự động hóa tìm kiếm AIquét trang web, các công cụ như Puppeteer đã trở thành không thể thiếu để điều khiển trình duyệt không giao diện và mô phỏng tương tác của con người. Tuy nhiên, khi quy mô tự động hóa tăng lên, độ phức tạp của các biện pháp chống bot cũng tăng theo. Một trong những thách thức đáng gờm nhất hiện nay là CAPTCHA AWS WAF, thường xuyên làm gián đoạn việc thu thập dữ liệu quy mô lớn, dẫn đến thất bại nhiệm vụ và lãng phí tài nguyên.

Bài viết này cung cấp hướng dẫn kỹ thuật cụ thể dành cho các nhà phát triển JavaScript sử dụng Puppeteer. Chúng tôi sẽ minh họa một thực hành tốt nhất hiệu quả cao: tích hợp Tiện ích mở rộng CapSolver trực tiếp vào thiết lập Puppeteer của bạn. Cách tiếp cận này cho phép tiện ích mở rộng xử lý quy trình giải CAPTCHA dựa trên AI cho các thách thức AWS WAF một cách liền mạch. Ngoài ra, đối với các tình huống yêu cầu tiếp cận hoàn toàn không giao diện người dùng, chúng tôi sẽ cung cấp ví dụ JavaScript chi tiết sử dụng API CapSolver, đảm bảo tự động hóa tìm kiếm AI của bạn luôn ổn định, không gián đoạn và có tỷ lệ thành công cao.

II. Hiểu về Thách thức CAPTCHA AWS WAF

CAPTCHA AWS WAF là lớp bảo mật mạnh mẽ vượt ra ngoài việc nhận diện hình ảnh đơn giản. Nó thường bao gồm:

  1. Phân tích hành vi: Giám sát chuyển động chuột, đầu vào bàn phím và các mẫu điều hướng để phát hiện hành vi không phải người dùng.
  2. Thách thức phía client: Chèn các thách thứcJavascript phức tạp yêu cầu môi trường trình duyệt thực sự và đầy đủ để thực thi chính xác.
  3. Xác minh dựa trên token: Yêu cầu một aws-waf-token hợp lệ phải xuất hiện trong các yêu cầu tiếp theo, được tạo ra chỉ sau khi thách thức được giải thành công.

Đối với tự động hóa tìm kiếm AI quy mô lớn, việc xử lý các thách thức này một cách thủ công là không khả thi. Đây là lúc các công cụ giải CAPTCHA chuyên dụng, đặc biệt là những công cụ tích hợp trực tiếp vào môi trường trình duyệt hoặc qua API, trở thành thực hành tốt nhất thiết yếu.

III. Phương pháp 1: Puppeteer với Tiện ích mở rộng CapSolver (Được khuyến nghị cho tự động hóa trình duyệt)

Tiện ích mở rộng CapSolver hoạt động như một cầu nối, tự động phát hiện và giải các thách thức CAPTCHA mà trình duyệt gặp phải, đồng thời chèn token giải pháp cần thiết. Đây là phương pháp đơn giản và bền bỉ hơn nhiều so với việc sử dụng API trực tiếp trong đoạn mã Puppeteer của bạn.

Bước 1: Tải xuống và cấu hình Tiện ích mở rộng CapSolver

Trước khi tích hợp với Puppeteer, bạn cần tệp tiện ích mở rộng và khóa API CapSolver được cấu hình.

  1. Tải xuống: Tải tệp ZIP của tiện ích mở rộng CapSolver Chrome từ trang web chính thức của CapSolver và giải nén vào một thư mục cục bộ (ví dụ: ./capsolver-extension).
  2. Cấu hình: Mở tệp cấu hình của tiện ích mở rộng (thường là config.js hoặc tương tự) và chèn khóa API CapSolver của bạn. Điều này xác thực tiện ích mở rộng với tài khoản của bạn.

Bước 2: Khởi động Puppeteer với Tiện ích mở rộng

Hàm puppeteer.launch() của Puppeteer cung cấp tùy chọn tải tiện ích mở rộng chưa nén bằng tham số args.

javascript Copy
const puppeteer = require('puppeteer');
const path = require('path');

// Xác định đường dẫn đến thư mục tiện ích mở rộng CapSolver đã giải nén
const extensionPath = path.join(__dirname, 'capsolver-extension');

async function launchBrowserWithExtension() {
    const browser = await puppeteer.launch({
        headless: false, // Phải là không giao diện để tiện ích mở rộng hoạt động ổn định
        args: [
            `--disable-extensions-except=${extensionPath}`,
            `--load-extension=${extensionPath}`,
            '--no-sandbox', // Được khuyến khích cho một số môi trường
        ],
    });
    return browser;
}

// Ví dụ sử dụng:
// const browser = await launchBrowserWithExtension();
// const page = await browser.newPage();
// await page.goto('https://trang-web-bảo vệ bởi AWS WAF.com');

Bước 3: Luồng Tự động hóa Tìm kiếm AI

Sau khi trình duyệt được khởi động với Tiện ích mở rộng CapSolver, luồng tự động hóa trở nên đơn giản hơn rất nhiều. Tiện ích mở rộng sẽ tự động theo dõi trang. Nếu phát hiện CAPTCHA AWS WAF, tiện ích mở rộng sẽ xử lý, giải nó bằng dịch vụ CapSolver và trang sẽ tự động tải lại hoặc tiếp tục.

Đoạn mã chính của tự động hóa tìm kiếm AI chỉ cần điều hướng đến trang đích và chờ CAPTCHA được giải.

javascript Copy
const puppeteer = require('puppeteer');
const path = require('path');

// ... (hàm launchBrowserWithExtension từ Bước 2) ...

async function runAwsWafAutomation() {
    const browser = await launchBrowserWithExtension();
    const page = await browser.newPage();

    // 1. Điều hướng đến URL được bảo vệ bởi AWS WAF
    const targetUrl = 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest'; // URL ví dụ
    console.log(`Đang điều hướng đến ${targetUrl}...`);
    await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });

    // 2. Chờ CAPTCHA được giải
    // Tiện ích mở rộng CapSolver sẽ tự động phát hiện và giải CAPTCHA AWS WAF.
    
    // THỰC HÀNH TỐT NHẤT: Chờ sự vắng mặt của phần tử CAPTCHA hoặc sự hiện diện của nội dung mục tiêu.
    try {
        // Giả sử CAPTCHA có một trình chọn cụ thể, ví dụ: '#aws-waf-captcha-container'
        // Chúng ta chờ phần tử này biến mất (tức là CAPTCHA đã được giải và trang tiếp tục)
        console.log("Đang chờ CAPTCHA AWS WAF được giải bởi Tiện ích mở rộng CapSolver...");
        await page.waitForSelector('#aws-waf-captcha-container', { hidden: true, timeout: 60000 });
        console.log("CAPTCHA đã được giải! Tiếp tục với tự động hóa tìm kiếm AI.");
        
        // 3. Tiếp tục với logic tự động hóa tìm kiếm AI của bạn
        // Ví dụ: Trích xuất dữ liệu từ trang hiện tại
        const pageTitle = await page.title();
        console.log(`Tiêu đề trang (Sau CAPTCHA): ${pageTitle}`);
        
    } catch (error) {
        console.error("Thất bại hoặc hết thời gian giải CAPTCHA:", error.message);
    }

    await browser.close();
}

// runAwsWafAutomation();

IV. Phương pháp 2: Tự động hóa Tìm kiếm AI không giao diện với API CapSolver (Lựa chọn thay thế)

Đối với các nhà phát triển muốn môi trường hoàn toàn không giao diện hoặc cần tích hợp logic giải CAPTCHA vào ứng dụng không dựa trên trình duyệt, API CapSolver cung cấp một lựa chọn mạnh mẽ. Phương pháp này yêu cầu bạn tự tay trích xuất các tham số cần thiết của AWS WAF (awsKey, awsIv, awsContext, v.v.) từ trang bị chặn và truyền chúng đến API.

Nhận mã thưởng CapSolver của bạn

Đừng bỏ lỡ cơ hội tối ưu hóa quy trình của bạn! Sử dụng mã thưởng CAPN khi nạp tiền vào tài khoản CapSolver và nhận thêm 5% thưởng cho mỗi lần nạp tiền, không giới hạn. Truy cập CapSolver để nhận thưởng ngay hôm nay!

Triển khai API (Node.js)

Ví dụ này sử dụng API fetch chuẩn (có sẵn trong Node.js hiện đại) để giao tiếp với CapSolver, dựa trên cấu trúc nhiệm vụ được cung cấp trong tài liệu CapSolver.

javascript Copy
const fetch = require('node-fetch'); // Sử dụng 'node-fetch' cho các phiên bản Node.js cũ, hoặc fetch tích hợp cho phiên bản mới hơn

const CAPSOLVER_API_KEY = 'KHÓA API CAPSOLVER CỦA BẠN';
const API_URL = 'https://api.capsolver.com';

/**
 * Giải CAPTCHA AWS WAF bằng API CapSolver.
 * @param {string} websiteURL URL của trang hiển thị CAPTCHA.
 * @param {object} awsParams Các tham số được trích xuất từ trang bị chặn (awsKey, awsIv, awsContext, v.v.).
 * @returns {Promise<string>} Giá trị cookie aws-waf-token.
 */
async function solveAwsWafCaptcha(websiteURL, awsParams) {
    // 1. Tạo nhiệm vụ
    const createTaskPayload = {
        clientKey: CAPSOLVER_API_KEY,
        task: {
            type: "AntiAwsWafTaskProxyLess", // Sử dụng AntiAwsWafTask nếu bạn cần chỉ định proxy
            websiteURL: websiteURL,
            ...awsParams // Truyền các tham số đã trích xuất
        }
    };

    let response = await fetch(`${API_URL}/createTask`, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(createTaskPayload)
    });
    let result = await response.json();

    if (result.errorId !== 0) {
        throw new Error(`Lỗi API CapSolver (createTask): ${result.errorDescription}`);
    }

    const taskId = result.taskId;
    console.log(`Nhiệm vụ được tạo với ID: ${taskId}. Đang chờ kết quả...`);

    // 2. Kiểm tra kết quả
    const getResultPayload = {
        clientKey: CAPSOLVER_API_KEY,
        taskId: taskId
    };

    let solution = null;
    for (let i = 0; i < 15; i++) { // Kiểm tra tối đa 15 lần (tối đa 30 giây)
        await new Promise(resolve => setTimeout(resolve, 2000)); // Chờ 2 giây

        response = await fetch(`${API_URL}/getTaskResult`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(getResultPayload)
        });
        result = await response.json();

        if (result.errorId !== 0) {
            throw new Error(`Lỗi API CapSolver (getTaskResult): ${result.errorDescription}`);
        }

        if (result.status === 'ready') {
            solution = result.solution;
            break;
        }
        console.log(`Trạng thái: ${result.status}. Thử lại...`);
    }

    if (!solution || !solution.cookie) {
        throw new Error("CapSolver không trả về token hợp lệ trong thời gian chờ.");
    }

    // solution.cookie chứa aws-waf-token
    return solution.cookie;
}

// Ví dụ sử dụng trong đoạn mã Puppeteer không giao diện:
/*
async function runHeadlessApiAutomation() {
    // 1. Dùng Puppeteer để điều hướng và trích xuất tham số AWS WAF (ví dụ: từ thẻ script hoặc phản hồi mạng)
    // Bước này yêu cầu kỹ năng Puppeteer nâng cao để chặn yêu cầu mạng hoặc phân tích nguồn HTML.
    const websiteURL = 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest';
    const extractedAwsParams = {
        awsKey: "AQIDAHjcYu/GjX+QlghicBg......", 
        awsIv: "CgAAFDIlckAAAAid",
        awsContext: "7DhQfG5CmoY90ZdxdHCi8WtJ3z......",
        // ... các tham số tùy chọn khác
    };

    try {
        const awsWafToken = await solveAwsWafCaptcha(websiteURL, extractedAwsParams);
        console.log(`Đã lấy được Token AWS WAF thành công: ${awsWafToken.substring(0, 30)}...`);

        // 2. Chèn token trở lại vào phiên Puppeteer hoặc sử dụng nó trong tiêu đề/yêu cầu tiếp theo
        // Ví dụ: Chèn làm cookie cho yêu cầu tiếp theo
        // await page.setCookie({
        //     name: 'aws-waf-token',
        //     value: awsWafToken,
        //     domain: new URL(websiteURL).hostname,
        //     path: '/',
        // });
        // await page.reload({ waitUntil: 'networkidle0' });

    } catch (error) {
        console.error("Thất bại trong tự động hóa API:", error.message);
    }
}
*/

V. Tự động hóa Tìm kiếm AI Thực hành tốt nhất: Vượt ra ngoài CAPTCHA

Mặc dù giải CAPTCHA là quan trọng, một hệ thống tự động hóa tìm kiếm AI thành công cần một cách tiếp cận đa lớp.

Thực hành tốt nhất Mô tả Liên quan đến Puppeteer/JS
Chế độ ẩn Sử dụng các thư viện như puppeteer-extra với puppeteer-extra-plugin-stealth để che giấu các dấu hiệu tự động hóa. Thiết yếu để vượt qua kiểm tra bot ban đầu trước khi CAPTCHA AWS WAF được hiển thị.
Đổi IP Tích hợp dịch vụ proxy để đổi địa chỉ IP, ngăn chặn giới hạn tốc độ và bị cấm IP. Sử dụng tham số --proxy-server trong puppeteer.launch() để định tuyến lưu lượng qua proxy nhà ở chất lượng cao.
Độ trễ giống người dùng Triển khai độ trễ ngẫu nhiên, không tuyến tính giữa các hành động (ví dụ: gõ, nhấp, cuộn). Sử dụng page.waitForTimeout(Math.random() * 3000 + 1000) để thêm độ trễ ngẫu nhiên từ 1 đến 4 giây.
Quản lý phiên Lưu trữ cookie và bộ nhớ cục bộ giữa các phiên để duy trì hồ sơ người dùng nhất quán. Sử dụng tùy chọn userDataDir trong puppeteer.launch() để lưu và tái sử dụng hồ sơ trình duyệt.

VI. Kết luận và Kêu gọi hành động (CTA)

Kết hợp giữa khả năng kiểm soát trình duyệt mạnh mẽ của Puppeteer và khả năng giải CAPTCHA chuyên dụng của CapSolver mở ra giải pháp chắc chắn cho thách thức CAPTCHA AWS WAF trong tự động hóa tìm kiếm AI. Đối với môi trường không giao diện thuần túy, API CapSolver cung cấp sức mạnh và tính linh hoạt cần thiết. Bằng cách áp dụng các thực hành tốt nhất này, các nhà phát triển có thể đảm bảo quy trình thu thập dữ liệu của họ bền bỉ, hiệu quả và duy trì tỷ lệ thành công cao.

Sẵn sàng để tăng tỷ lệ thành công của tự động hóa? Đừng để các khối CAPTCHA làm gián đoạn quy trình làm việc của bạn. Nhấp vào đây để tìm hiểu thêm về Tiện ích mở rộng CapSolver và khả năng giải AWS WAF mạnh mẽ của nó, và bắt đầu dùng thử miễn phí ngay hôm nay!

VII. Câu hỏi thường gặp (FAQ)

Câu hỏi 1: Tại sao nên sử dụng Tiện ích mở rộng CapSolver thay vì API cho Puppeteer?

Mặc dù API CapSolver rất hiệu quả, việc sử dụng tiện ích mở rộng làm đơn giản hóa mã nguồn đáng kể. Tiện ích mở rộng hoạt động trong môi trường trình duyệt, tự động phát hiện CAPTCHA, giải nó và chèn token/cookie cần thiết (aws-waf-token) mà không yêu cầu đoạn mã chính của Puppeteer quản lý chu kỳ yêu cầu/trả lời API phức tạp. Đây là thực hành tốt nhất quan trọng cho mã tự động hóa trình duyệt sạch sẽ và dễ bảo trì.

Câu hỏi 2: Tiện ích mở rộng CapSolver có hoạt động trong chế độ không giao diện không?

Để CapSolver Extension hoạt động ổn định, đặc biệt là với các thách thức hành vi phức tạp như AWS WAF CAPTCHA, thường được khuyến khích chạy Puppeteer ở chế độ không headless (headless: false). Điều này đảm bảo môi trường trình duyệt đầy đủ, bao gồm cả script nền và thành phần trực quan của phần mở rộng, được kích hoạt để xử lý thách thức.

Câu hỏi 3: Sự khác biệt chính giữa AWS WAF CAPTCHA và reCAPTCHA v3 là gì?

AWS WAF CAPTCHA thường là một thách thức chặn trực tiếp, được triển khai bởi Amazon's Web Application Firewall, thường yêu cầu một token để tiếp tục. Trong khi đó, reCAPTCHA v3 là một hệ thống dựa trên điểm số chạy âm thầm ở nền. Tuy nhiên, cả hai đều dựa rất nhiều vào phân tích hành vi, khiến việc sử dụng các kỹ thuật ẩn náu và dịch vụ giải CAPTCHA chuyên dụng trở thành thực hành tốt nhất cho cả hai.

Câu hỏi 4: Làm thế nào để đảm bảo script Puppeteer của tôi không bị phát hiện là bot?

Ngoài việc sử dụng CapSolver Extension để giải CAPTCHA, bạn cần thực hiện các thực hành tốt nhất về tự động hóa tìm kiếm AI, chẳng hạn như:

  • Sử dụng puppeteer-extra với các plugin ẩn náu.
  • Triển khai khoảng thời gian ngẫu nhiên giống người.
  • Luân chuyển proxy nhà ở chất lượng cao.
  • Duy trì hồ sơ trình duyệt bền vững (userDataDir).

Câu hỏi 5: Tôi có thể tìm thông tin thêm về tích hợp CapSolver và Puppeteer ở đâu?

Bạn có thể tìm thấy các hướng dẫn chi tiết và ví dụ mã trên blog 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

Cách giải quyết bài kiểm tra Captcha / Thách thức của AWS bằng Python
Cách giải Captcha / Thách thức AWS bằng Python

Một hướng dẫn thực tế về việc xử lý các thách thức của AWS WAF bằng Python và CapSolver, cho phép truy cập mượt mà hơn vào các trang web được bảo vệ

AWS WAF
Logo of CapSolver

Anh Tuan

04-Dec-2025

Cách giải quyết token Captcha của AWS (AMAZON) WAF
Cách giải quyết token CAPTCHA của AWS WAF

Bài viết này giải thích cách bạn có thể giải quyết CAPTCHA của AWS WAF theo cách nhanh chóng, rẻ tiền và dễ dàng bằng cách sử dụng CapSolver

AWS WAF
Logo of CapSolver

Anh Tuan

01-Dec-2025

Cách giải Captcha AWS bằng Puppeteer [Javascript] với phần mở rộng CapSolver
Làm thế nào để giải AWS Captcha sử dụng Puppeteer [Javascript] với phần mở rộng CapSolver

Học cách giải quyết captcha AWS một cách mượt mà bằng Puppeteer và Capsolver Extension, một hướng dẫn chi tiết về việc cài đặt và tự động hóa các giải pháp captcha hiệu quả

AWS WAF
Logo of CapSolver

Anh Tuan

25-Nov-2025

Cách giải CAPTCHA của AWS bằng NodeJS
Cách giải Captcha của AWS bằng NodeJS

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách giải quyết Captcha / Thách thức AWS bằng Node.JS.

AWS WAF
Logo of CapSolver

Anh Tuan

03-Nov-2025

Gỡ dữ liệu web so với API
So sánh Web Scraping và API: Thu thập dữ liệu bằng web scraping và API

Học cách phân biệt giữa web scraping và API, các ưu điểm và nhược điểm của chúng, và phương pháp nào hiệu quả nhất để thu thập dữ liệu web có cấu trúc hoặc không có cấu trúc.

AWS WAF
Logo of CapSolver

Anh Tuan

29-Oct-2025

Công cụ giải CAPTCHA cho Tường lửa ứng dụng web AWS
Giải CAPTCHA AWS WAF: Giải pháp Token & Hình ảnh cho Người quét trang web

Học cách giải quyết các thách thức CAPTCHA của AWS WAF cho việc quét web và tự động hóa. Hướng dẫn thực tế về các giải pháp dựa trên token và hình ảnh, so sánh giữa API và tích hợp trình duyệt, cũng như các nguyên tắc tốt nhất.

AWS WAF
Logo of CapSolver

Anh Tuan

28-Oct-2025