Como configurar proxy no Node.js (Axios e Native Fetch)
Atualizado:
A opção padrão do Axios proxy: { host, port } falha ao acessar endpoints https:// porque não inicia um túnel HTTP CONNECT. Para rotear requisições em Node.js e TypeScript através de proxies HTTP(S) autenticados da VinaProxy, forneça um HttpsProxyAgent (https-proxy-agent) ao Axios ou um dispatcher undici.ProxyAgent ao método nativo fetch().
new HttpsProxyAgent('http://user:pass@ip:port')- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
Comparativo de configuração de proxy: Axios vs. fetch() nativo
Ambas as ferramentas aceitam a estrutura padrão de URL http://user:pass@ip:port obtida no painel da VinaProxy:
| Cliente HTTP | Pacote NPM | Exemplo de Código Recomendado |
|---|---|---|
| Axios | npm i https-proxy-agent | axios.get(url, { httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port'), proxy: false }) |
Nativo fetch (Node 18+) | npm i undici | fetch(url, { dispatcher: new ProxyAgent('http://user:pass@ip:port') }) |
| Got | npm i hpagent | got(url, { agent: { https: new HttpsProxyAgent({ proxy: 'http://user:pass@ip:port' }) } }) |
Reaproveitamento de conexões e gerenciamento de timeouts no Node.js
- Sempre declare
proxy: falseem conjunto comhttpsAgentno Axios para neutralizar possíveis variáveis de ambienteHTTP_PROXYdo sistema - Instancie o
HttpsProxyAgentouProxyAgentapenas uma vez por IP fora de loops para reutilizar os sockets TCP keep-alive de forma eficiente - Exporte sua lista de proxies da VinaProxy como array JSON diretamente pelo nosso Conversor de Formato de Proxy
Passo a passo
- 1
Instale https-proxy-agent (ou undici)
Execute
npm install axios https-proxy-agentna pasta do seu projeto Node.js. - 2
Instancie o objeto HttpsProxyAgent
Inicialize
const agent = new HttpsProxyAgent('http://user:pass@ip:port');com os dados do painel da VinaProxy. - 3
Passe httpsAgent e proxy: false para o Axios
Invoque
const res = await axios.get('https://vinaproxy.com/api/my-ip', { httpsAgent: agent, proxy: false, timeout: 10000 });. - 4
Valide o IP de saída
Exiba
res.datano console para confirmar que a conexão ocorreu pelo seu IP proxy dedicado.
Perguntas frequentes
Por que a opção padrão proxy: { host, port, auth } do Axios não funciona em URLs HTTPS?
O recurso embutido do Axios encaminha uma requisição HTTP simples em vez de negociar um túnel TLS por HTTP CONNECT. Utilizar httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port') com proxy: false soluciona essa limitação.
Como usar proxy com a função fetch() nativa no Node.js 18/20/22?
Importe ProxyAgent do pacote undici e passe { dispatcher: new ProxyAgent('http://user:pass@ip:port') } nas opções do fetch().
É possível converter minha lista de proxies em JSON para projetos Node.js?
Sim. Insira suas linhas ip:port:user:pass em nosso Conversor de Formato de Proxy gratuito e selecione o formato JSON.
Capacite seus serviços e raspadores em Node.js com IPs estáticos dedicados
Proxies IPv4 Dedicados e ISP Estáticos sem franquia de dados com entrega em 7 países.
Comprar Proxies para Node.js