Como configurar um proxy no Axios: guia definitivo

Aprenda a configurar proxies no Axios e leia sobre os proxies da Bright Data que são compatíveis com Axios.
10 min read
How To Set a Proxy in Axios

Este guia de proxies no Axios abordará os seguintes temas:

  • Por que você deve usar proxies no Axios.
  • Como configurar um proxy HTTP, HTTPS ou SOCKS com o Axios.
  • Como lidar com autenticação e rodízio de proxies.

O que é o Axios e por que você precisa de um proxy?

O Axios é um dos clientes HTTP mais usados no ecossistema JavaScript. Ele oferece uma API baseada em promises que é intuitiva e fácil de usar para realizar solicitações HTTP e processar cabeçalhos, configurações e cookies personalizados.

Por que você precisa de um proxy no Axios? Simples! Ao rotear suas solicitações através de um proxy, você pode mascarar seu endereço IP, tornando mais difícil para o servidor de destino identificar e bloquear você. Essa camada adicional de privacidade ajuda a manter a integridade da sua aplicação e evita restrições ou bloqueios de IP. Você pode obter o mesmo resultado com o fetch, como explicado no nosso guia de proxy com node-fetch.

Usando um proxy no Axios

Nesta seção sobre proxies com Axios, você verá como configurar um proxy HTTP, HTTPS ou SOCKS no Axios.

Pré-requisitos

Primeiro, você precisa se certificar de que o pacote de Axios do npm está instalado. Adicione-o às dependências do seu projeto com:

npm install axios 

No Node.js, o Axios tem suporte nativo a proxies HTTP e HTTPS através do config do proxy. Portanto, se quiser usar proxies HTTP/HTTPS com o Axios em uma aplicação Node.js, você já pode começar!

Se, em vez disso, você quiser usar um proxy não HTTP/HTTPS, será necessário usar o projeto Proxy Agents. Ele fornece implementações http.Agent para integrar o Axios com proxies em diferentes protocolos. Em mais detalhes, as diferentes bibliotecas do npm expostas pelo projeto categorizadas pelo protocolo são:

Excelente! Você está pronto para configurar proxies no Axios!

Proxies HTTP/HTTPS

É assim que deve ficar a URL do seu proxy HTTP/HTTPS:

"<PROXY_PROTOCOL>://<PROXY_HOST>:<PROXY_PORT>" 

será “http” para proxies HTTP e “https” para proxies HTTPS. geralmente é um IP bruto, enquanto é a porta que o servidor proxy escuta.

Por exemplo, suponha que esta seja a URL do seu proxy HTTP:

"http://47.88.62.42:80"

Você pode definir esse proxy no Axios da seguinte forma:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "48.88.62.42",

        port: "80"

    }

})

Como pode ver, tudo se resume a dividir a URL do proxy em duas partes e especificá-las corretamente na configuração do proxy. O Axios agora fará a solicitação à URL que foi passada como parâmetro através do servidor proxy HTTP especificado.

Vamos verificar se a abordagem acima usando proxy no Axios funciona! 

Recupere a URL de um servidor proxy HTTP ou HTTPS gratuitamente online. Veja este exemplo:

Protocol: HTTP; IP Address: 52.117.157.155; Port: 8002

A URL completa do proxy será “http://52.117.157.155:8002”.

Para verificar se o proxy funciona como esperado, você pode apontar para o endpoint /ip através do projeto HTTPBin. Essa API pública retorna o IP da solicitação recebida, portanto, deve retornar o IP do servidor proxy. 

O trecho do script de Node.js será:

import axios from "axios"

async function testProxy() {

    // perform the desired request through the HTTP proxy

    const response = axios.get("https://httpbin.io/ip", {

        proxy: { 

            protocol: "http", 

            host: "52.117.157.155",

            port: "8002" 

        }

    })

    // print the result

    console.log(response.data)

}

testProxy()

Execute o script, e ele deverá registrar:

{ "origin": "52.117.157.155" }

Esse é o mesmo IP do servidor proxy, o que significa que o servidor proxy funciona como esperado e que seu IP está seguro! 

Infelizmente, você não terá o mesmo resultado se executar o script. Em mais detalhes, ele terminará com um erro. Por quê? Porque proxies gratuitos duram pouco e não são confiáveis! Você pode usá-los para fins de aprendizado, mas não pode confiar neles em um cenário de uso real. 

Aviso: os serviços de proxy gratuitos não são confiáveis, e são lentos, propenso a erros, consomem dados demais e duram pouco. Evite usá-los! 

A solução? Proxies premium da Bright Data, o melhor provedor do mercado. Cadastre-se e experimente nossos proxies confiáveis gratuitamente.

Proxies SOCKS

Se você tentar definir a string “socks” no campo de protocolo do objeto config do proxy, receberá o seguinte erro:

AssertionError [ERR_ASSERTION]: protocol mismatch

  // ...

 {

  generatedMessage: false,

  code: 'ERR_ASSERTION',

  actual: 'dada:',

  expected: 'http:',

  operator: '=='

}

Isso ocorre porque o Axios não oferece suporte nativo a proxies SOCKS. Portanto, você precisa de uma dependência extra para alcançar o resultado desejado.

Adicione a biblioteca socks-proxy-agent do npm às dependências do seu projeto com o comando abaixo:

npm install socks-proxy-agent

Esse pacote permite que você se conecte a um servidor proxy SOCKS enquanto faz solicitações HTTP ou HTTPS no Axios.

Depois disso, importe a implementação do agente de proxy SOCKS da biblioteca:

const SocksProxyAgent = require("socks-proxy-agent")

Ou, se você for usuário de ESM:

import { SocksProxyAgent } from "socks-proxy-agent"

Suponha que esta seja a URL do seu proxy SOCKS:

"socks://183.88.74.73:4153"

Note que o protocolo do proxy pode ser um dos seguintes valores: “socks”, “socks5”, “socks4”.

Armazene-a em uma variável e passe-a para o construtor socksProxyAgent:

const proxyURL = "socks://183.88.74.73:4153"

const proxyAgent = new SocksProxyAgent(proxyURL)

O socksProxyAgent () inicializa uma instância do http.Agent para fazer solicitações HTTP/HTTPS através da URL do proxy.

Agora você pode usar um proxy SOCKS com o Axios da seguinte forma:

axios.get(targetURL, { 

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

httpAgent e httpsAgent definem o agente personalizado a ser usado ao fazer solicitações HTTP e HTTPS, respectivamente. Em outras palavras, a solicitação HTTP ou HTTPS feita pelo Axios passará pelo proxy SOCKS especificado. De forma semelhante, você pode usar o pacote https-proxy-agent do npm como uma forma alternativa de configurar proxies HTTP/HTTPS no Axios.

Ponha tudo junto:

import axios from "axios"

import { SocksProxyAgent } from "socks-proxy-agent"

async function testProxy() {

    // replace with the URL of your SOCKS proxy 

    const proxyURL = "socks://183.88.74.73:4153"

    // define the HTTP/HTTPS proxy agent

    const proxyAgent = new SocksProxyAgent(proxyURL)

    // perform the request via the SOCKS proxy

    const response = await axios.get("https://httpbin.io/ip", { 

        httpAgent: proxyAgent,     

        httpsAgent: proxyAgent 

    })

    // print the result

    console.log(response.data) // { "origin": "183.88.74.73" }

}

testProxy()

Acesse o link para ver outros exemplos de como configurar um proxy SOCKS no Axios.

Proxy no Axios: casos de uso avançados

Agora que conhece os fundamentos da integração de proxy no Axios, você está pronto para se aprofundar em técnicas mais complexas.

Configurando um proxy globalmente

Você pode configurar um proxy globalmente especificando-o diretamente em uma instância do Axios:

const axiosInstance = axios.create({

    proxy: { 

        protocol: "<PROXY_PROTOCOL>", 

        host: "<PROXY_HOST>",

        port: "<PROXY_PORT>" 

    },

    // other configs...

})

Ou, se for usuário do Proxy Agents:

// proxy Agent definition ...

const axiosInstance = axios.create({

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

Todas as solicitações feitas com axiosInstance agora passarão automaticamente pelo proxy especificado.

Lidando com autenticação de proxy no Axios

Para permitir que somente usuários pagantes acessem proxies premium, os provedores de proxy os protegem com autenticação. Tentar se conectar com um proxy autenticado sem as credenciais corretas resultará no erro (407) Autenticação de proxy obrigatória.

 Especificamente, aqui está a sintaxe da URL de um proxy autenticado:

[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]

Um exemplo de URL real para se conectar a um proxy autenticado pode ser:

http://admin:[email protected]:8391

Neste caso, o campo de URL do proxy seria: 

  • <PROTOCOL>: HTTP
  • <HOST>: 156.127.0.192
  • <PORT>: 8391
  • <USERNAME>: admin 
  • <PASSWORD>: lK4w90MEe45YIkOpk

Para lidar com a autenticação de proxy no Axios, você só precisa especificar o nome de usuário e a senha no campo auth do proxy:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "156.127.0.192",

        port: "8381",

        auth: {

            username: "admin",

            password: "lK4w90MEe45YIkOpk"

        }

    }

})

Ótimo! É simples assim!

Se, em vez disso, você for usuário do Proxy Agents, você tem duas maneiras de abordar a autenticação:

  1. Incluir as credenciais diretamente na URL do proxy:
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
  1. Definir as opções de nome de usuário e senha em um objeto URL:
const proxyOpts = new URL("http://156.127.0.192:8391")

proxyOpts.username = "admin"

proxyOpts.password = "lK4w90MEe45YIkOpk"

const proxyAgent = new SocksProxyAgent(proxyOpts)

As mesmas abordagens também funcionam com HttpsProxyAgent.

Proxies globais através de variáveis de ambiente

Outra forma de configurar um proxy globalmente no Axios é definindo as seguintes variáveis de ambiente:

  • HTTP_PROXY: a URL do servidor proxy a ser usada em solicitações HTTP.
  • HTTPS_PROXY: a URL do servidor proxy a ser usada em solicitações HTTPS.

Por exemplo, defina-as no Linux ou macOS com os comandos abaixo:

export HTTP_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

export HTTPS_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

Quando o Axios detecta essas variáveis de ambiente, ele lê as configurações de proxy contidas nelas, incluindo as credenciais de autenticação. Defina o campo proxy como false para fazer o Axios ignorar essas variáveis de ambiente. Lembre-se de que você também pode definir um ambiente NO_PROXY como uma lista separada por vírgulas contendo domínios que não devem passar pelo proxy.

Note que o mesmo mecanismo também funciona ao usar proxies em cURL.

Implementando proxies rotativos

Se você usar o mesmo servidor proxy várias vezes, o site de destino acabará bloqueando o endereço IP dele. Para evitar isso, é essencial garantir que cada solicitação que você executa tenha origem em um servidor proxy diferente. Um método simples para fazer isso é o seguinte:

  1. Defina uma lista de objetos, cada um contendo informações para se conectar a um proxy diferente.
  2. Selecione aleatoriamente um objeto proxy antes de cada solicitação.
  3. Configure o proxy selecionado no Axios.

A abordagem acima pressupõe que você tenha acesso a um pool de servidores proxy confiáveis. Adquirir acesso a vários servidores pode custar muito dinheiro em taxas. Além disso, integrar essa lógica no seu código pode ser complicado e clichê.

É aí que entra a Bright Data, oferecendo proxies rotativos que trocam automaticamente os endereços IP para você! Você terá acesso a proxies que fornecem um novo endereço IP sempre que se conectar. Esses servidores proxy estão disponíveis em 195 países, têm um tempo de atividade de rede excepcional e garantem uma taxa de sucesso de 99,9%. Experimente os proxies rotativos da Bright Data!

Conclusão

Neste tutorial de proxy no Axios, você aprendeu os motivos para adotar proxies no Axios e como fazer isso. Agora você sabe como configurar um proxy HTTP/HTTPS/SOCKS no Axios. Como mostrado aqui, tudo isso só exige algumas linhas de código!

Você também aprendeu que não deve usar serviços de proxy gratuitos. Portanto, resta apenas escolher que provedor de proxy adotar. Economize tempo e energia e escolha o melhor do mercado — a Bright Data.

A Bright Data controla os melhores servidores proxy do mundo, atendendo a empresas listadas na Fortune 500 e a mais de 20.000 clientes. Sua rede mundial de proxies envolve:

Ao todo, essa é uma das maiores e mais confiáveis redes de proxies do mundo! Fale com um dos nossos representantes de vendas e veja que produtos da Bright Data melhor atendem às suas necessidades.