1つの Puppeteer ブラウザで複数のプロキシコンテキストを保持できる
1つの 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();
}2つ目の経路には、別の proxyServer を指定した別のコンテキストを作成します。同じコンテキストで作られた2つのページはそのコンテキストのプロキシ方針を共有し、単に新しいタブを開いても新しい端点は選ばれません。
オプション名は proxyServer です。古い createIncognitoBrowserContext の例は以前の世代の API に属します。
BrowserContextOptions は proxyBypassList も受け付けます。直接接続の例外は、別のコンテキスト由来だと決めつけず、そのコンテキストの方針の中に置きます。
ユーザー名とパスワードを使う HTTP プロキシに対応する場合、Page.authenticate が遷移前に資格情報を渡します。プロキシ URL が中間プロキシを選び、認証呼び出しがアカウントを渡します。
これはブラウザのネットワーク処理です。ページ要求を横取りして Node HTTP クライアントの応答で満たすパッケージは、Cookie・ヘッダー・TLS の挙動が異なる別の転送経路を作ります。
共有ブラウザの寿命は依然として呼び出し側の責任です。1つのコンテキストを閉じると関連ページは閉じますが、他のコンテキストは終了しません。