Firefox WebExtensions: ProxyInfo で SOCKS5 認証情報を設定する
Firefox の proxy.onRequest の戻り値でユーザー名とパスワードを渡し、SOCKS のバージョンとリモート DNS の扱いを明示します。
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 検証を保ちます。