Desbloquea sitios web y protege tu identidad con proxies y Axios Node.js

Suciu Dan el 25 abr 2023

blog-image

¿Qué es Axios?

Axios es una popular librería cliente HTTP basada en promesas que permite realizar peticiones HTTP en Node.js. Es ligera y fácil de usar, lo que la convierte en una gran opción para proyectos de web scraping.

Axios es compatible con una amplia gama de funciones, como proxies, conversión automática de datos JSON, soporte para cancelar solicitudes y soporte para interceptores, que permite gestionar tareas como la autenticación y la gestión de errores.

¿Qué son los proxies?

Los proxies, también conocidos como servidores proxy, actúan como intermediarios entre un cliente (como un navegador web o un scraper) y un servidor de destino (como un sitio web).

El proxy recibe las peticiones del cliente y las reenvía al servidor de destino. A continuación, el servidor de destino devuelve la respuesta al proxy, que a su vez la reenvía al cliente.

En el raspado web, puede utilizar proxies para ocultar la dirección IP del raspador, de modo que el sitio web que está raspando no detecte y bloquee la solicitud. Además, el uso de varios proxies puede ayudar a prevenir la detección y evitar el bloqueo.

Algunos proveedores de proxies ofrecen opciones de rotación de IP, de modo que puedes rotar los proxies para evitar que te bloqueen.

Requisitos previos

Para usar un proxy con Axios y Node.js, necesitarás tener Node.js y npm (Node Package Manager) instalados en tu ordenador. Si aún no lo has hecho, puedes descargarlos e instalarlos desde el sitio web de Node.js.

Una vez que instales Node.js y npm, abre el terminal, crea una nueva carpeta para el proyecto y ejecuta el comando `npm init`. Sigue las instrucciones y crea un archivo package.json base.

Instala axios usando este comando:

npm install axios

Realizar una petición HTTP

Vamos a realizar nuestra primera petición con Axios. Enviaremos una petición GET al endpoint ipify. La petición nos devolverá nuestra dirección IP.

Crea un archivo index.js y pega el siguiente 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()

})()

Comenzamos importando la librería axios y utilizamos el método get para enviar una petición al endpoint api.ipify.org.

Puede ejecutar el código utilizando el comando `node index.js` en el terminal. La salida debería mostrar tu dirección IP. Comprueba el resultado accediendo a la URL en tu navegador.

Uso de proxies con Axios

Antes de escribir ningún código, dirígete al sitio web Free Proxy List y elige el proxy más cercano a tu ubicación. En mi caso, elegiré un proxy para Alemania.

El método `get` de axios soporta un segundo parámetro llamado options. Dentro de este parámetro, podemos definir los detalles del proxy.

Nuestra solicitud GET anterior con un proxy tendrá el siguiente aspecto:

res = await axios.get('https://api.ipify.org?format=json', {

proxy: {

protocol: 'http',

host: '217.6.28.219',

port: 80

}

})

Al ejecutar el código, observará que la dirección IP devuelta es diferente de la suya. Esto se debe a que la solicitud se enruta a través de un servidor proxy, protegiendo así su dirección IP de la detección.

¿Y la autenticación?

Al suscribirse a un servicio proxy premium, recibirá un nombre de usuario y una contraseña que deberá utilizar en su aplicación para autenticarse.

El objeto `proxy` de Axios tiene una propiedad auth que puede recibir credenciales de autenticación. Un ejemplo de una petición GET utilizando esta configuración sería la siguiente:

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"

}

}

})

Establecer el proxy como variable de entorno

Una forma alternativa de configurar un proxy en Axios es estableciendo las variables de entorno `http_proxy` o `https_proxy`. Este método te permite omitir la configuración de los detalles del proxy dentro de los comandos de Axios, ya que se obtendrán automáticamente de las variables de entorno.

Para la compatibilidad entre plataformas, recomiendo la instalación del paquete `cross-env`, que implementa un comando similar al de exportación para Windows.

Instale el paquete globalmente utilizando este comando:

npm install -g cross-env

Limpiemos el código de `axios.get` y llevémoslo a la versión inicial. El código debería tener este aspecto:

res = await axios.get('https://api.ipify.org?format=json')

En lugar de simplemente ejecutar el código con node index.js, incluiremos la URL del proxy delante del comando de la siguiente manera:

cross-env https_proxy=http://217.6.28.219:80/ node index.js

La salida del script debería ser la dirección IP del proxy, en lugar de la tuya. Para confirmarlo, puedes visitar la URL de ipify en tu navegador.

Rotación de proxies

Rotar los proxies es una buena idea porque ayuda a evitar la detección e impide que los sitios web bloqueen su dirección IP. Los sitios web pueden rastrear y bloquear las direcciones IP que realizan demasiadas peticiones en un corto periodo de tiempo, o las asociadas a actividades de scraping.

Podemos usar el sitio web Free Proxy List para compilar una lista con proxies que podemos rotar con cada petición de `axios`.

Tenga en cuenta que la lista de proxies que puede encontrar en el sitio web puede diferir de la lista que yo he elaborado. La lista que he creado tiene este aspecto:

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

}

];

Bien, pongamos la propiedad `proxy` de nuevo en la configuración de `axios`. Pero en lugar de usar sólo un proxy, vamos a elegir al azar uno de nuestra lista de proxies. El código se verá así:

res = await axios.get('https://api.ipify.org?format=json', {

proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]

})

Este es el contenido del archivo 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()

})()

Uso de proxies WebScrapingAPI

Usar proxies premium de un servicio como WebScrapingAPI es mejor que usar proxies gratuitos porque son más fiables, más rápidos y proporcionan mayor seguridad. Los proxies premium son menos propensos a ser bloqueados por sitios web y tienen menor latencia.

En cambio, los proxies gratuitos pueden ser lentos, poco fiables, contener malware y son propensos a ser bloqueados por los sitios web.

¿Quieres probar WebScrapingAPI? No hay problema, regístrese en nuestra prueba gratuita de 14 días y tendrá acceso a todas las funciones e incluso recibirá 5.000 créditos para jugar.

Una vez que tenga una cuenta, diríjase a API Playground y seleccione la pestaña Modo proxy en la sección Muestras de código

blog-image

Utilicemos la URL Proxy en nuestro código. La petición GET de axios tendrá este aspecto:

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]'

}

}

})

La propiedad `username` le permite activar o desactivar funciones específicas de la API. Tenga en cuenta que también debe establecer su clave de API en la propiedad `password`. Puedes consultar la documentación completa aquí.

Cada vez que ejecute este código, recibirá una dirección IP diferente, ya que WebScrapingAPI rota las IPs con cada petición. Puedes aprender más sobre esta característica leyendo la documentación sobre el Modo Proxy.

Además, tiene la opción de cambiar entre proxies de centro de datos y proxies residenciales. Encontrará más información sobre los distintos tipos de proxies que ofrecemos en la documentación sobre proxies.

Conclusión

El uso de un proxy es un aspecto importante del web scraping, ya que te permite ocultar tu dirección IP y acceder a sitios web bloqueados. Axios es una potente biblioteca para el scraping de datos, y cuando se combina con un proxy fiable, puedes conseguir una extracción de datos eficiente y rápida.

Al utilizar un servicio proxy premium como WebScrapingAPI, tendrá acceso a una amplia gama de funciones, incluida la rotación de IP y la opción de cambiar entre proxies de centro de datos y proxies residenciales.

Esperamos que este artículo te haya proporcionado una comprensión útil del uso de un proxy con Axios y Node.js y cómo podría ser beneficioso para tus necesidades de scraping. Siéntete libre de registrarte en nuestra prueba gratuita de 14 días, para probar nuestro servicio y explorar todas las características y funcionalidades.

Noticias y actualidad

Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

miniatura
GuíasCómo raspar datos de productos de Amazon: Guía completa de mejores prácticas y herramientas

Explore las complejidades del scraping de datos de productos de Amazon con nuestra guía en profundidad. Desde las mejores prácticas y herramientas como Amazon Scraper API hasta las consideraciones legales, aprenda a superar los desafíos, eludir los CAPTCHA y extraer información valiosa de forma eficiente.

Suciu Dan
avatar de autor
Suciu Dan
15 minutos de lectura
miniatura
GuíasAprenda a eludir la detección de Cloudflare con el mejor navegador Selenium

Conozca cuál es el mejor navegador para eludir los sistemas de detección de Cloudflare mientras hace web scraping con Selenium.

Mihnea-Octavian Manolache
avatar de autor
Mihnea-Octavian Manolache
9 min leer
miniatura
GuíasDescubre cómo scrapear tablas HTML con Golang

Aprenda a raspar tablas HTML con Golang para una potente extracción de datos. Explore la estructura de las tablas HTML y construya un raspador web utilizando la simplicidad, la concurrencia y la robusta biblioteca estándar de Golang.

Andrei Ogiolan
avatar de autor
Andrei Ogiolan
8 min leer