Proxies HTTP e SOCKS no Axios para Node.js
Configure um proxy HTTP no adaptador HTTP do Node do Axios ou use um agente SOCKS quando o IP escolhido for um endpoint SOCKS.
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.