如何在 Puppeteer 中配置带认证的代理(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 两步式代理配置流程

切勿将 user:pass@ 直接内嵌在 --proxy-server 启动参数中。正确的做法是在启动时传入主机与端口,并在 Page 实例上进行身份认证:

执行步骤Puppeteer 代码示例技术要点与作用
1. 启动 Chromiumpuppeteer.launch({ args: ['--proxy-server=http://ip:port'] })将 Chromium 底层网络套接字定向至你的 VinaProxy 代理服务器
2. 认证页面会话await page.authenticate({ username, password })通过 CDP 向浏览器提供凭据以解决 HTTP 407 代理验证挑战
3. 页面导航请求await page.goto(url, { waitUntil: 'domcontentloaded' })经由已认证的加密安全隧道加载目标网页内容

借助 proxy-chain 在多标签页中轮换代理

  • 注意 page.authenticate() 的作用域仅限于单个 Page 标签页,由 browser.newPage() 返回的每个新标签页都必须单独调用认证
  • 若要在单进程 Chromium 内的各无痕上下文中使用不同代理,可使用 proxy-chain npm 包的 anonymizeProxy() 将每个 http://user:pass@ip:port 封装为本地中继,并传入 browser.createBrowserContext({ proxyServer })
  • 完全兼容 puppeteer-extra 及其生态中的 puppeteer-extra-plugin-stealth 反检测插件

操作步骤

  1. 1

    向 puppeteer.launch() 传入 --proxy-server 参数

    使用 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 数据。

  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() 的授权仅对当前标签页生效。在任何通过 browser.newPage() 打开的新标签页发起导航前,必须先调用 await secondPage.authenticate({ username, password })。

使用无头 Chrome 进行网页抓取时,VinaProxy 代理会限制流量吗?

不会。所有 VinaProxy 独享 IPv4 与静态 ISP 套餐均包含无限制的月度流量。

使用高速静态 IP 赋能你的 Node.js Puppeteer 自动化集群

覆盖 7 大区域、即时交付且不限流量的独享 IPv4 与静态 ISP 代理服务。

购买 Puppeteer 代理

相关文章

按平台选择代理
网络爬虫代理:面向 24/7 爬虫的不限流量独享 IPv4 与 ISP 代理池
为 Python、Playwright、Selenium 和 Scrapy 提供高速 HTTP(S) 独享 IPv4 与静态 ISP 代理,享无限月度流量。
代理配置教程
如何在 Playwright 中设置代理(浏览器级与 Per-Context 认证)
在 Node.js 和 Python 的 Playwright 中配置带认证的 HTTP(S) 代理。通过 BrowserContext 在单一浏览器实例中运行多个独立的静态 IP。
代理配置教程
如何在 Node.js 中配置代理(Axios 与原生 Fetch)
在 Node.js 和 TypeScript 中配置带认证的 HTTP(S) 代理:结合 https-proxy-agent 使用 Axios,以及通过 Undici ProxyAgent 配置原生 fetch。
免费工具
批量代理格式转换工具(100% 浏览器本地安全处理)
100% 浏览器本地运行的批量代理格式转换工具。支持在 ip:port:user:pass、user:pass@ip:port、http:// URL、SOCKS5 URI、JSON 数组及 FoxyProxy 导入格式之间即时转换。
按平台选择代理
SEO 与 SERP 排名追踪代理:精准监测 7 国搜索结果排名
追踪精准本地化关键词排名,审查 Geo 重定向,并使用不限流量独享 IPv4 与静态 ISP 代理运行 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新加坡店铺、区域广告账号、广告验证及低延迟自动化。不限流量。