Integrações · Iniciante

Como usar proxies em Node.js com fetch, undici, axios e got

Nas versões compatíveis de Node.js, NODE_USE_ENV_PROXY=1 ativa HTTP_PROXY, HTTPS_PROXY e NO_PROXY para o fetch integrado; --use-env-proxy está disponível em Node.js 22.21+ e 24.5+. Em alternativa, configure ProxyAgent ou EnvHttpProxyAgent do undici. Bibliotecas com transporte ou agentes próprios exigem configuração e testes separados.

2 minutos de leitura 6 seções Revisto Equipa editorial Proxy Cyber

Busca e undici integrados#

Global do nó fetch é indici. Dê um ProxyAgent por solicitação com o dispatcher opção ou defina-a globalmente uma vez com setGlobalDispatcher.

unici
import { fetch, ProxyAgent, setGlobalDispatcher } from "undici";

const proxy = new ProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");

// Per request
const res = await fetch("https://api.ipify.org", { dispatcher: proxy });
console.log(await res.text());

// Or globally, for every fetch in the process
setGlobalDispatcher(proxy);

A ProxyAgent agrupa conexões, portanto, solicitações consecutivas podem reutilizar uma conexão e, portanto, uma saída. Para uma nova saída por solicitação, crie o agente com pipelining: 0 e connections: 1, ou simplesmente use um diferente -sid- por sessão lógica.

eixos#

próprio do axios proxy a opção não encapsula HTTPS de forma confiável; a abordagem padrão é um agente de https-proxy-agent e proxy: false.

eixos
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000");
const client = axios.create({ httpsAgent: agent, httpAgent: agent, proxy: false, timeout: 30000 });

const { data } = await client.get("https://api.ipify.org");
console.log(data);

tenho#

tenho
import got from "got";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");
const body = await got("https://api.ipify.org", { agent: { https: agent, http: agent }, timeout: { request: 30000 } }).text();
console.log(body);

MEIAS5#

agente proxy de meias
import fetch from "node-fetch";
import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new SocksProxyAgent(process.env.PROXY_URL);
const response = await fetch("https://api.ipify.org", { agent });
console.log(await response.text());

Variáveis de ambiente#

undici não lê HTTPS_PROXY por padrão. Versões recentes do undici são enviadas EnvHttpProxyAgent, o que faz; defina-o como o despachante global e todo o processo, incluindo bibliotecas de terceiros construídas na busca, passa pelo proxy.

Agente EnvHttpProxy
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
// HTTPS_PROXY=http://USER-cc-us:PASS@res.proxy-cyber.com:9000 NO_PROXY=localhost node app.js
setGlobalDispatcher(new EnvHttpProxyAgent());

Simultaneidade e rotação#

  • Um ProxyAgent por sessão fixa (diferente -sid-), compartilhado por todas as solicitações dessa sessão.
  • Para ampla rotação, mantenha um agente, mas desative a reutilização de conexão ou execute N agentes com N IDs de sessão e faça round-robin deles.
  • Assistir UND_ERR_SOCKET e ECONNRESET: uma saída residencial desapareceu; tente novamente uma vez, a próxima conexão escolherá outra.

Perguntas que as pessoas fazem#

Por que o axios ignora meu proxy para HTTPS?

Seu suporte a proxy integrado é limitado para túneis CONNECT. Use https-proxy-agent como httpsAgent e defina proxy: false para que o axios não tente lidar com isso sozinho.

Posso fazer proxy apenas de algumas solicitações?

Sim. Repasse ao despachante ou agente as solicitações que necessitem e deixe as demais intocadas; nada é global, a menos que você chame setGlobalDispatcher.

Sua conta

Gerencie seus proxies em uma conta

Compare redes, faça pedidos e acompanhe seu saldo e solicitações de suporte em um painel. Nossa equipe analisa os pagamentos e fornece detalhes de conexão após a entrega.

Criar conta