用 Puppeteer 接住宅代理:--proxy-server 和 page.authenticate 怎么写

Puppeteer 常见写法是启动参数 --proxy-server,再对每个 page 调用 authenticate。凭据来自控制台,示例用假占位符。不是 Playwright 或指纹浏览器页。不支持中国大陆。

Puppeteer 常见写法是启动参数 --proxy-server,再对每个 page 调用 authenticate。凭据来自控制台,示例用假占位符。不是 Playwright 或指纹浏览器页。不支持中国大陆。

先从控制台复制协议、主机、端口、认证,再写进 Puppeteer。常见写法是:启动时用 `--proxy-server` 指定主机和端口,然后在每一个 `page` 上于 `goto` 之前调用 `page.authenticate`。这和 Playwright 的 `launch({ proxy })` 不是同一套 API,见用 Playwright 接住宅代理。Node 里发 HTTP 请求见用 Node.js 和 Axios 接住宅代理。指纹浏览器字段见指纹浏览器接线。

ZTProxy 提供动态住宅(按 GB)与静态住宅(按 IP·月)。示例是假占位符,不要当成生产地址。仅限授权目标。不支持中国大陆使用。

开始前备齐什么

准备项从哪里来
协议、主机、端口、认证仅控制台返回值(不用本文假占位符)
Node.js 与 `puppeteer`本机环境
测通 URL你有权访问的页面
动态或静态订单动态 vs 静态

占位符(非生产):主机 `proxy.example.invalid`,端口 `10000`,用户 `USER_EXAMPLE`,密码 `PASS_EXAMPLE_NOT_REAL`。协议与字符串见HTTP / SOCKS5 配置、代理格式。命令以文档快速开始为准。

推荐写法:启动参数 + 每个 page 认证

不要把用户名密码写进 `--proxy-server` 的 URL 里指望 Chromium 一定会处理。认证走 `page.authenticate`,并且新建 page 后要再设一次,否则可能只第一次成功、后续 407。不要编造用户名里的国家或会话字段。

import puppeteer from "puppeteer";

const host = process.env.ZT_PROXY_HOST ?? "proxy.example.invalid";
const port = process.env.ZT_PROXY_PORT ?? "10000";
const username = process.env.ZT_PROXY_USER ?? "USER_EXAMPLE";
const password = process.env.ZT_PROXY_PASS ?? "PASS_EXAMPLE_NOT_REAL";

const browser = await puppeteer.launch({
  args: [`--proxy-server=http://${host}:${port}`],
});

const page = await browser.newPage();
await page.authenticate({ username, password });
await page.goto("https://example.com", { timeout: 30_000 });
console.log(await page.title());
await browser.close();

SOCKS5 仅在控制台返回 SOCKS 时才改用对应的 `--proxy-server` 写法,且不要假设提供 UDP。用户名或密码若含特殊字符,以控制台和 Puppeteer 对 `authenticate` 的要求为准,不要自行发明编码规则后再写进启动参数。

会话与常见问题

同一个 browser 里的多个 page 仍可能看到动态出口变化。连接复用不是静态 IP,也不自动等于粘性会话。见粘性 ≠ 静态。

现象先检查什么
407是否漏了 `authenticate`;是否在新 page 上没再调用;订单是否有效
仍显示本机 IP`--proxy-server` 是否生效;是否被环境变量或系统代理带走
超时协议和端口是否与控制台一致;是否误用假主机
想先排除库问题用 curl 测通 核对同一组凭据

更完整的症状表见407 与超时排查。

合规与范围

只用于授权目标。不要把本页写成绕过检测或养号教程。价格以控制台与价格方案为准(动态约 $0.40/GB,100 TB 整包约 $0.20/GB;静态共享约 $1.50、独享约 $5 /IP/月)。USDT/USDC 可用;Visa/Mastercard 申请中。不支持中国大陆使用。

FAQ

这和 Playwright 页有什么不同?

库和 API 不同。Playwright 可在 `launch({ proxy })` 里同时写主机和认证;Puppeteer 更常见的是启动参数加 `page.authenticate`。

每个新 page 都要再 authenticate 吗?

要。只在第一个 page 上设置,后续新建的 page 可能再次遇到 407。

示例主机能直接用吗?

不能。必须改成控制台返回值。

可以在用户名里自己加国家码吗?

不要自造语法。只有控制台或文档写明的字段才能用。

复用 browser 会保持同一 IP 吗?

不一定。连接复用 ≠ 静态,也不自动等于粘性。

可以用来突破登录限制吗?

不可以。仅限合法授权目标。

要用 SOCKS5 吗?

看控制台返回的协议。许多 HTTPS 页面用 HTTP 代理的 CONNECT 即可。

价格以哪里为准?

以控制台与价格方案为准。

下一步

  1. 从控制台复制真实字段。
  2. 对授权页面测通,并记住每个新 page 都要认证。
  3. 需要选型时打开动态或静态。