Got выбирает SOCKS-агенты через свои ключи HTTP и HTTPS
Назначьте SocksProxyAgent записям агента Got по протоколу назначения и держите путь HTTP/2 отдельно.
Объект agent в Got индексируется по протоколу назначения. Поэтому SOCKS-соединение для URL HTTPS относится к https, а не к новому ключу с именем socks.
Для существующего ESM-приложения, использующего Got и socks-proxy-agent на пути HTTP/1:
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.
Слот агента HTTP/2 в Got ожидает другой интерфейс. Не копируйте этот агент в agent.http2 и не считайте, что он обеспечивает поддержку HTTP/2-прокси.
Переиспользуйте настроенный агент для нагрузки и уничтожайте его при остановке владельца. Согласуйте версии пакетов со средой Node приложения; в этом примере используется именованный экспорт SocksProxyAgent.