Cách sử dụng Proxy với node-fetch: Hướng dẫn đầy đủ
Specialist in Anti-Bot Strategies
Làm chủ nghệ thuật cấu hình proxy trong Node.js bằng cách sử dụng thư viện `node-fetch` phổ biến cho việc thu thập dữ liệu trên web một cách ẩn danh và hiệu quả.
Thư viện node-fetch là một lựa chọn phổ biến cho việc thực hiện các yêu cầu HTTP trong Node.js, cung cấp API fetch quen thuộc tương tự như những gì có sẵn trong các trình duyệt web hiện đại. Đối với các nhiệm vụ như thu thập dữ liệu web, nhắm mục tiêu theo địa lý hoặc vượt qua giới hạn tốc độ, việc tích hợp một proxy là rất cần thiết.
Tuy nhiên, không giống như một số khách hàng HTTP khác, node-fetch không hỗ trợ cấu hình proxy một cách tự nhiên. Hướng dẫn này sẽ hướng dẫn bạn qua các bước và công cụ cần thiết để tích hợp thành công proxy với node-fetch cho cả giao thức HTTP/HTTPS và SOCKS.
Điều Kiện Cần Thiết
Trước khi bắt đầu, hãy đảm bảo bạn đã thiết lập một môi trường Node.js và cài đặt các gói sau:
node-fetch: Khách hàng HTTP chính.https-proxy-agent: Sử dụng để kết nối với các proxy HTTP/HTTPS.socks-proxy-agent: Sử dụng để kết nối với các proxy SOCKS.
Bạn có thể cài đặt chúng bằng npm:
bash
npm install node-fetch https-proxy-agent socks-proxy-agent
1. Sử Dụng Proxy HTTP/HTTPS với node-fetch
Để sử dụng một proxy HTTP hoặc HTTPS, bạn cần tận dụng gói https-proxy-agent. Gói này tạo ra một đối tượng Agent mà node-fetch có thể sử dụng để định tuyến các yêu cầu của nó qua proxy đã chỉ định.
Bước 1: Nhập Các Mô-đun Cần Thiết
javascript
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
Bước 2: Định Nghĩa URL Proxy
URL proxy nên ở định dạng: http://[username:password@]host:port.
javascript
// Thay thế bằng thông tin proxy thực tế của bạn
const proxyUrl = 'http://username:password@proxy.scrapeless.com:8000';
Bước 3: Tạo Agent
Khởi tạo HttpsProxyAgent với URL proxy của bạn.
javascript
const agent = new HttpsProxyAgent(proxyUrl);
Bước 4: Thực Hiện Yêu Cầu
Đưa đối tượng agent đã tạo vào tùy chọn fetch.
javascript
const targetUrl = 'https://example.com/data';
fetch(targetUrl, { agent })
.then(response => {
console.log(`Trạng thái: ${response.status}`);
return response.text();
})
.then(text => console.log(text.substring(0, 200) + '...'))
.catch(error => console.error('Lỗi Fetch:', error));
Phương pháp này đảm bảo rằng tất cả lưu lượng cho cuộc gọi fetch cụ thể này được định tuyến qua proxy của bạn, cung cấp khả năng ẩn danh và chức năng nhắm mục tiêu theo địa lý cần thiết.
2. Sử Dụng Proxy SOCKS với node-fetch
Proxy SOCKS (SOCKS4 và SOCKS5) thường được ưa chuộng vì khả năng xử lý mọi loại lưu lượng (không chỉ HTTP) và mức độ ẩn danh cao hơn của chúng. Để sử dụng chúng với node-fetch, bạn cần gói socks-proxy-agent.
Bước 1: Nhập Các Mô-đun Cần Thiết
javascript
import fetch from 'node-fetch';
import { SocksProxyAgent } from 'socks-proxy-agent';
Bước 2: Định Nghĩa URL Proxy SOCKS
URL proxy SOCKS nên bắt đầu bằng socks:// hoặc socks5://.
javascript
// Thay thế bằng thông tin thực tế của proxy SOCKS5 của bạn
const socksProxyUrl = 'socks5://username:password@proxy.scrapeless.com:1080';
Bước 3: Tạo Agent
Khởi tạo SocksProxyAgent với URL proxy SOCKS của bạn.
javascript
const socksAgent = new SocksProxyAgent(socksProxyUrl);
Bước 4: Thực Hiện Yêu Cầu
Đưa socksAgent vào tùy chọn fetch.
javascript
const targetUrl = 'https://example.com/data';
fetch(targetUrl, { agent: socksAgent })
.then(response => {
console.log(`Trạng thái: ${response.status}`);
return response.text();
})
.then(text => console.log(text.substring(0, 200) + '...'))
.catch(error => console.error('Lỗi Fetch:', error));
Giải Pháp Proxy Được Khuyến Nghị: Proxy Scrapeless
Đối với các nhà phát triển và doanh nghiệp dựa vào Node.js để thu thập dữ liệu và thu thập thông tin, chất lượng của mạng proxy là rất quan trọng. Proxy Scrapeless cung cấp một mạng lưới hiệu suất cao, mạnh mẽ, rất phù hợp cho việc tích hợp với node-fetch và các agent proxy của nó.
Scrapeless cung cấp một mạng proxy toàn cầu bao gồm các proxy Residential, Static ISP, Datacenter và IPv6, với quyền truy cập vào hơn 90 triệu địa chỉ IP và tỷ lệ thành công lên đến 99.98%. Nó hỗ trợ một loạt các trường hợp sử dụng — từ thu thập dữ liệu web và nghiên cứu thị trường [1] đến giám sát giá, theo dõi SEO, xác minh quảng cáo và bảo vệ thương hiệu — making it ideal for both business and professional data workflows.
Proxy Scrapeless: Tính năng chính cho các nhà phát triển Node.js
Mạng lưới của Scrapeless được tối ưu hóa cho khả năng đồng thời cao và độ tin cậy cần thiết cho các ứng dụng Node.js:
- Proxy dân cư: Hơn 90 triệu IP dân cư thật, hoàn hảo cho việc thu thập dữ liệu có độ ẩn danh cao.
- Proxy trung tâm dữ liệu: IP hiệu suất cao được tối ưu hóa cho tự động hóa quy mô lớn và đồng thời lớn.
- Hỗ trợ giao thức: Hỗ trợ đầy đủ cho HTTP, HTTPS và SOCKS5, đảm bảo tích hợp liền mạch với cả
https-proxy-agentvàsocks-proxy-agent. - Tỷ lệ thành công cao: Tỷ lệ thành công trung bình 99,98% giảm thiểu nhu cầu xử lý lỗi phức tạp và thử lại trong mã Node.js của bạn.
Proxy Scrapeless cung cấp sự phủ sóng toàn cầu, tính minh bạch và hiệu suất cực kỳ ổn định, khiến nó trở thành một lựa chọn mạnh mẽ và đáng tin cậy hơn so với các lựa chọn thay thế khác — đặc biệt là cho các ứng dụng dữ liệu quan trọng và chuyên nghiệp yêu cầu thu thập dữ liệu toàn cầu [2] và giải pháp sản phẩm [3] với Node.js.
Kết luận
Tích hợp proxy với node-fetch yêu cầu sử dụng các thư viện đại lý chuyên dụng như https-proxy-agent và socks-proxy-agent. Bằng cách cấu hình chính xác các đại lý này với một nhà cung cấp proxy chất lượng cao như Proxy Scrapeless, bạn có thể đảm bảo rằng các ứng dụng Node.js của bạn thực hiện các yêu cầu web với độ ẩn danh, tốc độ và độ tin cậy cần thiết cho việc thu thập dữ liệu thành công.
Tài liệu tham khảo
[1] Tài liệu Node.js: Lớp: http.Agent
[2] npm: node-fetch
[3] npm: https-proxy-agent
[4] npm: socks-proxy-agent
[5] IETF RFC 1928: Giao thức SOCKS Phiên bản 5
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.



