Как установить прокси в Axios: Подробное руководство

Узнайте, как настроить прокси в Axios, и ознакомьтесь с прокси Bright Data, совместимыми с Axios.
3 min read
How To Set a Proxy in Axios

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

  • Почему вы должны использовать прокси в Axios.
  • Как установить HTTP, HTTPS или SOCKS прокси с помощью Axios.
  • Как работать с аутентификацией и ротацией прокси.

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

Axios – один из самых распространенных HTTP-клиентов в экосистеме JavaScript. Он предлагает Promise-based, простой в использовании, интуитивно понятный API для выполнения HTTP-запросов и работы с пользовательскими заголовками, конфигурациями и cookies.

Зачем вам нужен прокси в Axios? Все просто! Направляя запросы через прокси, вы можете замаскировать свой IP-адрес, чтобы целевому серверу было сложнее вас идентифицировать и заблокировать. Этот дополнительный уровень конфиденциальности помогает сохранить целостность вашего приложения и избежать IP-запретов или ограничений. Вы можете достичь того же результата с помощью Fetch, как описано в нашем руководстве по прокси node-fetch.

Использование прокси в Axios

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

Пререквизиты

Во-первых, вам нужно убедиться, что пакет axios npm установлен. Добавьте его в зависимости вашего проекта с помощью:

npm install axios 

В Node.js Axios нативно поддерживает HTTP и HTTPS прокси через конфигурацию прокси. Так что если вы хотите использовать HTTP/HTTPS-прокси с Axios в Node.js-приложении, вы готовы к работе!

Если вы хотите использовать прокси не по протоколу HTTP/S, то вам следует обратиться к проекту Proxy Agents. Он предоставляет реализации http.Agent для интеграции Axios с прокси в различных протоколах. В деталях, различные библиотеки npm, предлагаемые проектом, классифицируются по протоколам:

Потрясающе! Вы готовы к установке прокси в Axios!

Прокси HTTP/HTTPS

Вот как должен выглядеть URL вашего прокси HTTP/HTTPS:

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

будет “http” для HTTP-прокси и “https” для HTTPS-прокси. – это, как правило, сырой IP, а – это порт, к которому прислушивается прокси-сервер.

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

"http://47.88.62.42:80"

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

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "48.88.62.42",

        port: "80"

    }

})

Как видите, все сводится к тому, чтобы разделить URL прокси на две части и правильно указать их в конфигурации прокси. Теперь Axios будет выполнять запрос к URL, переданному в качестве параметра, через указанный HTTP-прокси-сервер.

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

Получите URL-адрес HTTP- или HTTPS-прокси-сервера бесплатно в Интернете. Например, посмотрите на этот

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

Полный URL прокси-сервера будет “http://52.117.157.155:8002″.

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

Фрагмент сценария Node.js будет выглядеть так:

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

Выполните скрипт, и он должен записать в журнал:

{ "origin": "52.117.157.155" }

Это тот же IP, что и у прокси-сервера, что означает, что прокси-сервер работает, как и ожидалось, и ваш IP в безопасности!

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

Предупреждение: Бесплатные прокси-сервисы ненадежны, медленны, допускают ошибки, жадны до данных и недолговечны. Избегайте их!

Решение? Премиальные прокси от Bright Data, лучшего провайдера на рынке. Подпишитесь и попробуйте наши надежные прокси бесплатно.

Прокси SOCKS

Если вы попытаетесь задать строку “socks” в поле протокола объекта proxy config, вы получите следующую ошибку:

AssertionError [ERR_ASSERTION]: protocol mismatch

  // ...

 {

  generatedMessage: false,

  code: 'ERR_ASSERTION',

  actual: 'dada:',

  expected: 'http:',

  operator: '=='

}

Это происходит потому, что Axios не поддерживает прокси SOCKS. Таким образом, для достижения желаемого результата требуется дополнительная зависимость.

Добавьте библиотеку socks-proxy-agent npm в зависимости вашего проекта с помощью следующей команды:

npm install socks-proxy-agent

Этот пакет позволяет подключаться к прокси сервер SOCKS при выполнении HTTP или HTTPS запросов в Axios.

Затем импортируйте реализацию агента прокси сервера SOCKS из библиотеки:

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

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

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

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

"socks://183.88.74.73:4153"

Обратите внимание, что протокол прокси может быть одним из значений: “socks”, “socks5”, “socks4”.

Сохраните его в переменной и передайте в конструктор SocksProxyAgent:

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

const proxyAgent = new SocksProxyAgent(proxyURL)

SocksProxyAgent() инициализирует экземпляр http.Agent для выполнения запросов HTTP/HTTPS через прокси URL.

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

axios.get(targetURL, { 

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

httpAgent и httpsAgent определяют пользовательский агент, который будет использоваться при выполнении запросов HTTP и HTTPS, соответственно. Другими словами, запрос HTTP или HTTPS, выполняемый Axios, будет проходить через указанный прокси SOCKS. Аналогичным образом, вы можете использовать пакет https-proxy-agent в качестве альтернативного способа установки HTTP/HTTPS прокси в Axios.

Соберите все вместе:

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

Перейдите по ссылке, чтобы посмотреть другие примеры настройки прокси SOCKS в Axios.

Прокси Axios: Расширенные сценарии использования

Теперь, когда вы знаете основы интеграции прокси Axios, вы готовы перейти к более сложным техникам.

Глобальная настройка прокси

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

const axiosInstance = axios.create({

    proxy: { 

        protocol: "<PROXY_PROTOCOL>", 

        host: "<PROXY_HOST>",

        port: "<PROXY_PORT>" 

    },

    // other configs...

})

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

// proxy Agent definition ...

const axiosInstance = axios.create({

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

Все запросы, сделанные с помощью axiosInstance, теперь будут автоматически проходить через указанный прокси.

Работа с аутентификацией через прокси в Axios

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

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

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

Например, реальный URL для подключения к аутентифицированному прокси может быть таким:

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

В этом случае поле URL прокси будет таким:

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

Для работы с аутентификацией через прокси в Axios вам достаточно указать имя пользователя и пароль в поле auth прокси:

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "156.127.0.192",

        port: "8381",

        auth: {

            username: "admin",

            password: "lK4w90MEe45YIkOpk"

        }

    }

})

Отлично! Это так же просто!

Если вы используете Proxy Agents, у вас есть два способа справиться с аутентификацией:

  1. Добавить учетные данные непосредственно в URL прокси:
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
  1. Установка параметров имени пользователя и пароля в объекте URL:
const proxyOpts = new URL("http://156.127.0.192:8391")

proxyOpts.username = "admin"

proxyOpts.password = "lK4w90MEe45YIkOpk"

const proxyAgent = new SocksProxyAgent(proxyOpts)

Те же подходы работают и с HttpsProxyAgent.

Настройка прокси с помощью переменных окружения

Другим способом глобальной настройки прокси в Axios является установка следующих переменных окружения:

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

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

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

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

Когда Axios обнаруживает эти переменные окружения, он считывает из них настройки прокси, включая учетные данные для аутентификации. Установите для поля proxy значение false, чтобы Axios игнорировал эти переменные окружения. Помните, что вы также можете определить NO_PROXY env как список доменов, разделенных запятыми, которые не должны проксироваться.

Обратите внимание, что этот же механизм работает и при использовании прокси в cURL.

Реализация ротационных прокси

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

  1. Определите список объектов, каждый из которых содержит информацию для подключения к разным прокси.
  2. Случайно выбирайте объект прокси перед каждым запросом.
  3. Настройте выбранный прокси в Axios.

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

Именно здесь на помощь приходит Bright Data, предлагая ротационные прокси, которые автоматически меняют для вас IP-адреса! Вы получите доступ к прокси, которые предоставляют свежий IP-адрес каждый раз, когда вы подключаетесь. Эти прокси-серверы доступны в 195 странах, имеют исключительное время безотказной работы сети и гарантируют 99,9% успеха. Попробуйте ротационные прокси Bright Data!

Заключение

В этом руководстве по прокси в Axios вы узнали, зачем нужны прокси в Axios и как их использовать. Теперь вы знаете, как настроить прокси HTTP/HTTPS/SOCKS в Axios. Как видите, это занимает всего несколько строк кода!

Вы также поняли, что не стоит пользоваться бесплатными прокси-сервисами. Остается только выбрать, какого прокси-провайдера выбрать. Экономьте время и силы и выбирайте лучшего на рынке – Bright Data.

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

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