Browserlessの起動URL:launchパラメータを二重にエンコードしない
セルフホストしたエンドポイントのlaunchインターフェースを使います。ホスト型サービスのexternalProxyServerは別の機能です。
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を合わせて確認してください。