一个 Puppeteer 浏览器可以持有各自独立的代理上下文
当一个 Chromium 浏览器内的多组页面需要不同的代理路由时,可在 Puppeteer25.16.0 中使用 BrowserContextOptions.proxyServer。
Puppeteer 25.16.0 在创建浏览器上下文时提供 proxyServer 选项。对于已存在的 Chromium 浏览器,新上下文中的页面可以使用选定的中间代理,包括来自HTTP 代理列表的公共 HTTP 候选节点:
const context = await browser.createBrowserContext({
proxyServer: 'http://proxy.example:8080',
});
try {
const page = await context.newPage();
await page.goto('https://www.example.com/');
} finally {
await context.close();
}为第二条路由再创建一个使用不同 proxyServer 的上下文。同一上下文中创建的两个页面共享该上下文的代理策略;仅仅新开一个标签页并不会选定新的出口端点。
该选项名为 proxyServer。较早的 createIncognitoBrowserContext 示例属于上一代 API。
BrowserContextOptions 同样接受 proxyBypassList。请把直连例外保留在该上下文的策略中,而不要假定它们来自其他上下文。
对于受支持的用户名/密码 HTTP 代理,Page.authenticate 会在导航前提供凭据。代理 URL 负责选定中间代理,认证调用负责提供账号。
这属于浏览器网络层。若某个包拦截页面请求并用 Node HTTP 客户端的响应来填充,就会形成不同的传输路径,其 cookie、header 与 TLS 行为也各不相同。
调用方仍然负责共享浏览器的生命周期。关闭一个上下文会关闭其关联页面,但不会结束其他上下文。