Got は HTTP と HTTPS のキーで SOCKS エージェントを選ぶ
SocksProxyAgent を Got の宛先プロトコル別エージェント項目に割り当て、HTTP/2 の経路は別に保ちます。
Got の agent オブジェクトは宛先プロトコルをキーにしています。そのため HTTPS URL 用の SOCKS 接続は socks という新しいキーではなく https の下に入ります。
HTTP/1 の経路で Got と socks-proxy-agent を使っている既存の ESM アプリケーションの場合:
import got from 'got';
import {SocksProxyAgent} from 'socks-proxy-agent';
const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const body = await got('https://www.example.org/', {
http2: false,
agent: {
http: agent,
https: agent,
},
timeout: {request: 20000},
}).text();
SOCKS5 プロキシ一覧から、例のアカウント不要のプロキシ URL の候補を得られます。同じエージェントで、示した HTTP と HTTPS の両方の項目を扱えます。SOCKS 接続を確立し、その後 HTTPS の経路が宛先と TLS ハンドシェイクを行います。
このエージェントでは socks5h が宛先ホスト名の解決を SOCKS プロキシに任せます。socks5 は代わりにローカル解決を選びます。プロキシ自身のホスト名は、依然として Node プロセスから到達できる必要があります。
Got の HTTP/2 エージェント枠は別のインターフェースを想定しています。このエージェントを agent.http2 にコピーして、HTTP/2 プロキシに対応すると考えないでください。
設定したエージェントをワークロードで再利用し、所有者の終了時に破棄します。パッケージのバージョンはアプリケーションの Node ランタイムに合わせてください。この例では名前付きの SocksProxyAgent エクスポートを使います。