Cómo configurar un proxy en Axios: guía definitiva

Aprende a configurar proxies en Axios y lee sobre los proxies de Bright Data que son compatibles con Axios.
10 min read
How To Set a Proxy in Axios

Esta guía de proxies de Axios cubrirá los siguientes temas:

  • Por qué deberías usar proxies en Axios.
  • Cómo configurar un proxy HTTP, HTTPS o SOCKS con Axios.
  • Cómo gestionar la autenticación y la rotación de proxies.

¿Qué es Axios y por qué necesitas un proxy?

Axios es uno de los clientes HTTP más utilizados en el ecosistema de JavaScript. Ofrece una API intuitiva, fácil de usar y basada en Promise para realizar solicitudes HTTP y gestionar encabezados, configuraciones y cookies personalizados.

¿Por qué necesitas un proxy en Axios? ¡Sencillo! Al enrutar tus solicitudes a través de un proxy, puedes ocultar tu dirección IP, lo que dificulta que el servidor de destino te identifique y bloquee. Esta capa adicional de privacidad ayuda a mantener la integridad de tu aplicación y evita las prohibiciones o restricciones de IP. Puedes lograr el mismo resultado con Fetch que se explica en nuestra guía de proxies node-fetch.

Uso de un proxy en Axios

En esta sección de proxies de Axios, aprenderás a configurar un proxy HTTP, HTTPS o SOCKS en Axios.

Requisitos previos

Primero, debes asegurarte de que el paquete npm de Axios esté instalado. Añádelo a las dependencias de tu proyecto con:

npm install axios 

En Node.js, Axios es compatible de forma nativa con los proxies HTTP y HTTPS a través de la configuración del proxy. Por lo tanto, si deseas utilizar proxies HTTP/HTTPS con Axios en una aplicación Node.js, ¡estás listo para empezar!

Si, en cambio, desea sutilizar un proxy que no sea HTTP/S, dependerás del proyecto Proxy Agents. Esto proporciona implementaciones de http.Agent para integrar Axios con proxies en diferentes protocolos. En detalle, las diferentes bibliotecas npm expuestas por el proyecto categorizadas por el protocolo son:

¡Increíble! ¡Estás listo para configurar proxies en Axios!

Proxies HTTP/HTTPS

Este es el aspecto que debería tener la URL de tu proxy HTTP/HTTPS:

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

será «http» para los proxies HTTP y «https» para los proxies HTTPS. suele ser una IP sin procesar, mientras que es el puerto que escucha el servidor proxy.

Por ejemplo, supongamos que esta es la URL de tu proxy HTTP:

"http://47.88.62.42:80"

Puedes configurar este proxy en Axios de la siguiente manera:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "48.88.62.42",

        port: "80"

    }

})

Como puedes ver, todo se reduce a dividir la URL del proxy en dos partes y especificarlas correctamente en la configuración del proxy. Axios ahora realizará la solicitud a la URL pasada como parámetro a través del servidor proxy HTTP especificado.

¡Comprobemos que el enfoque de proxies de Axios anterior funciona! 

Recupera la URL de un servidor proxy HTTP o HTTPS de forma gratuita en línea. Por ejemplo, echa un vistazo a este:

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

La URL completa del proxy será «http://52.117.157.155:8002».

Para comprobar que el proxy funciona según lo previsto, puedes dirigirte al punto final /ip del proyecto HTTPBin. Esta API pública devuelve la IP de la solicitud entrante, por lo que debería devolver la IP del servidor proxy. 

El fragmento de la secuencia de comandos 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()

Ejecuta la secuencia de comandos y debería registrar:

{ "origin": "52.117.157.155" }

Es la misma IP que el servidor proxy, lo que significa que este funciona según lo esperado y tu IP está a salvo. 

Lamentablemente, no obtendrás el mismo resultado si ejecutas la secuencia de comandos. En detalle, terminará con un error. ¿Por qué? ¡Porque los proxies gratuitos tienen una corta duración y son poco fiables! Puedes usarlos con fines de aprendizaje, pero no puedes confiar en ellos en una situación del mundo real. 

Aviso: los servicios de proxies gratuitos son poco fiables, propensos a errores, lentos, ávidos de datos y tienen una corta duración. ¡Evítalos! 

¿Cuál es la solución? Proxies prémium de Bright Data, el mejor proveedor del mercado. Suscríbete y prueba nuestros fiables proxies de forma gratuita.

Proxies SOCKS

Si intentas establecer la cadena «socks» en el campo de protocolo del objeto de configuración del proxy, obtendrás el siguiente error:

AssertionError [ERR_ASSERTION]: protocol mismatch

  // ...

 {

  generatedMessage: false,

  code: 'ERR_ASSERTION',

  actual: 'dada:',

  expected: 'http:',

  operator: '=='

}

Esto ocurre porque Axios no es compatible de forma nativa con los proxies SOCKS. Por lo tanto, necesitas una dependencia adicional para lograr el resultado deseado.

Añade la biblioteca npm socks-proxy-agent a las dependencias de tu proyecto con el siguiente comando:

npm install socks-proxy-agent

Este paquete te permite conectarte a un servidor proxy SOCKS mientras realizas solicitudes HTTP o HTTPS en Axios.

Después, importa la implementación del agente proxy SOCKS desde la biblioteca:

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

O, si eres usuario de ESM:

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

Supongamos que esta es la URL de tu proxy SOCKS:

"socks://183.88.74.73:4153"

Ten en cuenta que el protocolo proxy puede ser uno de estos valores: «socks», «socks5», «socks4».

Almacénalo en una variable y pásalo al constructor SocksProxyAgent:

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

const proxyAgent = new SocksProxyAgent(proxyURL)

SocksProxyAgent() inicializa una instancia http.Agent para realizar solicitudes HTTP/HTTPS a través de la URL del proxy.

Ahora puedes usar un proxy SOCKS con Axios de la siguiente manera:

axios.get(targetURL, { 

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

httpAgent y httpsAgent definen el agente personalizado que se utilizará al realizar solicitudes HTTP y HTTPS, respectivamente. En otras palabras, la solicitud HTTP o HTTPS realizada por Axios pasará por el proxy SOCKS especificado. De manera similar, puedes usar el paquete npm https-proxy-agent como una forma alternativa de configurar los proxies HTTP/HTTPS en Axios.

Júntalo todo:

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()

Sigue el enlace para ver otros ejemplos de cómo configurar un proxy SOCKS en Axios.

Proxies en Axios: casos prácticos avanzados

Ahora que conoces los conceptos básicos de la integración de proxies en Axios, estás listo para profundizar en técnicas más complejas.

Configuración de un proxy globalmente

Puedes configurar un proxy globalmente especificándolo directamente en una instancia de Axios:

const axiosInstance = axios.create({

    proxy: { 

        protocol: "<PROXY_PROTOCOL>", 

        host: "<PROXY_HOST>",

        port: "<PROXY_PORT>" 

    },

    // other configs...

})

O, si eres usuario de Proxy Agents:

// proxy Agent definition ...

const axiosInstance = axios.create({

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

Todas las solicitudes realizadas con axiosInstance ahora pasarán automáticamente por el proxy especificado.

Cómo tratar la autenticación de proxies en Axios

Para permitir que solo los usuarios de pago accedan a los proxies prémium, los proveedores de proxies los protegen con autenticación. Si intentas conectarte a un proxy autenticado sin un nombre de usuario y una contraseña, se producirá un error 407 Proxy Authentication Required.

 En particular, esta es la sintaxis de la URL de un proxy autenticado:

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

Por ejemplo, una URL real para conectarse a un proxy autenticado podría ser:

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

En este caso, el campo de la URL del proxy sería: 

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

Para gestionar la autenticación de proxies en Axios, solo tienes que especificar el nombre de usuario y la contraseña en el campo auth del proxy:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "156.127.0.192",

        port: "8381",

        auth: {

            username: "admin",

            password: "lK4w90MEe45YIkOpk"

        }

    }

})

¡Genial! ¡Es tan simple como eso!

Si, por el contrario, eres un usuario de Proxy Agents, tienes dos formas de gestionar la autenticación:

  1. Añade las credenciales directamente en la URL del proxy:
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
  1. Define las opciones username y password en un objeto URL:
const proxyOpts = new URL("http://156.127.0.192:8391")

proxyOpts.username = "admin"

proxyOpts.password = "lK4w90MEe45YIkOpk"

const proxyAgent = new SocksProxyAgent(proxyOpts)

Los mismos enfoques también funcionan con HttpsProxyAgent.

Configurar proxies mediante variables de entorno

Otra forma de configurar un proxy globalmente en Axios es establecer las siguientes variables de entorno:

  • HTTP_PROXY: la URL del servidor proxy que se utilizará para las solicitudes HTTP.
  • HTTPS_PROXY: la URL del servidor proxy que se utilizará para las solicitudes HTTPS.

Por ejemplo, configúralos en Linux o en macOS con los siguientes comandos:

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

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

Cuando Axios detecta estas variables de entorno, lee de ellas la configuración del proxy, incluidas las credenciales de autenticación. Establece el campo proxy como false para que Axios ignore esas variables de entorno. Ten en cuenta que también puedes definir un entorno NO_PROXY como una lista de dominios separados por comas que no se deben usar como proxy.

Ten en cuenta que el mismo mecanismo también funciona cuando usas proxies en cURL.

Implementación de proxies rotativos

Si utilizas el mismo servidor proxy muchas veces, el sitio de destino acabará bloqueando tu dirección IP. Para evitarlo, es esencial asegurarse de que cada solicitud que realices se origina en un servidor proxy diferente. Un método sencillo para lograrlo es el siguiente:

  1. Define una lista de objetos donde cada uno de ellos contenga la información para conectarse a un proxy diferente.
  2. Elige un objeto proxy al azar antes de cada solicitud.
  3. Configura el proxy seleccionado en Axios.

El enfoque anterior asume que tienes acceso a un grupo de servidores proxy fiables. Adquirir acceso a muchos servidores puede costarte mucho dinero en comisiones. Además, integrar esa lógica en tu código puede resultar engorroso y repetitivo.

Aquí es donde entra en juego Bright Data, ¡ofreciendo proxies rotativos que cambian automáticamente las direcciones IP por ti! Obtendrás acceso a los proxies que proporcionan una dirección IP nueva cada vez que te conectes. Estos servidores proxy son accesibles en 195 países, tienen un tiempo de actividad de red excepcional y garantizan una tasa de éxito del 99,9 %. ¡Prueba los proxies rotativos de Bright Data!

Conclusión

En este tutorial de proxies de Axios, aprendiste por qué adoptar proxies en Axios y cómo hacerlo. Ahora sabes cómo configurar un proxy HTTP/HTTPS/SOCKS en Axios. Como ves aquí, para esto solo hacen falta algunas líneas de código.

También has descubierto que no debes utilizar servicios de proxy gratuitos. Por lo tanto, solo queda elegir qué proveedor de proxy adoptar. Ahorra tiempo y energía y opta por la mejor opción del mercado: Bright Data.

Bright Data controla los mejores servidores proxy del mundo y trabaja para empresas de Fortune 500 y para más de 20 000 clientes. Su red mundial de proxies incluye:

En general, esta es una de las redes de proxies más grandes y fiables del mundo disponibles. Habla con uno de nuestros representantes de ventas y descubre cuál de los productos de Bright Data se adapta mejor a tus necesidades.