Desbloqueie sítios Web e proteja a sua identidade com proxies e Axios Node.js
Suciu Dan em 25 de abril de 2023

O que é a Axios?
O Axios é uma biblioteca de cliente HTTP popular, baseada em promessas, que permite fazer solicitações HTTP no Node.js. Ela é leve e fácil de usar, o que a torna uma ótima opção para projetos de raspagem da Web.
O Axios suporta uma vasta gama de funcionalidades, tais como proxies, conversão automática de dados JSON, suporte para cancelamento de pedidos e suporte para interceptores, o que lhe permite lidar com tarefas como a autenticação e o tratamento de erros.
O que são proxies?
Os proxies, também conhecidos como servidores proxy, actuam como intermediários entre um cliente (como um navegador Web ou um scraper) e um servidor de destino (como um sítio Web).
O proxy recebe pedidos do cliente e encaminha-os para o servidor de destino. O servidor de destino envia então a resposta de volta para o proxy, que por sua vez a envia de volta para o cliente.
No scraping da Web, pode utilizar proxies para ocultar o endereço IP do scraper, de modo a que o sítio Web que está a fazer o scraping não detecte e bloqueie o pedido. Além disso, a utilização de vários proxies pode ajudar a impedir a deteção e evitar o bloqueio.
Alguns fornecedores de proxy oferecem opções de rotação de IP, pelo que pode rodar os proxies para evitar ser bloqueado.
Pré-requisitos
Para usar um proxy com Axios e Node.js, é necessário ter o Node.js e o npm (Node Package Manager) instalados no computador. Se ainda não o tiver feito, pode descarregá-los e instalá-los a partir do site do Node.js.
Depois de instalar o Node.js e o npm, abra o terminal, crie uma nova pasta para o projeto e execute o comando `npm init`. Siga as instruções e crie um arquivo package.json base.
Instale o axios usando este comando:
npm install axios
Efetuar um pedido HTTP
Vamos fazer o nosso primeiro pedido com o Axios. Enviaremos um pedido GET para o ponto de extremidade ipify. A solicitação retornará nosso endereço IP.
Crie um ficheiro index.js e cole o seguinte código:
// Import axios
const axios = require('axios');
(async () => {
// For storing the response
let res
try {
// Make a GET request with Axios
res = await axios.get('https://api.ipify.org?format=json')
// Log the response data
console.log(res.data)
} catch(err) {
// Log the error
console.log(err)
}
// Exit the process
process.exit()
})()
Começamos por importar a biblioteca axios e utilizamos o método get para enviar um pedido ao endpoint api.ipify.org.
Pode executar o código utilizando o comando `node index.js` no terminal. A saída deve exibir seu endereço IP. Verifique novamente o resultado acedendo ao URL no seu browser.
Utilização de proxies com o Axios
Antes de escrevermos qualquer código, vá ao sítio Web Free Proxy List e escolha um proxy que esteja mais próximo da sua localização. No meu caso, vou escolher um proxy para a Alemanha.
O método `get` do axios suporta um segundo parâmetro chamado options. Dentro deste parâmetro, podemos definir os detalhes do proxy.
O nosso pedido GET anterior com um proxy terá o seguinte aspeto:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
protocol: 'http',
host: '217.6.28.219',
port: 80
}
})
Ao executar o código, observará que o endereço IP devolvido é diferente do seu. Isto acontece porque o pedido é encaminhado através de um servidor proxy, protegendo assim o seu endereço IP da deteção.
E quanto à autenticação?
Ao subscrever um serviço proxy premium, receberá um nome de utilizador e uma palavra-passe para utilizar na sua aplicação para autenticação.
O objeto `proxy` do Axios tem uma propriedade auth que pode receber credenciais de autenticação. Um exemplo de uma solicitação GET usando essa configuração apareceria da seguinte forma:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
protocol: 'http',
host: '217.6.28.219',
port: 80,
auth: {
username: "PROVIDED_USER",
password: "PROVIDED_PASSWORD"
}
}
})
Definir o proxy como uma variável de ambiente
Uma forma alternativa de configurar um proxy no Axios é definindo as variáveis de ambiente `http_proxy` ou `https_proxy`. Esse método permite pular a configuração dos detalhes do proxy nos comandos do Axios, pois eles serão obtidos automaticamente das variáveis de ambiente.
Para compatibilidade entre plataformas, recomendo a instalação do pacote `cross-env` que implementa um comando semelhante ao export para Windows.
Instale o pacote globalmente usando este comando:
npm install -g cross-env
Vamos limpar o código `axios.get` e trazê-lo para a versão inicial. O código deve ficar assim:
res = await axios.get('https://api.ipify.org?format=json')
Em vez de simplesmente executar o código com node index.js, incluiremos o URL do proxy na frente do comando, como segue:
cross-env https_proxy=http://217.6.28.219:80/ node index.js
O resultado do script deve ser o endereço IP do proxy, em vez do seu. Para confirmar isto, pode visitar o URL do ipify no seu browser.
Proxies rotativos
A rotação de proxies é uma boa ideia porque ajuda a evitar a deteção e impede que os sítios Web bloqueiem o seu endereço IP. Os sítios Web podem localizar e bloquear os endereços IP que fazem demasiados pedidos num curto período de tempo ou os que estão associados a actividades de recolha de dados.
Podemos usar o site Free Proxy List para compilar uma lista com proxies que podemos rodar com cada pedido `axios`.
Tenha em atenção que a lista de proxies que pode encontrar no sítio Web pode ser diferente da lista que eu compilei. A lista que eu criei tem o seguinte aspeto:
const proxiesList = [
{
protocol: 'http',
host: '217.6.28.219',
port: 80
},
{
protocol: 'http',
host: '103.21.244.152',
port: 80
},
{
protocol: 'http',
host: '45.131.4.28',
port: 80
}
];
Tudo bem, então vamos colocar a propriedade `proxy` de volta na configuração do `axios`. Mas ao invés de usar apenas um proxy, vamos escolher aleatoriamente um da nossa lista de proxies. O código ficará parecido com este:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]
})
Este é o conteúdo do ficheiro index.js:
// Import axios
const axios = require('axios');
const proxiesList = [
{
protocol: 'http',
host: '217.6.28.219',
port: 80
},
{
protocol: 'http',
host: '172.67.180.244',
port: 80
},
{
protocol: 'http',
host: '45.131.4.28',
port: 80
}
];
(async () => {
// For storing the response
let res
try {
// Make a GET request with Axios
res = await axios.get('https://api.ipify.org?format=json', {
proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]
})
// Log the response data
console.log(res.data)
} catch(err) {
// Log the error
console.log(err)
}
// Exit the process
process.exit()
})()
Utilização de proxies WebScrapingAPI
A utilização de proxies premium de um serviço como o WebScrapingAPI é melhor do que a utilização de proxies gratuitos porque são mais fiáveis, mais rápidos e oferecem uma melhor segurança. Os proxies premium têm menos probabilidades de serem bloqueados pelos sítios Web e têm uma latência mais baixa.
Em contrapartida, os proxies gratuitos podem ser lentos, pouco fiáveis, conter malware e ter tendência para serem bloqueados pelos sítios Web.
Quer experimentar o WebScrapingAPI? Não há problema, basta inscrever-se no nosso teste gratuito de 14 dias e terá acesso a todas as funcionalidades interessantes e até 5.000 créditos para brincar.
Depois de ter uma conta, vá para o API Playground e selecione o separador Modo Proxy na secção Amostras de Código

Vamos utilizar o URL do proxy no nosso código. O pedido GET do axios terá o seguinte aspeto:
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
host: 'proxy.webscrapingapi.com',
port: 80,
auth: {
username: 'webscrapingapi.render_js=0.device=desktop.proxy_type=datacenter',
password: '[YOUR_API_KEY]'
}
}
})
A propriedade `username` permite-lhe ativar ou desativar funcionalidades específicas da API. Lembre-se de que também deve definir a sua chave de API na propriedade `password`. Pode consultar a documentação completa aqui.
Sempre que executar este código, receberá um endereço IP diferente, uma vez que a WebScrapingAPI roda os IPs em cada pedido. Para saber mais sobre esse recurso, leia a documentação sobre o Modo proxy.
Além disso, tem a opção de alternar entre proxies de centro de dados e residenciais. Para obter mais informações sobre os diferentes tipos de proxies que oferecemos, visite a documentação sobre proxies.
Conclusão
A utilização de um proxy é um aspeto importante da recolha de dados da Web, uma vez que lhe permite ocultar o seu endereço IP e aceder a sítios Web bloqueados. O Axios é uma biblioteca poderosa para a recolha de dados e, quando combinado com um proxy fiável, pode conseguir uma extração de dados eficiente e rápida.
Ao utilizar um serviço de proxy premium como o WebScrapingAPI, terá acesso a uma vasta gama de funcionalidades, incluindo a rotação de IP e a opção de alternar entre proxies de centros de dados e residenciais.
Esperamos que este artigo tenha fornecido uma compreensão útil do uso de um proxy com Axios e Node.js e como ele pode ser benéfico para suas necessidades de raspagem. Sinta-se à vontade para se inscrever na nossa avaliação gratuita de 14 dias, para testar o nosso serviço e explorar todos os recursos e funcionalidades.
Notícias e actualizações
Mantenha-se atualizado com os mais recentes guias e notícias sobre raspagem da Web, subscrevendo a nossa newsletter.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artigos relacionados

Explore as complexidades da extração de dados de produtos da Amazon com nosso guia detalhado. De práticas recomendadas e ferramentas como a API Amazon Scraper a considerações legais, saiba como enfrentar desafios, contornar CAPTCHAs e extrair insights valiosos com eficiência.


Saiba qual é o melhor browser para contornar os sistemas de deteção Cloudflare enquanto faz web scraping com o Selenium.


Aprenda a raspar tabelas HTML com Golang para uma poderosa extração de dados. Explore a estrutura das tabelas HTML e crie um raspador da Web usando a simplicidade, a simultaneidade e a robusta biblioteca padrão do Golang.
