如何在 Puppeteer 中設定驗證 Proxy(Node.js 指南)

更新於:

Puppeteer 透過 Chrome DevTools Protocol(CDP)控制 Chrome 與 Chromium,並提供原生的 await page.authenticate({ username, password }) API 處理 HTTP 407 代理驗證。將 --proxy-server=http://ip:port 與 page.authenticate() 搭配使用,能讓你的 Node.js 爬蟲直接透過 VinaProxy 靜態代理發送請求,完全不需要安裝額外的瀏覽器外掛模組。

Puppeteer · HTTP Proxy Format
--proxy-server=http://ip:port + page.authenticate({ username, password })
獨享IPv4(資料中心)
🇺🇸 United States
有貨
低至
₫20,000 / IP / 月
≈ US$0.74 · 以VND結算
批量階梯價格
  • 1 個IP₫40,000
  • 5+ 個IP₫35,000
  • 10+ 個IP₫25,000
  • 20+ 個IP₫25,000
  • 50+ 個IP₫25,000
  • 100+ 個IP₫25,000
  • 200+ 個IP₫25,000
  • 500+ 個IP₫25,000
  • 1000+ 個IP₫22,000
  • 2000+ 個IP₫20,000
購買United States代理
獨享IPv4(資料中心)
🇸🇬 Singapore
有貨
低至
₫20,000 / IP / 月
≈ US$0.74 · 以VND結算
批量階梯價格
  • 1 個IP₫40,000
  • 5+ 個IP₫35,000
  • 10+ 個IP₫25,000
  • 20+ 個IP₫25,000
  • 50+ 個IP₫25,000
  • 100+ 個IP₫25,000
  • 200+ 個IP₫25,000
  • 500+ 個IP₫25,000
  • 1000+ 個IP₫22,000
  • 2000+ 個IP₫20,000
購買Singapore代理

Puppeteer 兩步驟 Proxy 配置流程

請勿將 user:pass@ 直接寫在 --proxy-server 啟動參數中。正確做法是在啟動時傳入主機與連接埠,並在各 Page 實例上進行身分驗證:

步驟Puppeteer 程式碼範例重要性與運作原理
1. 啟動 Chromiumpuppeteer.launch({ args: ['--proxy-server=http://ip:port'] })將 Chromium 底層網路連線指向你的 VinaProxy 代理伺服器
2. 驗證 Page 實例await page.authenticate({ username, password })透過 CDP 提供認證資訊以回應 HTTP 407 代理驗證請求
3. 頁面導航await page.goto(url, { waitUntil: 'domcontentloaded' })經由已通過身分驗證的代理通道載入目標網站

利用 proxy-chain 在多分頁間輪替多組 Proxy

  • 請記住 page.authenticate() 僅限於個別 Page 分頁生效,由 browser.newPage() 建立的每個新分頁都必須個別呼叫
  • 若想在單一 Chromium 處理程序內的隱私瀏覽環境中分配不同 Proxy,可透過 proxy-chain npm 套件的 anonymizeProxy() 轉換各 http://user:pass@ip:port,並傳入 browser.createBrowserContext({ proxyServer })
  • 完全相容於 puppeteer-extra 與反偵測模組 puppeteer-extra-plugin-stealth

操作步驟

  1. 1

    傳入 --proxy-server 參數至 puppeteer.launch()

    使用 const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }); 啟動瀏覽器實例。

  2. 2

    在新建分頁上呼叫 await page.authenticate()

    建立新分頁 const page = await browser.newPage(); 並執行 await page.authenticate({ username: 'USER', password: 'PASS' });。

  3. 3

    測試對外出口 IP 位址

    執行 await page.goto('https://vinaproxy.com/api/my-ip'); 並檢查回傳的 JSON IP 資訊。

  4. 4

    釋放並關閉瀏覽器程序

    工作結束時呼叫 await browser.close(); 以確保背景資源完全釋放。

常見問題

為什麼 Puppeteer 會出現 ERR_NO_SUPPORTED_PROXIES 錯誤?

這是因為在啟動參數中包含了 --proxy-server=http://user:pass@ip:port 的使用者帳密。請保持 --proxy-server=http://ip:port 乾淨,並改用 await page.authenticate({ username, password }) 傳入帳密。

為什麼由 browser.newPage() 開啟的第二個分頁會回傳 HTTP 407?

因為 page.authenticate() 僅對單一分頁生效。在任何新分頁導航前,必須先呼叫 await secondPage.authenticate({ username, password })。

使用無頭 Chrome 執行網頁爬蟲時,VinaProxy 代理是否計算流量?

不會。所有 VinaProxy 專屬 IPv4 與靜態 ISP 方案皆享有每月無限數據流量。

為你的 Node.js Puppeteer 爬蟲架構導入專屬靜態 IP

橫跨全球 7 大地區、即時開通且不限流量的專屬 IPv4 與靜態 ISP 代理方案。

購買 Puppeteer 代理

相關文章

依平台選擇代理
網路爬蟲專用代理:為 24/7 爬蟲打造的不限流量獨享 IPv4 與 ISP 代理池
為 Python、Playwright、Selenium 與 Scrapy 提供高速 HTTP(S) 獨享 IPv4 與靜態 ISP Proxy,享無限月度流量。
代理設定教學
如何在 Playwright 中設定 Proxy(瀏覽器全域與 Per-Context 驗證)
在 Node.js 與 Python 的 Playwright 中設定具備帳密驗證的 HTTP(S) 代理。透過 BrowserContext 在單一瀏覽器處理程序中分配多個獨立靜態 IP。
代理設定教學
如何在 Node.js 中設定 Proxy 代理(Axios 與原生 Fetch)
在 Node.js 與 TypeScript 中設定具身分驗證的 HTTP(S) 代理:結合 https-proxy-agent 於 Axios,以及使用 Undici ProxyAgent 設定原生 fetch。
免費工具
批次 Proxy 格式轉換工具(100% 瀏覽器本地端安全處理)
100% 瀏覽器端批次代理格式轉換工具。支援在 ip:port:user:pass、user:pass@ip:port、http:// URL、SOCKS5 URI、JSON 陣列及 FoxyProxy 匯入檔之間即時轉換。
依平台選擇代理
SEO 與 SERP 排名追蹤專用代理:精準監測 7 國搜尋引擎排名
追蹤精準在地化關鍵字排名,審查地理重定向,並使用不限流量獨享 IPv4 與靜態 ISP Proxy 執行 Screaming Frog 網站爬取。
依平台選擇代理
YouTube 代理:在專屬靜態 IP 上安全隔離多頻道 Studio 與 AdSense
使用美國、越南、日本與英國的不限流量靜態 ISP 及專屬 IPv4 代理,徹底隔離 YouTube Studio 頻道與 AdSense 帳號,防止連鎖停權。
IPV4 · united states
美國獨享IPv4代理:專用於大數據擷取、SEO追蹤與廣告驗證的高速美國IP
美國獨享IPv4代理:專用於資料爬取、排名追蹤、廣告驗證及亞馬遜調研。靜態獨享IP,不限流量,快速啟用。
IPV4 · singapore
新加坡獨享IPv4代理:東南亞跨境電商與海外廣告投放的高速專屬IP
新加坡獨享IPv4代理:適用於Lazada與Shopee新加坡店鋪、區域廣告帳號、廣告驗證及低延遲自動化。不限流量。