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

Комментарии: 0

Axios – JavaScript-библиотека для отправки HTTP-запросов, которая поддерживает асинхронную обработку данных, работу с ответами и ошибками и легко внедряется как в клиентские приложения, так и в серверные на базе Node.js.

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

Поскольку использование прокси в Axios требует точной настройки и понимания архитектуры соединений, в материале представлены способы подключения HTTP(S) и SOCKS-прокси, особенности работы с авторизацией, конфигурация агентов, а также типичные ошибки и методы их устранения.

Зачем использовать прокси в Axios?

Настройка прокси в Axios применяется в следующих сценариях:

  • доступ к региональному контенту – отправка запросов из определенного географического региона для корректной работы с локализованными ресурсами;
  • распределенная автоматизация – управление потоками запросов через разные IP-адреса для стабильной обработки данных и минимизации сбоев;
  • тестирование и отладка – направление трафика через промежуточный сервер для анализа запросов и ответов;
  • работа в корпоративных сетях – соответствие требованиям внутренней сетевой архитектуры и нормам безопасности.

Использование Axios с правильно настроенными промежуточными узлами позволяет реализовать указанные сценарии. Однако важно понимать, что сама по себе библиотека является лишь инструментом для отправки HTTP-запросов. Возможности обхода блокировок, доступа к геозависимому контенту и управление трафиком зависят от:

  • характеристик самого прокси-сервера (тип, используемый протокол, наличие авторизации);
  • внешней логики проксирования (ротация IP, балансировка нагрузки);
  • корректно написанного кода, обеспечивающего правильную маршрутизацию.

Какие типы прокси поддерживает Axios?

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

  1. HTTP и HTTPS (встроенная поддержка) с помощью параметра “proxy”. Для настройки достаточно указать:
    • IP-адрес прокси-сервера;
    • порт;
    • логин и пароль (при необходимости).
  2. SOCKS (через сторонние агенты). Инструмент не поддерживает SOCKS-прокси напрямую, но с ними можно работать через сторонние библиотеки, например, “socks-proxy-agent”.

    Для интеграции необходимо:

    • Создать экземпляр прокси-агента с указанием типа (SOCKS4/SOCKS5) и параметров подключения (IP, порт, логин и пароль).
    • Передать созданный объект в Axios посредством опции “httpAgent” и “httpsAgent”.
    • Отправить запрос.

Важно! Библиотека не поддерживает работу с SSH, FTP, Shadowsocks и аналогичными протоколами. Для их использования необходимо применять отдельные инструменты или настраивать туннелирование на уровне операционной системы.

Как настроить прокси в Axios?

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

Подготовительные действия

Перед началом конфигурации HTTP-прокси в Axios необходимо корректно подготовить рабочее окружение.

Важно! Команды выполняются в терминале ОС (CMD, PowerShell, bash) или встроенном терминале, например в Visual Studio Code. Перед выполнением действий важно проверить, чтобы текущая рабочая директория соответствовала корню создаваемого проекта.

  1. Создание папки нового проекта и переход в нее.
    mkdir proxy-setup-axios
    cd proxy-setup-axios
  2. Инициализация Node.js-проекта. После выполнения этой команды в папке проекта появится файл package.json с параметрами по умолчанию.
    npm init -y
  3. Установка библиотеки Axios.
    npm install axios
  4. Создание основного файла проекта.
    echo>app.js
  5. Настройка запуска. Необходимо открыть файл package.json любым удобным способом и заменить содержимое секции scripts на:
    "scripts": {
    "start": "node app.js"
    }
    

    Важно! Файл package.json можно открыть в среде разработки или в Блокноте Windows. При редактировании нужно следить за синтаксисом: не удаляйте и не меняйте кавычки, запятые, фигурные скобки и отступы, так как это приведет к ошибке выполнения.

  6. Проверка готовой конфигурации.
  7. npm start

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

Настройка статического HTTP-прокси

При использовании статического прокси все запросы направляются через один и тот же IP-адрес. Такой подход применим, когда нет необходимости в ротации.

Для подключения HTTPS-прокси в Axios используется следующая конфигурация:

axios.get(URL, {
proxy: {
protocol: 'http',
host: '82.211.7.97',
port: 59100
}
})

Если промежуточный сервер требует авторизации, добавляется блок auth:

auth: {
username: 'proxyUser',
password: 'proxyPass'
}

Полноценный пример с обработкой запроса к сервису httpbin.org:

const axios = require('axios');

async function requestThroughProxy() {
try {
const response = await axios.get('https://httpbin.org/ip', {
proxy: {
protocol: 'http',
host: '82.211.7.97',
port: 59100,
auth: {
username: 'proxyUser',
password: 'proxyPass'
}
}
});
console.log('Proxy IP:', response.data);
} catch (error) {
console.error('Request failed:', error.message);
}
}

requestThroughProxy();

Блок try/catch используется для обработки возможных ошибок при выполнении запроса. В данном примере обращение выполняется к https://httpbin.org/ip, который возвращает текущий IP-адрес клиента. В случае сбоя – например, если промежуточный сервер недоступен или запрос не прошел – catch перехватывает исключение и выводит сообщение о неполадке.

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

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

Ниже пример случайного выбора IP-адреса с использованием пакета http-proxy-agent:

const axios = require('axios');
const HttpProxyAgent = require('http-proxy-agent');

// Список с авторизацией
const proxyList = [
'http://user1:[email protected]:59100',
'http://user2:[email protected]:59101',
'http://user3:[email protected]:59102'
];

// Функция случайного выбора
function getRandomProxy() {
const index = Math.floor(Math.random() * proxyList.length);
return proxyList[index];
}

// Выполнение нескольких запросов с ротацией IP
(async () => {
for (let i = 0; i < 5; i++) {
const proxy = getRandomProxy();
const agent = new HttpProxyAgent(proxy);

try {
const response = await axios.get('https://api.ipify.org?format=json', {
httpAgent: agent,
httpsAgent: agent,
timeout: 3000
});
console.log(`Used proxy ${proxy} -- IP:`, response.data.ip);
} catch (err) {
console.error(`Proxy ${proxy} failed:`, err.message);
}
}
})();

В этом примере каждый запрос использует случайно выбранный адрес из заданного пула. Сервис https://api.ipify.org?format=json возвращает внешний IP и позволяет убедиться, что соединение установлено. В случае ошибки (например, недоступности узла или некорректных данных авторизации) блок catch отработает исключение и выдаст сообщение.

Настройка SOCKS5 прокси в Axios

Использование SOCKS5-прокси оправдано при обходе сетевых фильтров, работе с ограниченными API и сценариями, где требуется передача нестандартного трафика, включая DNS-запросы.

Для работы с SOCKS5-прокси в Axios рекомендуется использовать пакет “socks-proxy-agent”. Он реализует поддержку этого типа промежуточного сервера через прокси-агент, совместимый с библиотекой.

Установка агента прокси для Axios:

npm install axios socks-proxy-agent

Настройка и конфигурация прокси в Axios:

const axios = require('axios');
const { SocksProxyAgent } = require('socks-proxy-agent');

// Параметры промежуточного сервера
const proxy = {
host: '45.192.135.68',// IP-адрес
port: 50101,// Порт
username: 'Username',// Логин (если требуется)
password: 'Password'// Пароль (если требуется)
};

// Формирование URL прокси с авторизацией
const proxyUrl = `socks5://${proxy.username}:${proxy.password}@${proxy.host}:${proxy.port}`;

// Создание агента SOCKS5
const agent = new SocksProxyAgent(proxyUrl);

// Запрос через прокси в Axios
axios.get('https://api.ipify.org/?format=json', { httpsAgent: agent })
.then(response => {
console.log('Ваш IP:', response.data);
})
.catch(error => {
console.error('Ошибка при подключении:', error.message);
});

Важно! Если прокси без авторизации, нужно сформировать proxyUrl без логина и пароля:

const proxyUrl = `socks5://${proxy.host}:${proxy.port}`;

Как проверить HTTP(S) и SOCKS-прокси в Axios?

Для проверки работы прокси в Axios можно отправить запрос к сервису, который возвращает внешний IP-адрес, например:

axios.get('https://api.ipify.org?format=json', { httpsAgent: agent })
.then(response => {
console.log('Ваш IP:', response.data.ip);
})
.catch(error => {
console.error('Ошибка при подключении:', error.message);
});

Это даст возможность убедиться, что запросы проксируются корректно.

Рекомендации по настройке прокси в Axios

Эффективная работа Axios с прокси требует продуманной конфигурации, в которой необходимо учитывать следующие ключевые аспекты:

  • Тайм-ауты запросов. Корректные значения позволяют избегать зависаний при нестабильном подключении и оперативно переключаться на альтернативные маршруты.
  • Повторные запросы. Если основной промежуточный сервер недоступен, важно настроить повторные попытки или переход на резервный адрес. Это помогает избежать простоев.
  • Выбор прокси-протокола. HTTP/HTTPS применимы в большинстве случаев: веб-скрапинг, API-запросы, интеграции. SOCKS5 предпочтителен при работе с нестандартным трафиком (включая TCP-потоки и DNS-запросы), в условиях ограниченных сетей или когда требуется минимальное вмешательство в структуру пакетов.
  • Обработка ошибок. В коде должна быть реализована обработка сетевых и HTTP-ошибок с учетом специфики прокси-соединений, включая повторные попытки с увеличением интервала (exponential backoff) или переключение на альтернативные решения.

Соблюдение этих принципов поможет настроить стабильную работу инструмента через сервер-посредник.

Устранение ошибок при настройке прокси в Axios

Прокси в Axios не работает по разным причинам, в основном из-за специфики работы с прокси в Node.js, где важна правильная настройка прокси-агентов и совместимость протоколов.

ECONNREFUSED – отказ в подключении

Причина: указан неверный IP-адрес или порт, прокси-сервер недоступен, либо подключение блокируется на уровне сети, брандмауэра или хост-системы.

Решение:

  1. Проверить, что IP-адрес и порт указаны правильно.
  2. Если промежуточный сервер недоступен, связаться с провайдером или заменить его.
  3. Запустить curl, чтобы проверить IP.
    curl -x http://username:password@proxy-host:port https://api.ipify.org
  4. Добавить блок try/catch с логикой обработки исключений и переключением на другой IP в случае сбоя.
    try {
    await axios.get(url, { httpAgent });
    } catch (err) {
    if (err.code === 'ECONNREFUSED') {
    // Переключение на другой IP
    }
    }

ERR_BAD_RESPONSE или 502 Bad Gateway

Причина: прокси-сервер возвращает некорректный ответ от целевого ресурса в результате:

  • перегрузки или превышения лимита одновременных подключений;
  • нестабильного соединения между промежуточным и целевым сервером;
  • фильтрации или блокировки трафика (например, из-за антибот-защиты, геофильтрации или ограничений по заголовкам).

Решение:

  • Протестировать проблемный IP вручную через curl или аналогичный инструмент, чтобы проверить, действительно ли он возвращает ошибку.
  • Если ошибка повторяется – временно исключить данный адрес из пула.
  • Убедиться, что список включает резервные адреса и настроен механизм автоматического переключения (retry + failover).
  • Использовать библиотеку axios-retry, которая добавляет повторные попытки с постепенно увеличивающимися интервалами между ними.

Tunneling socket could not be established

Причина: промежуточный сервер использует SOCKS5, а подключение осуществляется через HTTP или HTTPS-агент. Axios не поддерживает прокси напрямую, поэтому ключевым элементом настройки является правильно подобранный агент.

Решение:

Подключить соответствующий агент (http-proxy-agent, https-proxy-agent, socks-proxy-agent) в зависимости от используемого типа протокола.

const HttpsProxyAgent = require('https-proxy-agent');
const agent = new HttpsProxyAgent('http://user:pass@ip:port');

Для SOCKS5:

const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks5://user:pass@ip:port');

407 Proxy Authentication Required – ошибка авторизации

Причина: неверный логин или пароль, отсутствие заголовка Proxy-Authorization, или неправильный формат строки подключения.

Решение:

Проверить синтаксис строки подключения: http://user:pass@ip:port. Убедиться, что агент корректно передает параметры авторизации.

const HttpsProxyAgent = require('https-proxy-agent');

const proxyUrl = 'http://username:[email protected]:50100';
const agent = new HttpsProxyAgent(proxyUrl);

Заключение

Настройка прокси в Axios – необходимый элемент для работы с анонимностью, балансировкой нагрузки и обходом ограничений. Надежность выполняемых запросов достигается за счет корректной конфигурации прокси-агентов, выбора совместимых протоколов и продуманной обработки ошибок. При этом качество промежуточного сервера напрямую влияет на эффективность работы инструмента. Бесплатные публичные прокси, как правило, нестабильны, быстро попадают под блокировки и часто становятся причиной сбоев. Для рабочих сценариев рекомендуется использовать платные решения от надежных провайдеров, предоставляющих обширный пул IP-адресов, поддержку ротации и высокий аптайм.

FAQ

Можно ли настроить прокси в Axios глобально через переменные окружения?

Да, в Axios действительно можно глобально настроить прокси-сервер с помощью переменных окружения: HTTP_PROXY, HTTPS_PROXY и NO_PROXY. Эти переменные можно задать через свойства системы. Для этого необходимо открыть “Свойства системы”, “Переменные среды”, в новом окне в разделе “Системные переменные” выбрать “Создать”, указать имя переменной, например “HTTP_PROXY”, и значение – адрес прокси-сервера.

Нужна ли авторизация для резидентских прокси?

Axios не делает различий между типами промежуточных серверов: мобильные, резидентские или дата-центр – авторизация задается одинаково. Главное – корректный формат URL или блок proxy.auth.

Какие альтернативы Axios при работе через прокси?

Альтернативами Axios для работы через прокси в Node.js являются node-fetch и Got. Обе библиотеки поддерживают HTTP/HTTPS-прокси как через переменные окружения, так и через явные настройки в коде. По возможностям они аналогичны: Got предоставляет более гибкие настройки для таймаутов, повторных запросах, а node-fetch ближе по синтаксису к привычному браузерному fetch. Выбор зависит от задач и удобства использования.

Комментарии:

0 комментариев