Cómo configurar un proxy en SuperAgent

Con esta guía paso a paso, aprenda cómo configurar un proxy en SuperAgent.
11 min read
How To Set a Proxy in Superagent

Esta guía de proxy SuperAgent cubrirá los siguientes temas:

  • Qué es SuperAgent y por qué necesita proxies.
  • Qué es la biblioteca superagent-proxy y por qué es necesaria.
  • Cómo configurar un proxy HTTP, HTTPS o SOCKS en SuperAgent.
  • Cómo tratar con la autenticación de proxy y la rotación de IP.

¿Qué es SuperAgent y por qué necesita un proxy?

SuperAgent es un cliente HTTP ligero y fácil de usar para aplicaciones JavaScript. Su flexibilidad lo convierte en una librería popular para realizar peticiones HTTP en aplicaciones frontend y Node.js. Ofrece muchas características, como cabeceras personalizadas, configuraciones y cookies.

¿Por qué quiere un proxy SuperAgent? Porque permite proteger su identidad online y alcanzar sus objetivos en anonimato. Al reenviar sus peticiones a través de un servidor proxy, puede ocultar su dirección IP, lo que hace más difícil que el servidor de destino le identifique y bloquee. Esta capa adicional de confidencialidad ayuda a evitar prohibiciones o restricciones de IP.

Tenga en cuenta que puede lograr el mismo resultado con Node Fetch, como se explica en nuestra guía de proxy node-fetch, y Axios, como se cubre en nuestro tutorial de proxy Axios.

¿Qué es superagent-proxy?

SuperAgent no soporta proxies de forma nativa. Teniendo en cuenta lo importante que es el soporte de proxy, la comunidad lo arregló con superagent-proxy. Este paquete npm amplía la clase Request de superagent con una función proxy(uri) para establecer un proxy HTTP, HTTPS o SOCKS. En otras palabras, superagent-proxy te permite hacer proxy de peticiones HTTP a través de un proxy especificado.

Entre bastidores, la biblioteca se nutre del proyecto Proxy Agents, que ofrece implementaciones http.Agent para establecer proxies en diferentes protocolos.

Establecer un Proxy en SuperAgent a través de superagent-proxy

En esta sección paso a paso, aprenderá a configurar un proxy HTTP, HTTPS o SOCKS en SuperAgent.

Requisitos previos

Supongamos que tiene un proyecto Node.js en marcha. Primero, añada los paquetes npm superagent y superagent-proxy a las dependencias de su proyecto con:

npm install superagent superagent-proxy

En su archivo de script Node.js, importe la función superagent y extiéndala con superagent-proxy:

const superagent = require("superagent");

// extend the Request class from SuperAgent

// with the proxy() method

require("superagent-proxy")(superagent);

O si es usuario de ESM:

import superagent from "superagent";

import superagentProxy from "superagent-proxy";

// extend the Request class from SuperAgent

// with the proxy() method

superagentProxy(superagent);

¡Perfecto! ¡Ya está listo para seguir la guía del proxy SuperAgent!

Proxies HTTP, HTTPS, SOCKS

Esta es la sintaxis URL de un proxy HTTP/HTTPS/SOCKS:

[<PROXY_PROTOCOL>://]<PROXY_HOST>:<PROXY_PORT>

En concreto, los parámetros son:

  • <PROXY_PROTOCOL>: “http” para proxies HTTP, “https” para proxies HTTPS, y “socks”, “socks4”, “socks5” para proxies en los diferentes protocolos SOCKS. Cuando se omite, suele ser por defecto “http”.
  • <PROXY_HOST>: la IP del servidor proxy o su dominio.
  • <PROXY_PORT>: el puerto en el que escucha el servidor proxy.

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

"http://207.2.120.19:88"

Puede utilizar un proxy en SuperAgent como se indica a continuación:

try {

    const proxyURL = "http://207.2.120.19:88";

    const response = await superagent

        .get("https://example.com")

        .proxy(proxyURL);

    // retrieve the JSON response from the request

    // and print it

    const jsonResponse = JSON.stringify(response.body);

    console.log(jsonResponse);

} catch (e) {

    console.error(e);

}

Or if you prefer a Promise-based approach:

const proxyURL = "http://207.2.120.19:88";

superagent

    .get("https://example.com")

    .proxy(proxyURL)

    .end((err, res) => {

        if (err) {

            console.log(err);

        } else {

            const jsonResponse = JSON.stringify(res.body);

            console.log(jsonResponse);

        }

    });

Como puede ver, todo lo que tiene que hacer es pasar la URL del proxy al método proxy() proporcionado por superagent-proxy. SuperAgent realizará ahora la petición a la URL pasada como parámetro a get() a través del servidor proxy HTTP especificado en proxyURL.

Comprobemos que el método proxy de SuperAgent anterior funciona en un ejemplo completo.

Ejemplo completo

Si no tiene la URL de un servidor proxy, puede obtener una en línea. Considere éste:

http://198.199.70.20:31028

Es un proxy HTTP, pero tenga en cuenta que el ejemplo que vas a ver también funciona con proxies HTTPS o SOCKS.

Para verificar que SuperAgent enruta las peticiones a través del proxy especificado, apuntaremos al endpoint /ip del proyecto HTTPBin. Esa API pública devuelve la IP de la petición entrante. Así, si todo funciona como se espera, la API HTTPBin debería responder con la IP del servidor proxy.

A continuación se muestra el fragmento de JavaScript completo:

const superagent = require("superagent");

require("superagent-proxy")(superagent);

async function makeProxyRequest() {

    try {

        const proxyURL = "http://198.199.70.20:31028";

        const response = await superagent

            .get("https://httpbin.io/ip")

            .proxy(proxyURL);

        const jsonResponse = JSON.stringify(response.body);

        console.log(jsonResponse);

    } catch (e) {

        console.error(e);

    }

}

makeProxyRequest();

Ejecute el script, y debería imprimir:

{ "origin": "198.199.70.20" }

¡Fantástico! Esa es la IP del servidor proxy, ¡lo que significa que el enfoque funciona como estaba previsto!

Tenga en cuenta que la redacción fue intencional. “Debería imprimir” y no “imprimirá” porque los proxies gratuitos tienen una vida tan corta que para cuando lea este artículo, el proxy seleccionado ya no funcionará.

Utilizar proxies gratuitos obtenidos en Internet está bien para explicarse, pero no se puede confiar en ellos en el mundo real. ¿Por qué? Porque los servicios proxy gratuitos son lentos, propensos a errores, poco fiables, consumen muchos datos y duran poco. Hazte la vida más fácil y evítalos por completo.

¿Cómo solucionar este problema? Con los proxies premium de Bright Data, el mejor proveedor de proxies del mercado. Cree una cuenta y pruebe gratis nuestros proxies fiables.

Proxy SuperAgent: Casos de uso avanzados

Ya conoce los conceptos básicos de la integración de proxy SuperAgent, pero ¿qué hay de las técnicas más complejas? Siga los capítulos siguientes y conviértase en un experto en proxy superagente.

¿Configuración global de proxies mediante variables de entorno?

SuperAgent no soporta configuraciones globales pero no olvide que superagent-proxy utiliza proxy-agent bajo el capó. Hay dos formas en las que el paquete proxy-agent determina qué proxy usar:

  1. Utiliza la URL pasada como parámetro.
  2. Lee las variables de entorno HTTP_PROXY y HTTPS_PROXY definidas en el módulo proxy-from-env.

Por lo tanto, puede configurar un proxy globalmente en SuperAgent estableciendo las siguientes variables de entorno:

  • HTTP_PROXY: La URL del servidor proxy a utilizar para peticiones HTTP.
  • HTTPS_PROXY: La URL del servidor proxy a utilizar para peticiones HTTPS.

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

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

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

A continuación, llame al método proxy() sin parámetros:

superagent

    .get("https://example.com")

    .proxy()

    // ...

¡Genial! SuperAgent utilizará los proxies especificados en las variables de entorno para cada petición.

Siga el enlace para explicarse, ya que el mismo mecanismo también funciona con proxies en cURL.

Autenticación de proxy en superagent-proxy

Los proveedores de proxy protegen sus servidores con autenticación. De esta forma, sólo los usuarios con un par de credenciales válidas podrán acceder a sus servidores proxy. Intentar conectarse a un proxy autenticado sin un nombre de usuario y contraseña fallará con un error HTTP 407 Proxy Authentication Required.

Esta es la sintaxis de la URL de un proxy autenticado:

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

Es igual que la URL de un proxy normal, pero además incluye un <USERNAME> y un <PASSWORD >.

Para entender mejor cómo funciona este mecanismo, veamos un ejemplo. Supongamos que la siguiente cadena es la URL para conectarse a un proxy autenticado:

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

Los campos de la URL serían:

  • <PROTOCOL>: http
  • <USERNAME>: admin
  • <PASSWORD>: pK5io86NWp56l9sju7
  • <HOST>: 20.210.113.32
  • <PORT>: 8080

Teniendo esto en cuenta, hay dos formas de tratar la autenticación proxy en SuperAgent:

  1. Especificar las credenciales directamente en la URL del proxy:
const proxyURL = "http://admin:[email protected]:8080"

superagent

    .get("https://example.com")

    .proxy(proxyURL)

    // ...
  1. Establecer los atributos de nombre de usuario y contraseña en un objeto tipo url-parse:
superagent

    .get("https://httpbin.io/ip")

    .proxy({

         protocol: "http",

         host: "20.210.113.322",

         port: "8080",

         username: "admin",

         password: "pK5io86NWp56l9sju7"

     })

¡Genial! La autenticación proxy en SuperAgent ya no es un secreto.

Rotación de proxies en SuperAgent

Si confía en el mismo servidor proxy una y otra vez, existe el riesgo de que el sitio de destino bloquee su dirección IP. Para evitar este problema, es crucial asegurarse de que cada petición se origina en un servidor proxy distinto. A continuación se explica cómo hacerlo:

  1. Rellene una lista de URL proxy.
  2. Elija aleatoriamente una URL proxy antes de cada solicitud.
  3. Configure la URL proxy elegida en SuperAgent.

Sin embargo, gestionar esta lógica antes de cada petición HTTP es tedioso. Además, requiere acceso a un grupo de servidores proxy fiables, lo que tiene un coste. Por suerte, Bright Data ofrece una solución. Sus proxies rotativos cambian automáticamente las direcciones IP de salida en cada solicitud. Estos proxies aseguran direcciones IP nuevas con cada conexión, están disponibles en 195 países, cuentan con un tiempo de actividad de la red excepcional y garantizan una tasa de éxito del 99.9%.

Siga el siguiente capítulo para explicarse cómo empezar a utilizar los proxies rotativos de Bright Data en SuperAgent.

Integración de SuperAgent con un proxy de Bright Data

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

En general, esta es una de las redes proxy más grandes y fiables disponibles. Veamos ahora cómo integrar los proxies de Bright Data en SuperAgent.

Si ya tiene una cuenta, inicie sesión en Bright Data. Si no, cree una cuenta de forma gratuita. Accederá al siguiente panel de usuario:

Haga clic en el botón “Ver productos proxy”:

Accederá a la página “Proxies & Scraping Infrastructure”:

Desplácese hacia abajo, busque la ficha “Proxies de centros de datos” y haga clic en el botón “Empezar”:

Accederá al panel de configuración del proxy del centro de datos. Dé un nombre único a su solución y configure el servicio proxy en función de sus necesidades. Si tiene alguna duda sobre cómo configurar el proxy, no dude en ponerse en contacto con el soporte 24/7. A continuación, pulse “Añadir”.

Finalmente, obtendrá acceso al nombre de host, puerto, nombre de usuario y contraseña de tu proxy como se indica a continuación:

Considere que el campo “Host” ya incluye el puerto.

Eso es todo lo que necesita para construir la URL del proxy y utilizarla en SuperAgent. Junte toda la información, y construya una URL con la siguiente sintaxis:

<Username>:<Password>@<Host>

Por ejemplo, en este caso sería:

brd-customer-hl_YYYYYYY-zone-datacenter_proxy1:@ZZZZZZZZZZbrd.superproxy.io:XXXX

Su fragmento de proxy de SuperAgent para la integración de Bright Data tendrá el siguiente aspecto:


const superagent = require("superagent");
require("superagent-proxy")(superagent);

async function makeBrightDataProxyRequest() {
    try {
        const proxyURL = "brd-customer-hl_YYYYYYY-zone-datacenter_proxy1:@ZZZZZZZZZZbrd.superproxy.io:XXXX";
        const response = await superagent
            .get("https://lumtest.com/myip.json")
            .proxy(proxyURL);

        const jsonResponse = JSON.stringify(response.body);
        console.log(jsonResponse);
    } catch (e) {
        console.error(e);
    }
}

makeBrightDataProxyRequest();

Conclusión

En este tutorial de proxy SuperAgent, hemos demostrado por qué se debería usar proxies y cómo hacerlo con superagent-proxy. Ahora ya sabe cómo configurar un proxy HTTP, HTTPS o SOCKS en SuperAgent, la potente librería cliente HTTP de JavaScript. Como se demuestra aquí, ¡sólo se necesitan un par de líneas de código!

Gracias a esta guía, también ha comprendido por qué nunca debería utilizar servicios proxy gratuitos y, en su lugar, preferir servidores proxy fiables del mejor proveedor del mercado, Bright Data. El procedimiento de integración en SuperAgent es el mismo, ¡pero las ventajas de los proxies premium son infinitas!