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:
- Proxies HTTP e HTTPS:
https-proxy-agent
- SOCKS, SOCKS5 e SOCKS4:
socks-proxy-ag
ent
- PAC-*: pac-proxy-agent
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>"
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-pr
oxy-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:
- Incluir as credenciais diretamente na URL do proxy:
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
- Definir as opções de
nome de usuário
esenha
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:
- Defina uma lista de objetos, cada um contendo informações para se conectar a um proxy diferente.
- Selecione aleatoriamente um objeto proxy antes de cada solicitação.
- 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:
- Proxies de data centers — mais de 770.000 IPs de data centers.
- Proxies residenciais — mais de 72 milhões de IPs residenciais em mais de 195 países.
- Proxies de provedores de internet — mais de 700.000 IPs de provedores.
- Proxies móveis — mais de 7 milhões de IPs móveis.
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.
Não é necessário cartão de crédito