CAPSOLVER
Blog
Cách sử dụng node-fetch để Scrape Web

Cách sử dụng node-fetch để trích xuất dữ liệu web

Logo of CapSolver

Anh Tuan

Data Science Expert

27-Sep-2024

node-fetch là gì?

node-fetch là một thư viện JavaScript nhẹ giúp đưa API window.fetch vào Node.js. Nó thường được sử dụng để thực hiện các yêu cầu HTTP từ môi trường Node.js, cung cấp một cách hiện đại và linh hoạt để xử lý các hoạt động mạng không đồng bộ.

Tính năng:

  • Dựa trên Promise: Sử dụng JavaScript promises để quản lý các hoạt động không đồng bộ một cách đơn giản.
  • Hỗ trợ Node.js: Được thiết kế đặc biệt cho môi trường Node.js.
  • Hỗ trợ luồng: Hỗ trợ luồng, làm cho nó rất phù hợp để xử lý dữ liệu lớn.
  • Nhỏ gọn và hiệu quả: Thiết kế tối giản, tập trung vào hiệu suất và khả năng tương thích với các tính năng JavaScript hiện đại.

Điều kiện tiên quyết

Trước khi sử dụng node-fetch, hãy đảm bảo bạn đã có:

  • Node.js được cài đặt.
  • npm hoặc yarn để quản lý các gói của bạn.

Cài đặt

Để sử dụng node-fetch, bạn cần cài đặt nó bằng npm hoặc yarn:

bash Copy
npm install node-fetch

hoặc

bash Copy
yarn add node-fetch

Ví dụ cơ bản: Thực hiện yêu cầu GET

Dưới đây là cách thực hiện yêu cầu GET đơn giản bằng node-fetch:

javascript Copy
const fetch = require('node-fetch');

fetch('https://httpbin.org/get')
  .then(response => response.json())
  .then(data => {
    console.log('Response Body:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Ví dụ Web Scraping: Lấy dữ liệu JSON từ API

Hãy lấy dữ liệu từ API và ghi nhật ký kết quả:

javascript Copy
const fetch = require('node-fetch');

fetch('https://jsonplaceholder.typicode.com/posts')
  .then(response => response.json())
  .then(posts => {
    posts.forEach(post => {
      console.log(`${post.title} — ${post.body}`);
    });
  })
  .catch(error => {
    console.error('Error:', error);
  });

Xử lý Captcha với CapSolver và node-fetch

Trong phần này, chúng ta sẽ tích hợp CapSolver với node-fetch để xử lý captcha. CapSolver cung cấp API để giải quyết các captcha như ReCaptcha V3, cho phép tự động hóa các tác vụ cần giải quyết các captcha như vậy.

Ví dụ: Giải quyết ReCaptcha V3 với CapSolver và node-fetch

Đầu tiên, hãy cài đặt node-fetch và CapSolver:

bash Copy
npm install node-fetch
npm install capsolver

Bây giờ, đây là cách giải quyết ReCaptcha V3 và sử dụng giải pháp trong yêu cầu của bạn:

javascript Copy
const fetch = require('node-fetch');
const CAPSOLVER_KEY = 'YourKey';
const PAGE_URL = 'https://antcpt.com/score_detector';
const PAGE_KEY = '6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf';
const PAGE_ACTION = 'homepage';

async function createTask(url, key, pageAction) {
  try {
    const apiUrl = 'https://api.capsolver.com/createTask';
    const payload = {
      clientKey: CAPSOLVER_KEY,
      task: {
        type: 'ReCaptchaV3TaskProxyLess',
        websiteURL: url,
        websiteKey: key,
        pageAction: pageAction
      }
    };
    
    const response = await fetch(apiUrl, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    });
    
    const data = await response.json();
    return data.taskId;

  } catch (error) {
    console.error('Error creating CAPTCHA task:', error);
    throw error;
  }
}

async function getTaskResult(taskId) {
  try {
    const apiUrl = 'https://api.capsolver.com/getTaskResult';
    const payload = {
      clientKey: CAPSOLVER_KEY,
      taskId: taskId,
    };

    let result;
    do {
      const response = await fetch(apiUrl, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(payload)
      });

      result = await response.json();
      if (result.status === 'ready') {
        return result.solution;
      }

      await new Promise(resolve => setTimeout(resolve, 5000)); // wait 5 seconds
    } while (true);

  } catch (error) {
    console.error('Error fetching CAPTCHA result:', error);
    throw error;
  }
}

async function main() {
  console.log('Creating CAPTCHA task...');
  const taskId = await createTask(PAGE_URL, PAGE_KEY, PAGE_ACTION);
  console.log(`Task ID: ${taskId}`);

  console.log('Retrieving CAPTCHA result...');
  const solution = await getTaskResult(taskId);
  const token = solution.gRecaptchaResponse;
  console.log(`Token Solution: ${token}`);

  const res = await fetch('https://antcpt.com/score_detector/verify.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ 'g-recaptcha-response': token })
  });

  const response = await res.json();
  console.log(`Score: ${response.score}`);
}

main().catch(err => {
  console.error(err);
});

Xử lý Proxy với node-fetch

Để định tuyến các yêu cầu của bạn thông qua proxy với node-fetch, bạn sẽ cần một proxy agent như https-proxy-agent. Dưới đây là cách thực hiện nó:

bash Copy
npm install https-proxy-agent

Ví dụ với proxy:

javascript Copy
const fetch = require('node-fetch');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyAgent = new HttpsProxyAgent('http://username:password@proxyserver:8080');

fetch('https://httpbin.org/ip', { agent: proxyAgent })
  .then(response => response.json())
  .then(data => {
    console.log('Response Body:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Xử lý Cookies với node-fetch

Để xử lý cookie trong node-fetch, bạn có thể sử dụng thư viện như fetch-cookie. Dưới đây là cách sử dụng nó:

bash Copy
npm install fetch-cookie

Ví dụ:

javascript Copy
const fetch = require('node-fetch');
const fetchCookie = require('fetch-cookie');
const cookieFetch = fetchCookie(fetch);

cookieFetch('https://httpbin.org/cookies/set?name=value')
  .then(response => response.json())
  .then(data => {
    console.log('Cookies:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Sử dụng nâng cao: Tiêu đề tùy chỉnh và yêu cầu POST

Bạn có thể tùy chỉnh tiêu đề và thực hiện yêu cầu POST với node-fetch:

javascript Copy
const fetch = require('node-fetch');

const headers = {
  'User-Agent': 'Mozilla/5.0 (compatible)',
  'Accept-Language': 'en-US,en;q=0.5',
};

const data = {
  username: 'testuser',
  password: 'testpass',
};

fetch('https://httpbin.org/post', {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data),
})
  .then(response => response.json())
  .then(data => {
    console.log('Response JSON:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

Mã thưởng

Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu tại CapSolver: scrape. Sau khi đổi, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp, không giới hạn lần.

Kết luận

Với node-fetch, bạn có thể quản lý hiệu quả các yêu cầu HTTP trong Node.js. Bằng cách tích hợp nó với CapSolver, bạn có thể giải quyết các captcha như ReCaptcha V3 và captcha, cung cấp quyền truy cập vào nội dung bị hạn chế. Ngoài ra, node-fetch cung cấp khả năng tùy chỉnh thông qua tiêu đề, hỗ trợ proxy và quản lý cookie, làm cho nó trở thành một công cụ linh hoạt để web scraping và tự động hóa.

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

Nâng cao tự động hóa doanh nghiệp:
Nâng cao Tự động hóa Doanh nghiệp: Cơ sở hạ tầng Dựa trên Mô hình Ngôn ngữ Lớn (LLM) cho Nhận dạng CAPTCHA Mượt mà & Hiệu quả Hoạt động

Khám phá cách cơ sở hạ tầng tự động hóa AI được cung cấp bởi Mô hình Ngôn ngữ lớn (LLM) đột phá trong việc nhận diện CAPTCHA, nâng cao hiệu quả quy trình kinh doanh và giảm thiểu sự can thiệp thủ công. Tối ưu hóa các quy trình tự động của bạn với các giải pháp xác minh tiên tiến.

ai
Logo of CapSolver

Anh Tuan

30-Mar-2026

Mở rộng thu thập dữ liệu cho huấn luyện LLM: Giải quyết CAPTCHAs tại quy mô lớn
Mở rộng thu thập dữ liệu cho huấn luyện LLM: Giải quyết CAPTCHAs ở quy mô lớn

Hãy học cách mở rộng thu thập dữ liệu cho việc huấn luyện mô hình LLM bằng cách giải CAPTCHAs quy mô lớn. Khám phá các chiến lược tự động để xây dựng các bộ dữ liệu chất lượng cao cho các mô hình AI.

AI
Logo of CapSolver

Ethan Collins

27-Mar-2026

Khắc phục Lỗi 1005 Cloudflare: Hướng dẫn và Giải pháp Thu thập dữ liệu web
Khắc phục Lỗi 1005 Cloudflare: Hướng dẫn Gỡ mã web và Giải pháp

Học cách khắc phục lỗi Cloudflare Error 1005 bị từ chối truy cập khi quét dữ liệu. Khám phá các giải pháp như proxy nhà ở, dấu vân tay trình duyệt và CapSolver cho CAPTCHA. Tối ưu hóa việc trích xuất dữ liệu.

Cloudflare
Logo of CapSolver

Adélia Cruz

27-Mar-2026

OpenBrowser Sử dụng CapSolver
Làm thế nào để giải CAPTCHA trong OpenBrowser bằng cách sử dụng CapSolver (Hướng dẫn tự động hóa AI Agent)

Giải CAPTCHA trong OpenBrowser bằng CapSolver. Tự động hóa reCAPTCHA, Turnstile và hơn thế nữa cho các tác nhân AI một cách dễ dàng.

AI
Logo of CapSolver

Anh Tuan

26-Mar-2026

HyperBrowser với CapSolver
Cách giải CAPTCHA bất kỳ trong HyperBrowser bằng CapSolver (Hướng dẫn cài đặt đầy đủ)

Giải bất kỳ CAPTCHA nào trong HyperBrowser bằng CapSolver. Tự động hóa reCAPTCHA, Turnstile, AWS WAF và nhiều thứ khác một cách dễ dàng.

AI
Logo of CapSolver

Anh Tuan

26-Mar-2026

Cách giải reCAPTCHA v2 Python và API
Cách giải reCAPTCHA v2 Python và API

Học cách giải reCAPTCHA v2 bằng Python và API. Hướng dẫn toàn diện này bao gồm các phương pháp Proxy và không dùng Proxy cùng với mã nguồn có thể triển khai cho tự động hóa.

reCAPTCHA
Logo of CapSolver

Rajinder Singh

25-Mar-2026