Firefox の WebExtension の ProxyInfo は Firefox 64 以降、SOCKS のユーザー名とパスワードのフィールドに対応しています。これらのフィールドは拡張機能のインターフェースに属し、手動プロキシのダイアログとは別です。

プロキシと一致するホスト権限を持つ既存の拡張機能では、次のようにします。

browser.proxy.onRequest.addListener(() => ({
  type: 'socks',
  host: 'proxy.example',
  port: 1080,
  username: proxyUser,
  password: proxyPassword,
  proxyDNS: true,
}), {urls: ['<all_urls>']});

proxyUser と proxyPassword は拡張機能の認証情報の扱いを通じて渡します。type: 'socks' は SOCKS5 を意味し、socks4 は同じパスワード認証を提供しません。

proxyDNS: true は宛先名の解決を明示的にプロキシへ委ねます。ProxyInfo のリファレンスは既定値 false を記載しており、このフィールドを明示的に設定すればその既定値への依存を避けられます。

SOCKS 認証にはこれらのユーザー名/パスワードのフィールドを使います。代わりに proxyAuthorizationHeader は HTTP 系プロキシ向けです。

SOCKS5 サーバーはそのアカウントをサポートし、受け入れる必要があります。このユーザー名とパスワードのやり取りは通信を暗号化しません。宛先の HTTPS は独自の TLS 検証を保ちます。

関連記事