Usar um agente SOCKS com o cliente HTTPS do Node
Anexe socks-proxy-agent a uma solicitação HTTPS do núcleo do Node e preserve a distinção entre um agente Node e um dispatcher fetch.
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.