Como configurar um proxy no SuperAgent

Aprenda a configurar um proxy no SuperAgent neste tutorial passo a passo
11 min read
How To Set a Proxy in Superagent

Este tutorial de proxies no SuperAgent abordará os seguintes tópicos:

  • O que é o SuperAgent e por que você precisa de proxies.
  • O que é a biblioteca superagent-proxy e por que ela é necessária. 
  • Como configurar um proxy HTTP, HTTPS ou SOCKS no SuperAgent.
  • Como lidar com autenticação de proxy e rotação de IP.

O que é o SuperAgent e por que você precisa de um proxy?

SuperAgent é um cliente HTTP leve e fácil de usar para aplicativos em JavaScript. Sua flexibilidade a torna uma biblioteca popular para fazer solicitações HTTP em aplicativos de front-end e Node.js. Ela oferece muitos recursos, como cabeçalhos personalizados, configurações e cookies.

Por que você quer um proxy de SuperAgent? Porque ele lhe permite proteger sua identidade on-line e alcançar seus objetivos anonimamente. Ao encaminhar suas solicitações por meio de um servidor proxy, você pode ocultar seu endereço IP, tornando mais difícil para o servidor visado identificá-lo e bloqueá-lo. Essa camada adicional de confidencialidade ajuda a evitar proibições ou restrições de IP. 

Observe que você pode obter o mesmo resultado com o Node Fetch, conforme explicado em nosso tutorial de proxy da node-fetch , e da Axios, conforme abordado em nosso tutorial de proxy Axios.

O que é o superagent-proxy?

O SuperAgent não oferece suporte nativo a proxies. Considerando a importância do suporte a proxies, a comunidade corrigiu isso com o superagent-proxy. Esse pacote npm estende a classe superagent Request com uma função proxy (uri) para configurar um proxy HTTP, HTTPS ou SOCKS. Em outras palavras, o superagent-proxy permite fazer proxy de requisições HTTP por meio de um proxy especificado.

Nos bastidores, a biblioteca é alimentada pelo projeto Proxy Agents, que oferece implementações http.Agent para configurar proxies em diferentes protocolos.

Como configurar um proxy no SuperAgent por meio do superagent-proxy

No passo a passo desta seção, você aprenderá como configurar um proxy HTTP, HTTPS ou SOCKS no SuperAgent.

Pré-requisitos

Suponha que você tenha um projeto Node.js implementado. Primeiro, adicione os pacotes npm superagent e superagent-proxy às dependências do seu projeto com:

npm install superagent superagent-proxy

No arquivo de seu script Node.js, importe a função superagent e estenda-a com superagent-proxy:

const superagent = require("superagent");

// extend the Request class from SuperAgent

// with the proxy() method

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

Ou, se você for usuário de ESM:

import superagent from "superagent";

import superagentProxy from "superagent-proxy";

// extend the Request class from SuperAgent

// with the proxy() method

superagentProxy(superagent);

Perfeito! Você está pronto para seguir o tutorial de proxy do SuperAgent!

Proxies HTTP, HTTPS e SOCKS

Esta é a sintaxe do URL de um proxy HTTP/HTTPS/SOCKS:

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

Especificamente, os parâmetros são:

  • <PROXY_PROTOCOL>:  “http” para proxies HTTP, “https” para proxies HTTPS e ”socks,” “socks4,” “socks5” para proxies nos diferentes protocolos SOCKS. Quando omitido, o padrão geralmente é “http”.
  • <PROXY_HOST>: O IP do servidor proxy ou de seu domínio.
  • <PROXY_PORT>: A porta que o servidor proxy escuta.

Por exemplo, suponha que este seja o URL do seu proxy HTTP:

"http://207.2.120.19:88"

Você pode usar um proxy no SuperAgent conforme abaixo:

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 você pode ver, só o que você precisa fazer é passar o URL do proxy para o método proxy() fornecido pela superagent-proxy. O SuperAgent agora fará a requisição ao URL que foi passado como parâmetro para get() por meio do servidor proxy HTTP especificado em proxyURL.

Vamos verificar se a abordagem de proxy do SuperAgent acima funciona em um exemplo completo! 

Exemplo completo

Se você não tiver o URL de um servidor proxy, poderá obter um on-line. Considere este:

http://198.199.70.20:31028

Esse é um proxy HTTP , mas lembre-se de que o exemplo que você verá também funciona com proxies HTTPS ou SOCKS

Para verificar se o SuperAgent roteia as requisições por meio do proxy especificado, vamos visar o endpoint /ip do projeto HTTPBin. Essa API pública retorna o IP da solicitação recebida. Assim, se tudo funcionar conforme o esperado, a API HTTPBin deve responder com o IP do servidor proxy.

Aqui está a aparência do trecho de código completo em JavaScript:

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

Execute o script, e ele deverá registrar:

{ "origin": "198.199.70.20" }

Fantástico! Esse é o IP do servidor proxy, o que significa que a abordagem funciona conforme o esperado! 

Note que a formulação do texto foi intencional. “Deverá registrar” e não “será registrada” porque proxies gratuitos têm uma vida útil tão curta que, na data em que você ler este artigo, o proxy selecionado não funcionará mais.

Usar proxies gratuitos recuperados on-line é adequado para fins de aprendizagem, mas você não pode confiar neles em um cenário do mundo real. Por quê? Porque serviços de proxy gratuitos são lentos, são propensos a erros, não são confiáveis, consomem muitos dados e têm vida curta. Facilite sua vida e evite-os completamente!

Como resolver esse problema? Use os proxies premium fornecidos pela Bright Data, o melhor provedor de proxies do mercado. Abra uma conta e experimente nossos proxies confiáveis ​​gratuitamente!

Proxy SuperAgent: casos de uso avançados

Você conhece os fundamentos da integração de proxy do SuperAgent, mas e quanto as técnicas mais complexas? Siga os capítulos abaixo e torne-se um especialista no proxy superagent.

Vai configurar proxies globalmente usando variáveis ​​de ambiente?

O SuperAgent não oferece suporte a configurações globais, mas não se esqueça de que o superagent-proxy usa o proxy-agent em sua estrutura. Há duas maneiras pelas quais o pacote proxy-agent determina qual proxy usar:

  1. Ele usa o URL informado como parâmetro.
  2. Ele lê as variáveis de ambiente HTTP_PROXY e HTTPS_PROXY conforme definido no módulo proxy-from-env

Portanto, é possível configurar um proxy globalmente no SuperAgent definindo os envs abaixo:

  • HTTP_PROXY: o URL do servidor proxy a ser usado para requisições HTTP.
  • HTTPS_PROXY: o URL do servidor proxy a ser usado para requisições HTTPS.

Por exemplo, configure-os no Linux ou macOS com os seguintes comandos:

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

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

Em seguida, chame o método proxy() sem parâmetros:

superagent

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

    .proxy()

    // ...

Ótimo! O SuperAgent usará os proxies especificados nas variáveis de ambiente para cada requisição.

Siga o link para saber mais, pois o mesmo mecanismo também funciona com proxies em cURL.

Autenticação de proxy no superagent-proxy

Provedores de proxy protegem seus servidores com autenticação. Dessa forma, somente usuários com um par de credenciais válidas poderão acessar seus servidores proxy. Tentar se conectar a um proxy autenticado sem nome de usuário e senha resultará no erro HTTP 407 Autenticação de proxy obrigatória.

 Aqui está a sintaxe do URL de um proxy autenticado:

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

É como o URL de um proxy comum, mas também envolve e uma >.

Para entender melhor como esse mecanismo funciona, considere um exemplo. Suponha que a string abaixo seja o URL para conectar-se a um proxy autenticado:

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

Os campos do URL seriam: 

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

Diante disso, existem duas maneiras de lidar com a autenticação de proxy no SuperAgent:

  1. Especificar as credenciais diretamente no URL do proxy:
const proxyURL = "http://admin:[email protected]:8080"

superagent

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

    .proxy(proxyURL)

    // ...
  1. Definir os atributos de nome de usuário e senha em um objeto semelhante ao url-parse:
superagent

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

    .proxy({

         protocol: "http",

         host: "20.210.113.322",

         port: "8080",

         username: "admin",

         password: "pK5io86NWp56l9sju7"

     })

Formidável! A autenticação proxy do SuperAgent não é mais um segredo.

Rotação de proxies no SuperAgent

Se você usa o mesmo servidor proxy repetidamente, existe o risco de o site de destino bloquear seu endereço IP. Para evitar esse problema, é crucial garantir que cada requisição seja originada de um servidor proxy distinto. Veja como você pode fazer isso:

  1. Preencha uma lista de URLs de proxy.
  2. Escolha aleatoriamente um URL de proxy antes de cada requisição.
  3. Configure o URL de proxy escolhido no SuperAgent.

Contudo, gerenciar essa lógica antes de cada requisição HTTP é entediante. Além disso, isso requer acesso a um conjunto de servidores proxy confiáveis, o que não é gratuito. Felizmente, a Bright Data oferece uma solução! Seus proxies rotativos alteram automaticamente os endereços IP de saída a cada requisição! Esses proxies garantem novos endereços IP em cada conexão, estão disponíveis em 195 países, apresentam tempo de atividade de rede (uptime) excepcional e garantem uma taxa de sucesso de 99,9%.

Siga para o próximo capítulo para aprender como começar a usar os proxies rotativos da Bright Data no SuperAgent.

Como integrar o SuperAgent com um Proxy da Bright Data

A Bright Data controla os melhores servidores proxy do mundo, atendendo a empresas listadas na Fortune 500 e a mais de 20.000 clientes. Sua rede mundial de proxy envolve:

Ao todo, essa é uma das maiores e mais confiáveis redes de proxies do mundo! Vejamos agora como integrar os proxies da Bright Data no SuperAgent.

Se você já tem uma conta, faça login na Bright Data. Caso contrário, crie uma conta gratuitamente. Você terá acesso ao seguinte painel de usuário:

Clique no botão “Exibir produtos de proxy”:

Você terá acesso à página “Infraestrutura de proxies e raspagem” abaixo:

Role para baixo, encontre o cartão “Proxies de datacenter” e clique no botão “Começar”:

Você acessará o painel de configuração do proxy do datacenter. Nomeie sua solução com um nome exclusivo e configure o serviço de proxy conforme suas necessidades. Se você tiver alguma dúvida sobre como configurar o proxy, sinta-se à vontade para entrar em contato com o suporte 24 horas por dia, 7 dias por semana. Em seguida, pressione “Adicionar”. 

Finalmente, você terá acesso ao nome de host, porta, nome de usuário e senha do seu proxy conforme abaixo:

Observe que o campo “Host” já inclui a porta.

Isso é tudo o que você precisa para criar o URL do proxy e usá-lo no SuperAgent. Junte todas as informações e crie um URL com a seguinte sintaxe:

<Username>:<Password>@<Host>

Por exemplo, nesse caso, seria:

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

Seu trecho de código de proxy do SuperAgent para integração com a Bright Data terá a seguinte aparência:


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

Conclusão

Neste tutorial de proxy do SuperAgent, você viu por que deveria usar proxies e como fazer isso com o superagent-proxy. Agora você sabe configurar um proxy HTTP, HTTPS ou SOCKS no SuperAgent, a poderosa biblioteca cliente JavaScript HTTP. Como provado aqui, isso requer apenas algumas linhas de código!

Graças a este tutorial, você também entendeu por que nunca deve usar serviços de proxy gratuitos e, em vez disso, preferir servidores proxy confiáveis da Bright Data, o melhor provedor do mercado. O procedimento de integração no SuperAgent é o mesmo, mas os benefícios de um proxy premium são inúmeros!