🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

Cách sử dụng Proxy với node-fetch: Hướng dẫn đầy đủ

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

28-Nov-2025
Nhìn Qua Nhanh

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:

  1. node-fetch: Khách hàng HTTP chính.
  2. https-proxy-agent: Sử dụng để kết nối với các proxy HTTP/HTTPS.
  3. 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 Copy
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 Agentnode-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 Copy
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 Copy
// 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 Copy
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 Copy
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 Copy
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 Copy
// 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 Copy
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 Copy
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-agentsocks-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-agentsocks-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.

Bài viết phổ biến nhất

Danh mục