O adaptador HTTP do Node do Axios aceita um objeto de proxy HTTP com host e porta numérica:

import axios from 'axios';

const response = await axios.get('https://example.com/', {
  adapter: 'http',
  proxy: {
    protocol: 'http',
    host: '203.0.113.10',
    port: 8080,
  },
  timeout: 15000,
});

console.log(response.status);

Substitua o endpoint de documentação por uma entrada HTTP do seu serviço ou da lista de proxies HTTP. Os exemplos usam Node; o Axios no navegador não pode selecionar o proxy de rede do navegador por essas opções. O campo host recebe o endereço sem esquema de URL.

O campo protocol do objeto proxy descreve seu listener. No Axios 1.21.0, o adaptador HTTP do Node usa CONNECT para um destino HTTPS e depois negocia TLS com a origem pelo túnel. Versões antigas usaram outras rotas de proxy; portanto, a versão instalada importa.

Uma URL SOCKS precisa de um agente SOCKS

O objeto de proxy HTTP não seleciona SOCKS. Use um agente compatível:

npm install [email protected] [email protected]
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5h://203.0.113.10:1080');

try {
  const response = await axios.get('https://example.com/', {
    adapter: 'http',
    httpAgent: agent,
    httpsAgent: agent,
    proxy: false,
    timeout: 15000,
  });
  console.log(response.status);
} finally {
  agent.destroy();
}

proxy: false desativa o tratamento de proxy HTTP do Axios para a rota fornecida pelo agente SOCKS. Fornecer o agente para destinos HTTP e HTTPS cobre os dois esquemas. Aqui socks5h delega o DNS do destino ao lado SOCKS; o servidor escolhido precisa aceitar esse protocolo.

Interpretando falhas

Um erro do Axios pode incluir uma resposta quando o site retorna um status sem sucesso. Sem resposta, examine o código de erro e os detalhes da conexão. Módulo ausente, protocolo não aceito ou versão incompatível do Node podem falhar antes de uma requisição alcançar o endpoint.

Para proxies HTTP autenticados, use o campo auth do objeto proxy com as credenciais fornecidas pelo operador. As configurações de autenticação do destino atendem a outra parte.

Artigos relacionados