Cách cấu hình proxy HTTP(S) trong Puppeteer trên Node.js

Cập nhật:

Puppeteer điều khiển trực tiếp Chrome/Chromium thông qua giao thức DevTools (CDP). Để gắn proxy có xác thực ip:port:user:pass của VinaProxy vào Puppeteer, bạn kết hợp cờ khởi chạy --proxy-server=http://ip:port trong puppeteer.launch() với hàm await page.authenticate({ username, password }) trên mỗi tab mở ra.

Puppeteer · HTTP Proxy Format
--proxy-server=http://ip:port + page.authenticate({ username, password })
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-trackingyoutube

Quy trình 2 bước xác thực proxy chuẩn trong Puppeteer

Khác với Selenium cần tiện ích mở rộng, Puppeteer cung cấp sẵn hàm page.authenticate() gửi thông tin đăng nhập xuống tầng mạng CDP ngay khi máy chủ proxy trả về yêu cầu xác thực HTTP 407:

Bước cấu hình trong PuppeteerLệnh JavaScript / TypeScriptVai trò
Bước 1: Khởi chạy Browserpuppeteer.launch({ args: ['--proxy-server=http://ip:port'] })Trỏ kết nối mạng của tiến trình Chromium về máy chủ proxy
Bước 2: Xác thực trên Tabawait page.authenticate({ username: 'u', password: 'p' })Cung cấp thông tin đăng nhập trước khi gọi page.goto()
Bước 3: Chặn tài nguyên nặngawait page.setRequestInterception(true)Bỏ qua tải ảnh/video/font khi chỉ cần lấy nội dung trang

Xoay vòng nhiều proxy cho từng tab Puppeteer với proxy-chain

  • Mặc định cờ --proxy-server áp dụng cho toàn bộ tiến trình browser; nếu bạn mở tab mới bằng browser.newPage(), nhớ gọi lại await newPage.authenticate({ username, password }) cho tab đó
  • Nếu muốn mỗi BrowserContext ẩn danh (browser.createBrowserContext()) dùng một proxy khác nhau mà không cần bật nhiều Chrome, hãy dùng gói npm proxy-chain (await proxyChain.anonymizeProxy('http://user:pass@ip:port'))
  • Luôn đặt { waitUntil: 'domcontentloaded', timeout: 30000 } trong page.goto() để script không bị treo bởi các trình theo dõi quảng cáo

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

  1. 1

    Truyền cờ --proxy-server vào puppeteer.launch()

    Khởi tạo const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }); (không điền user:pass ở cờ này).

  2. 2

    Mở trang mới và gọi page.authenticate()

    Chạy const page = await browser.newPage(); await page.authenticate({ username: 'USER', password: 'PASS' });.

  3. 3

    Truy cập trang kiểm tra IP

    Gọi await page.goto('https://vinaproxy.com/api/my-ip', { waitUntil: 'networkidle2' }); để xác minh IP đầu ra.

  4. 4

    Đóng trình duyệt sau khi hoàn tất

    Gọi await browser.close() để giải phóng bộ nhớ RAM trên máy chủ.

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

Tại sao Puppeteer báo lỗi `ERR_NO_SUPPORTED_PROXIES`?

Lỗi này xuất hiện khi bạn truyền cả user:pass@ vào trong cờ --proxy-server=http://user:pass@ip:port. Ở cờ --proxy-server, bạn chỉ được phép viết http://ip:port, còn username và password phải truyền qua hàm await page.authenticate().

Mở tab thứ hai bằng `browser.newPage()` bị lỗi 407 thì xử lý sao?

Hàm page.authenticate() có phạm vi trên từng đối tượng Page (từng tab). Khi mở tab thứ hai, bạn chỉ cần gọi await page2.authenticate({ username, password }) trước khi điều hướng.

Puppeteer Extra Stealth Plugin có dùng chung cách cài proxy này không?

Hoàn toàn giống hệt. Bạn vẫn truyền --proxy-server=http://ip:port vào puppeteer.launch() và gọi page.authenticate().

Tăng tốc Puppeteer trên Node.js với bể proxy tĩnh VinaProxy

Proxy IPv4 riêng & Static ISP không giới hạn băng thông tại Mỹ, Việt Nam và 5 nước khác.

Mua Proxy cho Puppeteer

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 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ài đặt proxy
Cách cấu hình proxy HTTP(S) trong Node.js (Axios & Undici Fetch)
Hướng dẫn cấu hình proxy HTTP(S) trong Node.js và TypeScript với thư viện Axios (https-proxy-agent) và Undici ProxyAgent cho hàm fetch gốc.
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 YouTube: quản lý đa kênh YouTube Studio và AdSense an toàn
Mua proxy Static ISP Mỹ và IPv4 riêng quản lý nhiều kênh YouTube Studio, xây kênh Shorts ngoại và tách biệt tài khoản AdSense tránh khóa liên đới.
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.