A rotação de proxies é uma boa ideia porque ajuda a evitar a deteção e impede que os sites bloqueiem o seu endereço IP. Os sites podem rastrear e bloquear endereços IP que façam demasiados pedidos num curto período de tempo, ou aqueles associados a atividades de scraping.
Podemos usar o site Free Proxy List para compilar uma lista com proxies que podemos alternar a cada pedido `axios`.
Tenha em atenção que a lista de proxies que poderá encontrar no site pode diferir da lista que compilei. A lista que 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
}
];
Muito bem, vamos então colocar a propriedade `proxy` de volta na configuração do `axios`. Mas, em vez de usar apenas um proxy, vamos escolher um aleatoriamente da nossa lista de proxies. O código ficará assim:
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()
})()