Как установить прокси в SuperAgent

Узнайте, как установить прокси в SuperAget из этого пошагового руководства.
3 min read
How To Set a Proxy in Superagent

В этом руководстве по прокси SuperAgent будут рассмотрены следующие темы:

  • Что такое SuperAgent и зачем нужны прокси.
  • Что такое библиотека superagent-proxy и почему она необходима.
  • Как установить HTTP, HTTPS или SOCKS прокси в SuperAgent.
  • Как работать с аутентификацией прокси и ротацией IP-адресов.

Что такое SuperAgent и зачем нужен прокси?

SuperAgent – это легкий и простой в использовании HTTP-клиент для JavaScript-приложений. Благодаря своей гибкости он является популярной библиотекой для выполнения HTTP-запросов во фронтенде и Node.js-приложениях. Он предлагает множество функций, таких как пользовательские заголовки, конфигурации и cookies.

Почему вам нужен прокси SuperAgent? Потому что он позволяет вам защитить свою личность в Интернете и достичь своих целей анонимно. Передавая свои запросы через прокси сервер, вы можете скрыть свой IP-адрес, что затрудняет идентификацию и блокировку целевого сервера. Этот дополнительный уровень конфиденциальности помогает избежать IP-запретов или ограничений.

Обратите внимание, что вы можете добиться того же результата с помощью Node Fetch, как описано в нашем руководстве по прокси node-fetch, и Axios, как описано в нашем руководстве по прокси Axios.

Что такое superagent-proxy?

SuperAgent не поддерживает прокси нативно. Учитывая, насколько важна поддержка прокси, сообщество исправило это с помощью superagent-proxy. Этот пакет npm расширяет класс superagent Request функцией proxy(uri) для установки HTTP, HTTPS или SOCKS прокси. Другими словами, superagent-proxy позволяет проксировать HTTP-запросы через указанный прокси.

За кулисами библиотека опирается на проект Proxy Agents, который предлагает реализацию http.Agent для установки прокси в различных протоколах.

Настройка прокси в SuperAgent с помощью superagent-proxy

В этом пошаговом разделе вы узнаете, как установить HTTP, HTTPS или SOCKS-прокси в SuperAgent.

Предварительные условия

Предположим, у вас есть проект Node.js. Сначала добавьте пакеты superagent и superagent-proxy npm в зависимости вашего проекта:

npm install superagent superagent-proxy

В файле сценария Node.js импортируйте функцию superagent и расширьте ее с помощью superagent-proxy:

const superagent = require("superagent");

// extend the Request class from SuperAgent

// with the proxy() method

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

Или если вы являетесь пользователем ESM:

import superagent from "superagent";

import superagentProxy from "superagent-proxy";

// extend the Request class from SuperAgent

// with the proxy() method

superagentProxy(superagent);

Отлично! Вы готовы следовать руководству по прокси SuperAgent!

HTTP, HTTPS, SOCKS прокси

Это синтаксис URL-адреса HTTP/HTTPS/SOCKS-прокси:

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

В частности, параметры:

  • <PROXY_PROTOCOL>: “http” для HTTP-прокси, “https” для HTTPS-прокси, и “socks”, “socks4”, “socks5” для прокси в различных протоколах SOCKS. Если этот параметр опущен, то по умолчанию обычно используется значение “http”.
  • <PROXY_HOST>: IP-адрес прокси-сервера или его домен.
  • <PROXY_PORT>: Порт, к которому прислушивается прокси-сервер.

Например, предположим, что это URL вашего HTTP-прокси:

"http://207.2.120.19:88"

Вы можете использовать прокси в SuperAgent следующим образом:

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

        }

    });

Как видите, все, что вам нужно сделать, это передать URL прокси-сервера в метод proxy(), предоставляемый superagent-proxy. Теперь SuperAgent выполнит запрос к URL, переданному в качестве параметра в get(), через HTTP-прокси-сервер, указанный в proxyURL.

Давайте проверим, как работает описанный выше подход к прокси SuperAgent на конкретном примере!

Исчерпывающий пример

Если у вас нет URL-адреса прокси-сервера, вы можете получить его в Интернете. Рассмотрим этот вариант:

http://198.199.70.20:31028

Это HTTP-прокси, но имейте в виду, что пример, который вы сейчас увидите, также работает с HTTPS или прокси SOCKS.

Чтобы проверить, что SuperAgent направляет запросы через указанный прокси, мы обратимся к конечной точке /ip из проекта HTTPBin. Этот публичный API возвращает IP входящего запроса. Таким образом, если все работает как надо, HTTPBin API должен ответить IP прокси-сервера.

Вот как выглядит полный фрагмент 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();

Выполните сценарий, и он должен напечататься:

{ "origin": "198.199.70.20" }

Фантастика! Это IP прокси-сервера, а значит, подход работает как надо!

Обратите внимание, что формулировка была намеренной. “Должен напечататься”, а не “напечатается”, потому что срок жизни бесплатных прокси настолько короток, что к тому времени, когда вы будете читать эту статью, выбранный прокси уже не будет работать.

Использование бесплатных прокси, найденных в Интернете, вполне подходит для учебных целей, но в реальных условиях доверять им нельзя. Почему? Потому что бесплатные прокси-сервисы медленные, подвержены ошибкам, ненадежные, требовательные к данным и недолговечные. Сделайте свою жизнь проще и избегайте их!

Как решить эту проблему? С помощью премиальных прокси, предоставляемых Bright Data, лучшим прокси-провайдером на рынке. Создайте аккаунт и попробуйте наши надежные прокси бесплатно!

SuperAgent Proxy: Расширенные примеры использования

Вы знаете основы интеграции прокси SuperAgent, но что делать с более сложными техниками? Следуйте приведенным ниже главам и станьте экспертом в области superagent-proxy.

Настройка прокси глобально через переменные среды?

SuperAgent не поддерживает глобальные конфигурации, но не забывайте, что superagent-proxy использует proxy-agent непосредственно под оболочкой. Пакет proxy-agent определяет, какой прокси использовать, двумя способами:

  1. Он использует URL, переданный в качестве параметра.
  2. Он считывает переменные окружения HTTP_PROXY и HTTPS_PROXY, как определено в модуле proxy-from-env.

Поэтому вы можете настроить прокси глобально в SuperAgent, задав следующие переменные окружения:

  • HTTP_PROXY: URL-адрес прокси-сервера, который будет использоваться для HTTP-запросов.
  • HTTPS_PROXY: URL-адрес прокси-сервера для HTTPS-запросов.

Например, в Linux или macOS их можно задать следующими командами:

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

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

Затем вызовите метод proxy() без параметров:

superagent

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

    .proxy()

    // ...

Отлично! SuperAgent будет использовать прокси, указанные в переменных окружения, для каждого запроса.

Перейдите по ссылке, чтобы узнать больше, поскольку этот же механизм работает и с прокси в cURL.

Аутентификация через прокси в superagent-proxy

Прокси-провайдеры защищают свои серверы с помощью аутентификации. Таким образом, только пользователи с действительной парой учетных данных смогут получить доступ к их прокси-серверам. Попытка подключиться к аутентифицированному прокси без имени пользователя и пароля приведет к ошибке 407 Proxy Authentication Required HTTP.

Это синтаксис URL-адреса аутентифицированного прокси:

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

Он похож на URL-адрес обычного прокси, но в нем также присутствуют <USERNAME> и <PASSWORD>.

Чтобы лучше понять, как работает этот механизм, рассмотрим пример. Предположим, что строка ниже – это URL для подключения к аутентифицированному прокси:

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

Поля URL будут такими:

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

Учитывая это, есть два способа работы с аутентификацией через прокси в SuperAgent:

  1. Указывать учетные данные непосредственно в URL прокси:
const proxyURL = "http://admin:[email protected]:8080"

superagent

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

    .proxy(proxyURL)

    // ...
  1. Задать атрибуты имени пользователя и пароля в url-parse-подобном объекте:
superagent

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

    .proxy({

         protocol: "http",

         host: "20.210.113.322",

         port: "8080",

         username: "admin",

         password: "pK5io86NWp56l9sju7"

     })

Потрясающе! Аутентификация через прокси в SuperAgent больше не является секретом.

Ротационные прокси в SuperAgent

Если вы будете использовать один и тот же прокси-сервер раз за разом, есть риск, что целевой сайт заблокирует его IP-адрес. Чтобы избежать этой проблемы, важно убедиться, что каждый запрос поступает с отдельного прокси-сервера. Вот как это можно сделать:

  1. Составьте список URL-адресов прокси.
  2. Случайно выберите URL прокси перед каждым запросом.
  3. Настройте выбранный URL прокси в SuperAgent.

Однако управлять этой логикой перед каждым HTTP-запросом очень утомительно. Кроме того, для этого требуется доступ к пулу надежных прокси-серверов, что связано с определенными затратами. К счастью, Bright Data предлагает решение! Ротационные прокси компании автоматически меняют IP-адреса выхода при каждом запросе! Эти прокси обеспечивают свежие IP-адреса при каждом подключении, доступны в 195 странах, могут обеспечить высокую работоспособность сети и гарантируют успех на уровне 99,9 %.

В следующей главе вы узнаете, как начать работу с ротационными прокси Bright Data в SuperAgent.

Интеграция SuperAgent с прокси Bright Data

Bright Data управляет лучшими прокси-серверами в мире, обслуживая компании из списка Fortune 500 и более 20,000 клиентов. Ее всемирная сеть прокси-серверов включает в себя:

В целом, это одна из самых крупных и надежных прокси-сетей. Теперь давайте посмотрим, как интегрировать прокси Bright Data в SuperAgent.

Если у вас уже есть учетная запись, войдите в Bright Data. В обратном случае создайте учетную запись бесплатно. Вы получите доступ к следующей пользовательской панели:

Нажмите кнопку “Просмотр прокси-продуктов”:

Вы получите доступ к странице “Прокси и инфраструктура скрапинга”:

Прокрутите страницу вниз, найдите карточку “Прокси для дата-центров” и нажмите на кнопку “Начать”:

Вы попадете на панель настройки прокси-сервера центра обработки данных. Дайте своему решению уникальное имя и настройте прокси-сервис в соответствии с вашими потребностями. Если у вас возникнут сомнения по поводу настройки прокси, обращайтесь в круглосуточную службу поддержки. Затем нажмите “Добавить”.

Наконец, вы получите доступ к имени хоста, порту, имени пользователя и паролю вашего прокси, как показано ниже:

Обратите внимание, что в поле “Host” уже указан порт.

Это все, что вам нужно для создания URL прокси и его использования в SuperAgent. Соберите всю информацию вместе и создайте URL со следующим синтаксисом:

<Username>:<Password>@<Host>

Например, в данном случае это будет:

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

Ваш фрагмент прокси SuperAgent для интеграции с Bright Data будет выглядеть следующим образом:


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

Заключение

В этом руководстве по прокси SuperAgent вы узнали, почему нужно использовать прокси и как это сделать с помощью superagent-proxy. Теперь вы знаете, как настроить прокси HTTP, HTTPS или SOCKS в SuperAgent, мощной клиентской библиотеке HTTP на JavaScript. Как было показано здесь, это занимает всего пару строк кода!

Благодаря этому руководству вы также поняли, почему не стоит пользоваться бесплатными прокси-сервисами, а предпочесть надежные прокси-серверы от лучшего провайдера на рынке – Bright Data. Процедура интеграции в SuperAgent такая же, но преимущества премиальных прокси безграничны!

Вас также может заинтересовать

How Tos

Как использовать прокси-серверы в Node.js

Скрейпинг веб-страниц как метод сбора данных часто затрудняется различными препятствиями, включая запреты на использование IP-адресов, геоблокировку и вопросы конфиденциальности. К счастью, прокси-серверы могут помочь вам справиться с этими проблемами. Они служат посредниками между вашим компьютером и Интернетом, обрабатывая запросы с использованием собственных IP-адресов. Эта функция не только помогает обойти ограничения и запреты, связанные с интеллектуальной […]
4 min read
How to Set Proxy in AIOHTTP
How Tos

Как настроить прокси-сервер в AIOHTTP

Узнайте из этого пошагового руководства, как настроить прокси-сервер в AIOHTTP
4 min read
Invoke-Webrequest With a Proxy
How Tos

Как использовать PowerShell Invoke-WebRequest с прокси-сервером

Командлет Invoke-WebRequest в PowerShell — удобный инструмент для отправки HTTP-запросов на веб-сайты. Если вы уже пользуетесь прокси-сервисами Bright Data, вы можете использовать этот командлет с прокси-сервером, указав параметр -Proxy, а затем сведения о прокси-сервере.
4 min read