Объект 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.

Похожие статьи