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 即可。
价格以哪里为准?
以控制台与价格方案为准。