Use un agente SOCKS con el cliente HTTPS de Node
Conecte socks-proxy-agent a una solicitud HTTPS del núcleo de Node y conserve la distinción entre un agente de Node y un despachador de fetch.
Un agente con capacidad SOCKS puede establecer la conexión de destino para el cliente HTTPS del núcleo de Node. Con socks-proxy-agent disponible en la aplicación:
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);
Sustituya el extremo de ejemplo por un candidato no autenticado de la lista de proxies SOCKS5 para esta solicitud HTTPS pública. La devolución de llamada vacía la respuesta después de imprimir su estado; consuma el cuerpo allí si la aplicación lo necesita. Reutilice el agente para sus operaciones asignadas y luego destrúyalo cuando se retire esa política de cliente y su trabajo haya terminado.
Elija dónde se resuelve el nombre de destino
En el manejo de URL de socks-proxy-agent, socks5h deja la resolución del nombre de host de destino al recorrido del proxy; socks5 lo resuelve localmente. Esto importa cuando el nombre solo está disponible en la red del proxy.
La URL HTTPS conserva la identidad del sitio web. El agente realiza la negociación SOCKS antes de que Node inicie TLS hacia ese sitio.
Para un servicio con nombre de usuario y contraseña, coloque las credenciales en la URL del proxy usando codificación de componentes URI para caracteres reservados. Mantenga la URL completa fuera de los registros. Los encabezados Authorization del destino pertenecen a la cuenta del sitio web.
Este agente funciona con las API de solicitud HTTP/HTTPS del núcleo de Node. fetch de Node usa una interfaz de dispatcher, así que configure por separado la integración SOCKS compatible de ese cliente.