In this Article
Puppeteer 可驱动无头 Chrome 执行抓取和自动化任务,能够渲染 JavaScript、处理登录与点击,是 2026 年众多 Node.js 抓取技术栈的核心工具。不过,若直接用数据中心 IP 访问真实目标网站,很快就可能遭到封禁或限速。解决办法是让 Puppeteer 经由代理访问,最好使用住宅代理,让每个会话看起来都像普通用户。Puppeteer 的一个特殊限制是:Chrome 不会接受代理 URL 中的用户名和密码,因此身份验证需要额外一步。本指南将准确展示如何在 Puppeteer 中设置代理(含可运行代码),然后按价格、成功率和集成体验,对2026 年 8 款最佳 Puppeteer 代理进行排名。
我是 Andrii Byzov,AI 原生领域的兼职 CMO,每天都在运行基于 Puppeteer 的数据管道。本文提供可直接复制的配置方法,包括最容易出错的身份验证步骤、可扩展的轮换模式,以及值得投入预算的服务商。其中,DataImpulse 的住宅代理以 $1/GB 的价格作为高性价比参考。
关键事实
- 使用
--proxy-server启动参数配置代理。 通过args将其传给puppeteer.launch(),它会应用到该浏览器中的所有页面。 - Chrome 会忽略代理 URL 中的凭据。 对于需要认证的代理,必须在
page.goto()之前调用page.authenticate({ username, password })。也可以用proxy-chain库封装代理,由它处理认证。 - 不支持 SOCKS5 认证。 Chromium 及 Puppeteer 不支持通过 SOCKS5 使用用户名和密码认证。需要认证的住宅代理请使用 HTTP/HTTPS 端点。
- 通过重新启动或使用 proxy-chain 进行轮换。
--proxy-server参数在一个浏览器实例中固定不变。因此,要轮换代理,就要为每个代理启动新的浏览器,或使用指向轮换上游的本地proxy-chain封装器。轮换住宅网关会自动为每个连接提供新的 IP。 - DataImpulse 是高性价比之选:住宅代理按量付费 $1/GB,数据中心代理 $0.50/GB,移动代理 $2/GB;覆盖 195 个国家和地区的 90M+ IP,支持 HTTP/HTTPS/SOCKS5 及国家、城市、ASN 定向,价格远低于多数企业级按 GB 计费方案。
如何在 Puppeteer 中设置代理
有两种可靠的配置方式:使用内置参数配合 page.authenticate(),或使用 proxy-chain 库,让认证和轮换更清晰。
1. --proxy-server 标志 + page.authenticate()
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: ['--proxy-server=http://gw.dataimpulse.com:823'], // DataImpulse gateway
});
const page = await browser.newPage();
// Chrome won't take credentials in the URL — authenticate separately,
// BEFORE the first navigation:
await page.authenticate({
username: 'YOUR_LOGIN__cr.us', // __cr.us = target the US
password: 'YOUR_PASSWORD',
});
await page.goto('https://httpbin.org/ip'); // verify the egress IP
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();
})();
2. proxy-chain 库(更清晰的认证 + 轮换)
Apify 的 proxy-chain 会启动本地代理,保存凭据并将请求转发至上游网关。这样便无需调用 page.authenticate(),也可通过切换上游代理实现轮换:
const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');
(async () => {
const upstream = 'http://YOUR_LOGIN__cr.us:[email protected]:823';
const newProxyUrl = await proxyChain.anonymizeProxy(upstream); // local, auth handled
const browser = await puppeteer.launch({ args: [`--proxy-server=${newProxyUrl}`] });
const page = await browser.newPage();
await page.goto('https://httpbin.org/ip');
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();
await proxyChain.closeAnonymizedProxy(newProxyUrl, true);
})();
3. SOCKS5 以及关于轮换的说明
Puppeteer 可以使用 SOCKS5(--proxy-server=socks5://gw.dataimpulse.com:824),但 Chromium 不支持 SOCKS5 的用户名和密码认证。因此,SOCKS5 应仅用于 IP 白名单访问;需要认证的住宅代理应使用 HTTP/HTTPS 端点。由于 --proxy-server 在浏览器实例的生命周期内固定不变,你可以为每个代理启动一个新的浏览器来轮换,也可以让 proxy-chain 指向轮换网关,由网关在每次新连接时分配新的 IP。DataImpulse 提供了一篇介绍当前配置方法的 Puppeteer 代理教程。
Puppeteer 最佳代理一览
| 提供商 | 最适合 Puppeteer 的用途 | 住宅代理价格 | 协议 | 亮点 |
|---|---|---|---|---|
| DataImpulse | 性价比高,适合自建流程 | $1/GB PAYG | HTTP/HTTPS/SOCKS5 | 90M+ 池,官方 Puppeteer 教程,流量永不过期 |
| Bright Data | 企业级 + Scraping Browser | ~$2.50/GB 促销;$5 常规价 | HTTP/HTTPS/SOCKS5 | 可通过 CDP 连接的托管 Scraping Browser,配有 Web Unlocker |
| Oxylabs | 企业级 SLA | 起价 $6/GB | HTTP/HTTPS/SOCKS5 | 175M+ 池,Web Scraper API,官方指南 |
| Decodo | 中端方案,地理定位选项齐全 | $3.75/GB 入门;1TB+ 约 ~$2 | HTTP/HTTPS/SOCKS5 | 115M+ 池,粘性会话最长 24h |
| IPRoyal | 长时间粘性会话 | 起价 $7.35/GB | HTTP/HTTPS/SOCKS5 | 粘性最长 7 天;低价 PAYG 入门 |
| SOAX | 住宅 + 移动组合 | $3.60/GB Starter | HTTP/HTTPS/SOCKS5 | 155M+ 住宅,33M+ 移动 |
| Webshare | 预算型 / 自助式 | 住宅代理起价 $3.50/mo;数据中心代理 $2.99/mo | HTTP/SOCKS5 | 免费层,最便宜的数据中心代理 |
| NetNut | ISP-住宅稳定性 | 起价 $3.53/GB | HTTP/HTTPS | 消费者 ISP 静态 IP,快速轮换 |

简要推荐
DataImpulse 是适合 Puppeteer 抓取的高性价比选择。住宅代理按量付费 $1/GB,数据中心代理 $0.50/GB,移动代理 $2/GB;其网络覆盖 195 个国家和地区,拥有 90M+ IP,支持 HTTP/HTTPS 和 SOCKS5,并可通过用户名设置国家、城市和 ASN 定向,还提供官方 Puppeteer 教程。流量永不过期,测试不会白白消耗订阅周期。该服务提供 24/7 人工支持,公布的成功率为 99.51%,G2 评分为 4.8/5。若你自行运行 Puppeteer 流水线,且希望以较低成本获得成功响应,它是默认之选。
Bright Data 适合企业用户。除住宅代理外,价格促销时约为 $2.50/GB、常规价格为 $5,它还提供托管式 Scraping Browser,可通过 CDP(puppeteer.connect({ browserWSEndpoint }))连接,内置代理和反爬能力,并提供 Web Unlocker。Oxylabs($6/GB 起,175M+ IP 池)是带 SLA 的企业级选项,也有文档完善的 Puppeteer 指南。Decodo($3.75/GB 起,粘性会话最长 24h)是均衡的中端选择。IPRoyal($7.35/GB 起,粘性会话最长 7 天)适合需要长期保持会话稳定的 Puppeteer 流程。SOAX($3.60/GB,155M+ 住宅 IP 加 33M+ 移动 IP)适合需要移动 IP 的场景。Webshare(提供免费层,数据中心代理 $2.99/mo 起)适合预算有限、自助上手的用户;NetNut($3.53/GB 起)则适合重视 ISP 住宅代理稳定性的用户。
使用 Puppeteer 时的轮换代理与粘性代理
两种模式适用于不同任务。轮换住宅代理会在每次连接时使用全新的 IP,是大规模数据采集的默认选择,适合抓取大量页面、列表或 SERP,且各请求彼此独立的场景。使用轮换网关会自动获得新的 IP;若要在 Puppeteer 中显式轮换,可为每个代理启动新的浏览器,或让 proxy-chain 指向轮换端点。粘性会话会让同一个 IP 保持数分钟至数天,适合需要维持状态的流程,例如登录、浏览多步骤转化漏斗或保留购物车。在流程中途轮换会破坏会话并触发反爬机制。整个流程应使用同一个浏览器和一个粘性 IP;IPRoyal 的粘性会话最长可保持 7 天。大多数 Puppeteer 技术栈会结合使用两者:采集任务使用轮换代理,多步骤任务使用粘性代理池。
常见的 Puppeteer 代理错误
- 把凭据放在代理 URL 中。 Chrome 会忽略这些凭据。请使用
page.authenticate()(在page.goto()之前)或proxy-chain。 - 在导航后调用
page.authenticate()。 它必须在第一次goto之前运行,否则请求会因 407 失败。 - 在受防护的目标网站上使用数据中心 IP。这类 IP 很快会被封禁;面对具有实际反爬机制的目标,请使用住宅代理或移动代理。
- 忽略指纹。 代理只能隐藏 IP,不能隐藏自动化信号。请结合真实的 user-agent 和
puppeteer-extra-plugin-stealth,避免无头 Chrome 暴露自身。 - 以为需要认证的 SOCKS5 可以正常工作。Chromium 不支持这一功能;需要用户名和密码的代理请使用 HTTP/HTTPS。
Puppeteer 应选择哪种代理类型:住宅、数据中心还是移动?
这三种类型对应三类任务:
- 住宅($1/GB):默认首选。它使用真实消费者 ISP IP,适合大多数 Puppeteer 抓取任务,包括电商、SERP、内容采集,以及所有存在反爬机制的场景。若只选择一种类型,优先选它。
- 移动($2/GB):使用真实运营商 IP,适合最难处理的目标,以及移动网页或应用内场景。这是最受信任的 IP 类型,应留给会封禁住宅代理的端点。
- 数据中心($0.50/GB):价格最低、速度最快,适合没有防护的任务,例如解析已采集页面、访问公开参考数据或自有基础设施。不要将其用于反爬机制严格的网站。
对大多数 Puppeteer 任务而言,常见做法是:住宅代理用于采集,移动代理用于少数防护严密或仅限应用的目标,数据中心代理则用于低成本、无防护的任务。DataImpulse 在同一个按需付费账户中提供三种类型,因此一条 Puppeteer 流水线即可为每个浏览器选择合适的代理层级。
如何开始使用 DataImpulse + Puppeteer
步骤 1。 创建 DataImpulse 账户并获取你的住宅代理凭据。$5 / 5GB 入门套餐永不过期,适合用于测试。
步骤 2。 将 --proxy-server=http://gw.dataimpulse.com:823 添加到你的启动 args 中,然后在导航前调用 page.authenticate({ username: 'YOUR_LOGIN__cr.us', password: '...' }),或使用 proxy-chain 包装带凭据的 URL。向用户名追加类似 __cr.us 的国家/地区代码以进行地理定位。需要认证的代理应使用 HTTP/HTTPS,因为 Puppeteer 不支持 SOCKS5 认证。
步骤 3。 通过重启浏览器(或使用 proxy-chain)轮换代理,并为有状态流程保留粘性浏览器。将其与 puppeteer-extra-plugin-stealth 和真实的 user-agent 搭配使用。查看 Puppeteer 代理教程 和 住宅代理 页面了解详情。
常见问题
如何在 Puppeteer 中使用代理?
在 puppeteer.launch() 的 args 数组中传入 --proxy-server=http://gw.dataimpulse.com:823。对于需要认证的代理,请在 page.goto() 之前调用 page.authenticate({ username, password })。Chrome 不会从代理 URL 中读取凭据。或者,使用 proxy-chain 库,由它在本地代理中保存凭据并转发到网关。
Puppeteer 最适合使用哪种代理?
住宅代理,因为大多数目标网站会封锁数据中心 IP。DataImpulse 的 $1/GB 是高性价比之选(HTTP/HTTPS/SOCKS5、90M+ IP、官方 Puppeteer 教程);Bright Data 的托管 Scraping Browser 或 Oxylabs 适合企业;SOAX 和 DataImpulse mobile($2/GB)有助于处理应用端场景。始终将代理与隐身插件和真实的指纹搭配使用。
为什么我的 Puppeteer 代理返回 407 错误?
407(Proxy Authentication Required)表示代理需要凭据,但 Puppeteer 没有提供。通常是因为凭据被放在 URL 中而被 Chrome 忽略,或是 page.authenticate() 在首次导航后才调用。请在 newPage() 之后、page.goto() 之前立即调用 page.authenticate({ username, password }),或使用 proxy-chain 处理认证。
如何在 Puppeteer 中轮换代理?
--proxy-server 标志在每个浏览器实例中是固定的,因此可以通过为每个代理启动一个新浏览器来轮换,或将 proxy-chain 库指向轮换网关。使用像 DataImpulse 这样的轮换住宅网关时,每个新连接都会获得一个新 IP,因此通常不需要管理 IP 列表。对于有状态流程,请在整个会话中保持一个粘性 IP,而不是轮换。
Puppeteer 支持 SOCKS5 和认证代理吗?
Puppeteer 可通过 page.authenticate() 或 proxy-chain 使用需要认证的 HTTP/HTTPS 代理。它可以使用 SOCKS5(--proxy-server=socks5://...),但 Chromium 不支持 SOCKS5 的用户名和密码认证。因此,需要认证的住宅代理请使用 HTTP/HTTPS 端点,SOCKS5 则留给 IP 白名单访问。
Puppeteer 代理费用是多少?
原始住宅代理按 GB 计费:DataImpulse $1/GB(低价基准)、NetNut $3.53 起、SOAX $3.60、Decodo $3.75、Oxylabs $6 起、IPRoyal $7.35;Webshare 提供 $3.50/mo 起的低价订阅。单个渲染页面只会消耗 GB 流量中的很小一部分,因此对于大规模 Puppeteer 采集,按 GB 计费的住宅代理通常远比按记录计费的托管 API 便宜;托管方案更适合最难处理的目标。
