Использование SOCKS-агента с HTTPS-клиентом Node
Подключите socks-proxy-agent к HTTPS-запросу ядра Node и сохраните различие между агентом Node и диспетчером fetch.
Агент с поддержкой SOCKS может установить соединение с пунктом назначения для HTTPS-клиента ядра Node. Когда socks-proxy-agent доступен в приложении:
const https = require('node:https');
const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const request = https.get('https://www.example.com/', {
agent,
signal: AbortSignal.timeout(15000),
}, (response) => {
console.log(response.statusCode);
response.on('error', console.error);
response.resume();
});
request.on('error', console.error);
Замените пример конечной точки неаутентифицированным кандидатом из списка SOCKS5-прокси для этого публичного HTTPS-запроса. Обратный вызов вычитывает ответ после вывода статуса; используйте тело там, если приложению оно нужно. Повторно используйте агент для порученных ему операций, а затем уничтожьте его, когда эта клиентская политика будет снята и его работа завершится.
Выберите, где разрешается имя назначения
В обработке URL socks-proxy-agent socks5h оставляет разрешение имени хоста назначения прокси-пути; socks5 разрешает его локально. Это важно, когда имя доступно только в сети прокси.
HTTPS-URL сохраняет идентичность веб-сайта. Агент выполняет согласование SOCKS до того, как Node начнёт TLS к этому сайту.
Для сервиса с именем пользователя и паролем поместите учётные данные в URL прокси с помощью кодирования компонентов URI для зарезервированных символов. Держите полный URL вне журналов. Заголовки Authorization назначения принадлежат учётной записи веб-сайта.
Этот агент работает с основными API HTTP/HTTPS-запросов Node. fetch в Node использует интерфейс диспетчера, поэтому настройте поддерживаемую интеграцию SOCKS для этого клиента отдельно.