Um agente compatível com SOCKS pode estabelecer a conexão de destino para o cliente HTTPS do núcleo do Node. Com socks-proxy-agent disponível na aplicação:

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);

Substitua o endpoint de exemplo por um candidato não autenticado da lista de proxies SOCKS5 para esta solicitação HTTPS pública. O callback esgota a resposta depois de imprimir o status; consuma o corpo ali se a aplicação precisar dele. Reutilize o agente para as operações atribuídas e depois destrua-o quando essa política de cliente for retirada e o trabalho terminar.

Escolha onde o nome de destino é resolvido

No tratamento de URL do socks-proxy-agent, socks5h deixa a resolução do nome do host de destino para o caminho do proxy; socks5 resolve-o localmente. Isso importa quando o nome está disponível apenas na rede do proxy.

A URL HTTPS mantém a identidade do site. O agente realiza a negociação SOCKS antes de o Node iniciar TLS para esse site.

Para um serviço com nome de usuário/senha, coloque as credenciais na URL do proxy usando codificação de componentes URI para caracteres reservados. Mantenha a URL completa fora dos logs. Os cabeçalhos Authorization de destino pertencem à conta do site.

Este agente funciona com as APIs de solicitação HTTP/HTTPS do núcleo do Node. fetch do Node usa uma interface de dispatcher, então configure separadamente a integração SOCKS suportada desse cliente.

Artigos relacionados