跳到正文

Puppeteer 代理设置:--proxy-server、认证和按上下文设置代理

Puppeteer 控制的是 Chrome,所以代理要按 Chrome 的方式设置,账号和密码则单独交给 Puppeteer。本文介绍启动参数、登录步骤、按上下文设置的选项和检查方法。

启动浏览器时设置代理

Puppeteer 文档说明,puppeteer.launch() 的 args 选项会把额外的命令行参数传给浏览器。代理用的参数是 Chromium 的 --proxy-server,Chromium 的代理文档介绍了它。它的值是一个代理地址;带 http:// 前缀时,Chrome 使用 HTTP 代理。

启动浏览器时设置代理:示例

import puppeteer from 'puppeteer'

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy-host:port'],
})
const page = await browser.newPage()
await page.goto('https://ipinfo.io/json')
console.log(await page.evaluate(() => document.body.innerText))
await browser.close()

请把 proxy-host 和 port 换成你代理列表里的值。不要把账号和密码写进 --proxy-server;按下一节的方法交给 page.authenticate。

用 page.authenticate 提供账号和密码

Puppeteer 文档把 Page.authenticate() 描述为提供 HTTP 认证所需的凭据,并说明传入 null 会关闭它。文档还提到,为了实现认证,后台会打开请求拦截,这可能影响性能。请在页面第一次导航之前调用它。

用 page.authenticate 提供账号和密码:示例

const page = await browser.newPage()
await page.authenticate({ username: 'USERNAME', password: 'PASSWORD' })
await page.goto('https://ipinfo.io/json')

账号和密码是分开的字段,所以这里的密码不需要做 URL 编码。

用 page.authenticate 提供账号和密码(续)

Chromium 文档说明,Chrome 中的 HTTP 代理与目标服务器支持相同的认证方式:Basic、Digest、Negotiate 和 NTLM。拒绝登录的代理会返回 407;见认证失败指南。

每个浏览器上下文一个代理

Puppeteer API 参考在浏览器上下文的选项里列出了 proxyServer:一个用于所有请求的代理服务器,端口可选,账号和密码在 Page.authenticate 里设置。该列表里的另一个选项接受不使用代理的主机。这样,同一个浏览器里的两个上下文可以使用两个不同的代理。

每个浏览器上下文一个代理:示例

const context = await browser.createBrowserContext({
  proxyServer: 'http://proxy-host:port',
})
const page = await context.newPage()
await page.authenticate({ username: 'USERNAME', password: 'PASSWORD' })
await page.goto('https://ipinfo.io/json')
await context.close()

请从上下文而不是从浏览器创建页面,这样页面才会使用该上下文的代理。

HTTP 还是 SOCKS5

Chromium 代理文档列出了 HTTP、HTTPS、SOCKS4 和 SOCKS5 几种代理方案。对于 SOCKS5,文档说 Chrome 在代理一侧解析域名,并且 Chrome 对 SOCKS5 不支持任何认证方式。实际上,需要账号密码的 SOCKS5 代理无法通过这个设置用在 Chrome 上。代理有登录信息时,请为 Puppeteer 选择 HTTP 代理。如果别的程序需要 SOCKS5,见 SOCKS5 代理页面。

检查出口

像示例中那样打开 https://ipinfo.io/json,查看 country 和 org 字段;代理位置检查指南解释了怎么看。如果返回的是你自己的地址,说明代理没有生效:确认参数写在了启动调用里,或者页面是从设置了 proxyServer 的上下文创建的。

常见错误

Chromium 文档说明,代理服务器无法连接时,请求会以 ERR_PROXY_CONNECTION_FAILED 失败。检查主机、端口和协议,完整清单见连接失败指南。出现 407 或反复要求登录,说明账号密码没有交给 page.authenticate,或者填错了;请重新复制。如果想在另一个浏览器工具里完成同样的任务,Playwright 页面介绍了它的代理设置,Node.js 代理指南介绍了普通的 HTTP 客户端。请确保你运行的任何自动化都遵守所访问网站的条款。

用 Proxy302 怎么做

上面任何一种设置,只需要 Proxy302 代理的主机、端口、账号和密码。用于 Puppeteer 时请选 HTTP,它在 proxy.proxy302.com 的 2222 端口。动态住宅按流量(每 GB)计费,出口国家在生成代理时设置。静态 ISP IP 在整个租期内固定,不轮换。下表是我们最近一次每小时检测时 7 个国家的出口;探测器请求的是 ChatGPT,它只是一个示例目标。详情见动态住宅页面和代理位置检查指南。

实测出口:ChatGPT 从 7 个国家的连通

实测出口:ChatGPT 从 7 个国家的连通
项目城市运营商网络ASN
美国Baton Rouge, LouisianaVerizon BusinessAS6167
英国Birkenhead, EnglandVirgin Media LimitedAS5089
德国Hannover, Lower Saxonyhtp GmbHAS13045
日本Saitama, SaitamaJCOM Co., Ltd.AS9824
新加坡Yishun New Town, SingaporeSingtel Fibre BroadbandAS9506
巴西Silvianópolis, Minas Geraisintertel telecomunicacao LTDAAS268801
印度尼西亚Jakarta, JakartaPT Mahawira Nusantara GrupAS151576

Proxy302 探测器每小时检测一次,本次检测时间:2026 年 10 月 28 日 14:56 UTC。每个国家通过一个动态住宅出口、经公开的 Proxy302 入口向 ChatGPT 发一次请求。IP 只公开前三段。每国一个样本,不是平均值,之后的检测结果会不同。

用 Proxy302 怎么做:步骤

  1. 第 1 步

    打开动态住宅页面,选择线路,「协议」保持 HTTP 或改选 SOCKS5,然后点击「确认费用并生成」。

  2. 第 2 步

    打开「我的资产」(控制台里放着你买到的全部代理),复制 HOST(地址)、PORT(端口)、USERNAME(账号)和 PASSWORD(密码)。「连接工具」页(控制台里教你把代理接到各种软件的页面)里有填好你自己连接信息的现成示例。

  3. 第 3 步

    把这些信息填入你正在设置的浏览器或软件。

  4. 第 4 步

    通过代理访问 https://ipinfo.io/json 确认出口。

  5. 第 5 步

    在中国大陆,先在「连接工具」页打开辅助工具,使用代理期间保持开着。

价格与限制

低价线路每 GB 收费 US$1.50,100 GB 套餐每 GB US$1.35,300 GB 每 GB US$1.20。不提供免费试用,最小购买单位为 1 GB。可用的出口位置每天都会变化。

常见问题

Puppeteer 支持带账号密码的 SOCKS5 吗?

Puppeteer 启动的是 Chrome,而 Chromium 文档写明 Chrome 对 SOCKS5 不支持任何认证方式。需要登录时请用 HTTP 代理。

怎么在一个浏览器里用两个代理?

创建两个浏览器上下文,并在每次 createBrowserContext() 调用中传入不同的 proxyServer,Puppeteer API 参考中有说明。

为什么 page.authenticate 会让页面变慢?

Puppeteer 文档说明,为了实现认证,后台会打开请求拦截,这可能影响性能。

怎么让某个网站不走代理?

Puppeteer API 参考在上下文选项里列出了一个选项,接受不使用代理的主机列表;Chromium 文档也介绍了与之对应的启动开关。

参考资料

7
  1. Puppeteer API:LaunchOptions,args

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:args 是传给浏览器实例的额外命令行参数。

  2. Puppeteer API:Page.authenticate()

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:提供 HTTP 认证的凭据,传入 null 会关闭,后台会打开请求拦截。

  3. Puppeteer API:BrowserContextOptions

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:proxyServer(用于所有请求的代理,端口可选,凭据在 Page.authenticate 中设置)以及不使用代理的主机列表。

  4. Puppeteer API:Browser.createBrowserContext()

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:接受 BrowserContextOptions 并返回 BrowserContext。

  5. Chromium 文档:Chrome 中的代理支持

    官方文档 · 确认日期:

    2026 年 10 月 28 日读取:--proxy-server、主机排除开关、HTTP、HTTPS、SOCKS4 和 SOCKS5 方案、HTTP 代理的认证方式、Chrome 中 SOCKS5 不支持任何认证方式,以及 ERR_PROXY_CONNECTION_FAILED。

  6. Proxy302 产品事实与价格表

    产品观察 · 确认日期:

    站点的产品事实表(数值已于 2026 年 10 月 18-19 日对照控制台、后端和价格表核对):产品、美元价格(1 PTC = 1 美元)、租期、协议与端口、国家数、数量上限、没有免费试用。

  7. Proxy302 每小时连通检测

    产品观察 · 确认日期:

    探测器的公开 JSON proxy302.com/live/connectivity/chatgpt.json,读取于 2026 年 10 月 28 日 14:56 UTC:每个出口国家一次请求,经动态住宅出口;出口城市、ASN、网络和响应时间。

准备好试试了吗?

注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。