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

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ó:
Cài đặt
Để sử dụng node-fetch, bạn cần cài đặt nó bằng npm hoặc yarn:
bash
npm install node-fetch
hoặc
bash
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
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
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
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
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
npm install https-proxy-agent
Ví dụ với proxy:
javascript
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
npm install fetch-cookie
Ví dụ:
javascript
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
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

Tiện ích tốt nhất để giải CAPTCHA 2026 là gì?
Trong thế giới an ninh trực tuyến không ngừng phát triển, các thách thức CAPTCHA đã trở thành rào cản phổ biến đối với người dùng internet...

Ethan Collins
12-Dec-2025

Genlogin: Đổi mới Trải nghiệm Tự động hóa Web
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Genlogin là gì và các dịch vụ mà họ cung cấp.

Rajinder Singh
12-Dec-2025

Proxys.io: Proxy riêng lẻ cho bất kỳ nhiệm vụ nào
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Proxys.io là gì và các dịch vụ mà họ cung cấp.

Lucas Mitchell
12-Dec-2025

Tabproxy: Dịch vụ proxy nhà ở giá trị tốt cho khu vực nước ngoài
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn Tabproxy là gì và các dịch vụ mà họ cung cấp.

Anh Tuan
12-Dec-2025

IP2World Proxy Nhà Ở: Giải pháp IP proxy toàn cầu hàng đầu
Trong bài viết này, chúng tôi sẽ giới thiệu cho bạn IP2World là gì và các dịch vụ mà họ cung cấp.

Ethan Collins
12-Dec-2025

Các lỗi 402, 403, 404 và 429 là gì trong việc quét web? Hướng dẫn toàn diện
Nắm vững xử lý lỗi quét web bằng cách hiểu các lỗi 402, 403, 404 và 429. Học cách sửa lỗi 403 Cấm, triển khai giải pháp xử lý lỗi 429 và xử lý mã trạng thái 402 Yêu cầu thanh toán mới xuất hiện.

Lucas Mitchell
12-Dec-2025

