const endpoint = new URL(browserlessWebSocketEndpoint);
endpoint.searchParams.set('token', browserlessToken);
endpoint.searchParams.set('launch', JSON.stringify({
  args: ['--proxy-server=http://proxy.example:8080'],
}));

const browser = await puppeteer.connect({
  browserWSEndpoint: endpoint.toString(),
});

デプロイ先から提供されたws/wssエンドポイントとトークンを使います。ブラウザのホストからHTTPリスナーに到達できる必要があり、そのトークンは制御接続を認証します。許可された公開ページの閲覧では、HTTPプロキシ一覧の候補を認証なしの起動フラグに指定できます。

JSON.stringifyがlaunchオブジェクトをシリアライズし、その後URLSearchParamsがURL用にエンコードします。先にencodeURIComponentで処理したテキストをsearchParamsへ渡すと、パーセント記号が再度エンコードされます。

この認証なしのフラグは、Chromiumのユーザー名とパスワードの認証情報を渡しません。必要な場合は、対応している認証チャレンジの処理を使います。

ホスト型サービスのexternalProxyServer連携は、すべてのセルフホストイメージのlaunchオブジェクトに同名フィールドがあることを意味しません。アカウントを調べる前に、デプロイ環境、イメージのバージョン、選択したAPIを合わせて確認してください。

関連記事