Cách cấu hình proxy HTTP(S) trong Node.js (Axios & Undici Fetch)

Cập nhật:

Khi lập trình backend hoặc viết bot bằng Node.js / TypeScript, một lỗi kinh điển mà nhiều lập trình viên gặp phải là thuộc tính proxy: { host, port } mặc định của thư viện Axios không thực hiện phương thức HTTP CONNECT đúng cách khi gọi tới các trang đích https://. Giải pháp chuẩn xác nhất trong Node.js là dùng https-proxy-agent cho Axios hoặc undici.ProxyAgent cho hàm fetch() gốc.

Node.js (Axios / Undici) · HTTP Proxy Format
new HttpsProxyAgent('http://user:pass@ip:port')
Proxy IPv4 riêng (datacenter)
🇺🇸 United States
Còn hàng
Chỉ từ
20.000 ₫ / IP / tháng
Bảng giá theo số lượng
  • 1 IP40.000 ₫
  • 5+ IP35.000 ₫
  • 10+ IP25.000 ₫
  • 20+ IP25.000 ₫
  • 50+ IP25.000 ₫
  • 100+ IP25.000 ₫
  • 200+ IP25.000 ₫
  • 500+ IP25.000 ₫
  • 1000+ IP22.000 ₫
  • 2000+ IP20.000 ₫
Mua United States
Proxy IPv4 riêng (datacenter)
🇸🇬 Singapore
Còn hàng
Chỉ từ
20.000 ₫ / IP / tháng
Bảng giá theo số lượng
  • 1 IP40.000 ₫
  • 5+ IP35.000 ₫
  • 10+ IP25.000 ₫
  • 20+ IP25.000 ₫
  • 50+ IP25.000 ₫
  • 100+ IP25.000 ₫
  • 200+ IP25.000 ₫
  • 500+ IP25.000 ₫
  • 1000+ IP22.000 ₫
  • 2000+ IP20.000 ₫
Mua Singapore
Proxy theo nền tảng:web-scrapingseo-rank-trackingdiscord

So sánh cấu hình giữa Axios (`https-proxy-agent`) và Node `fetch` (`undici`)

Cả hai thư viện đều nhận trực tiếp chuỗi URL http://user:pass@ip:port của VinaProxy và tự động tạo đường hầm TLS tới máy chủ đích:

Thư viện Node.jsGói npm cần càiCú pháp khởi tạo chuẩn
Axios (axios)npm i https-proxy-agentaxios.get(url, { httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port'), proxy: false })
Native fetch (Node 18+)npm i undicifetch(url, { dispatcher: new ProxyAgent('http://user:pass@ip:port') })
Got (got)npm i hpagentgot(url, { agent: { https: new HttpsProxyAgent({ proxy: 'http://user:pass@ip:port' }) } })

Lưu ý kỹ thuật để tránh rò rỉ socket và tối ưu hiệu năng Node.js

  • Trong Axios, khi truyền httpsAgent, hãy luôn đặt kèm proxy: false để Axios không cố đọc các biến môi trường HTTP_PROXY xung đột
  • Khởi tạo đối tượng new HttpsProxyAgent('http://user:pass@ip:port', { keepAlive: true }) một lần bên ngoài hàm gọi API để tái sử dụng kết nối TCP
  • Thiết lập timeout: 15000 và signal: AbortSignal.timeout(15000) để tránh treo Event Loop khi mạng đích phản hồi chậm
  • Sử dụng công cụ đổi định dạng proxy để xuất thẳng danh sách proxy của bạn ra mảng JSON nạp vào file config.json

Các bước thực hiện

  1. 1

    Cài đặt gói https-proxy-agent hoặc undici

    Trong thư mục dự án Node.js, chạy npm install axios https-proxy-agent (hoặc npm install undici).

  2. 2

    Khởi tạo Agent với chuỗi http://user:pass@ip:port

    Viết const agent = new HttpsProxyAgent('http://user:pass@ip:port'); từ thông tin proxy VinaProxy.

  3. 3

    Truyền httpsAgent kèm proxy: false vào Axios

    Gọi const { data } = await axios.get('https://vinaproxy.com/api/my-ip', { httpsAgent: agent, proxy: false, timeout: 10000 });.

  4. 4

    Kiểm tra kết quả IP trả về

    In console.log(data) để xác nhận request đã đi qua đúng địa chỉ IPv4 của proxy.

Câu hỏi thường gặp

Tại sao dùng `proxy: { host, port, auth }` mặc định của Axios gọi trang https lại bị lỗi kết nối?

Bộ adapter HTTP mặc định trong Axios gửi yêu cầu GET thuần thay vì thiết lập đường hầm HTTP CONNECT cho TLS. Dùng httpsAgent: new HttpsProxyAgent(...) kèm proxy: false giải quyết triệt để vấn đề này.

Hàm `fetch()` mặc định trong Node.js 18/20/22 gắn proxy như thế nào?

Hàm fetch() gốc của Node.js được xây dựng trên nền undici. Bạn chỉ cần import { ProxyAgent } from 'undici' rồi truyền { dispatcher: new ProxyAgent('http://user:pass@ip:port') } vào tham số thứ hai của fetch().

Làm sao xuất nhanh 50 proxy VinaProxy thành mảng JSON cho Node.js?

Mở Công cụ đổi định dạng proxy, dán 50 dòng ip:port:user:pass và chọn đầu ra là JSON.

Trang bị bể proxy tĩnh tốc độ cao cho ứng dụng Node.js

Không giới hạn băng thông, xuất mảng JSON tức thì tại 7 quốc gia.

Mua Proxy cho Node.js

Bài viết liên quan

Proxy theo nền tảng
Proxy cho Web Scraping: cào dữ liệu tốc độ cao, không giới hạn băng thông
Mua proxy IPv4 riêng và ISP tĩnh tốc độ cao cho Python, Playwright, Selenium và Scrapy. Cào dữ liệu giá TMĐT, tin tức và API ổn định 24/7.
Cài đặt proxy
Cách cấu hình proxy HTTP(S) trong Puppeteer trên Node.js
Hướng dẫn cấu hình proxy HTTP có mật khẩu trong Puppeteer trên Node.js bằng cờ --proxy-server và hàm await page.authenticate().
Cài đặt proxy
Cách cấu hình proxy trong Playwright (Node.js & Python)
Hướng dẫn gắn proxy HTTP có username và password vào Playwright ở tầng Browser và BrowserContext. Cách chạy nhiều IP song song trên 1 tiến trình.
Công cụ miễn phí
Công cụ chuyển đổi định dạng Proxy hàng loạt (100% xử lý tại trình duyệt)
Chuyển đổi định dạng danh sách proxy hàng loạt ngay trên trình duyệt: ip:port:user:pass, user:pass@ip:port, http:// URL, JSON và FoxyProxy an toàn 100%.
Proxy theo nền tảng
Proxy cho SEO & SERP Tracking: kiểm tra thứ hạng từ khóa chính xác theo từng nước
Mua proxy IPv4 riêng và ISP tĩnh tại Việt Nam, Mỹ, Nhật, Hàn, Anh, Singapore để kiểm tra thứ hạng từ khóa SEO địa phương và theo dõi đối thủ.
Proxy theo nền tảng
Proxy cho Discord: tách riêng IP giữ sống Token và tránh khóa xác minh SĐT
Mua proxy IPv4 riêng và ISP tĩnh tại Mỹ, Singapore, Việt Nam để nuôi nhiều tài khoản Discord không bị khóa xác minh số điện thoại hàng loạt.
IPV4 · united states
Proxy IPv4 riêng Mỹ: IP datacenter Hoa Kỳ nhanh, dùng riêng và ổn định
Proxy IPv4 Mỹ dùng riêng cho cào dữ liệu, theo dõi thứ hạng, duyệt quảng cáo và nghiên cứu Amazon. IP tĩnh, 1 người 1 IP, băng thông không giới hạn.
IPV4 · singapore
Proxy IPv4 riêng Singapore: IP SG nhanh, dùng riêng cho bán hàng khu vực và quảng cáo
Proxy IPv4 Singapore dùng riêng cho shop Lazada và Shopee SG, tài khoản quảng cáo khu vực, xác minh quảng cáo và tự động hóa độ trễ thấp. Không giới hạn data.