Axios – JavaScript-библиотека для отправки HTTP-запросов, которая поддерживает асинхронную обработку данных, работу с ответами и ошибками и легко внедряется как в клиентские приложения, так и в серверные на базе Node.js.
Во многих практических сценариях, особенно при работе с большим количеством запросов, или с ограниченным доступом к контенту, часто возникает необходимость использовать прокси в Axios. Прокси-серверы позволяют изменить IP-адрес клиента и направлять запросы через промежуточный узел.
Поскольку использование прокси в Axios требует точной настройки и понимания архитектуры соединений, в материале представлены способы подключения HTTP(S) и SOCKS-прокси, особенности работы с авторизацией, конфигурация агентов, а также типичные ошибки и методы их устранения.
Настройка прокси в Axios применяется в следующих сценариях:
Использование Axios с правильно настроенными промежуточными узлами позволяет реализовать указанные сценарии. Однако важно понимать, что сама по себе библиотека является лишь инструментом для отправки HTTP-запросов. Возможности обхода блокировок, доступа к геозависимому контенту и управление трафиком зависят от:
Axios поддерживает следующие типы, в зависимости от протокола:
Для интеграции необходимо:
Важно! Библиотека не поддерживает работу с SSH, FTP, Shadowsocks и аналогичными протоколами. Для их использования необходимо применять отдельные инструменты или настраивать туннелирование на уровне операционной системы.
Перед тем как настроить прокси в Axios, важно учесть несколько технических нюансов: тип используемого протокола, необходимость авторизации, поддержка ротации. Ниже представлены пошаговые инструкции для разных вариантов подключения.
Перед началом конфигурации HTTP-прокси в Axios необходимо корректно подготовить рабочее окружение.
Важно! Команды выполняются в терминале ОС (CMD, PowerShell, bash) или встроенном терминале, например в Visual Studio Code. Перед выполнением действий важно проверить, чтобы текущая рабочая директория соответствовала корню создаваемого проекта.
mkdir proxy-setup-axios
cd proxy-setup-axios npm init -y npm install axios echo>app.js "scripts": {
"start": "node app.js"
}
Важно! Файл package.json можно открыть в среде разработки или в Блокноте Windows. При редактировании нужно следить за синтаксисом: не удаляйте и не меняйте кавычки, запятые, фигурные скобки и отступы, так как это приведет к ошибке выполнения.
npm start
Если все действия выполнены согласно инструкции, приложение успешно запустится даже при пустом конфигурационном файле. В этом случае окно программы откроется и сразу закроется без вывода каких-либо сообщений. Такое поведение является нормальным, поскольку в файле отсутствует код для отображения информации или задержки выполнения.
При использовании статического прокси все запросы направляются через один и тот же 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 перехватывает исключение и выводит сообщение о неполадке.
При множественных запросах через один и тот же сервер-посредник возрастает риск блокировки со стороны целевого ресурса. Чтобы этого избежать, используют резидентные прокси с поддержкой ротации 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-прокси оправдано при обходе сетевых фильтров, работе с ограниченными 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}`;
Для проверки работы прокси в 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 не работает по разным причинам, в основном из-за специфики работы с прокси в Node.js, где важна правильная настройка прокси-агентов и совместимость протоколов.
Причина: указан неверный IP-адрес или порт, прокси-сервер недоступен, либо подключение блокируется на уровне сети, брандмауэра или хост-системы.
Решение:
curl -x http://username:password@proxy-host:port https://api.ipify.org try {
await axios.get(url, { httpAgent });
} catch (err) {
if (err.code === 'ECONNREFUSED') {
// Переключение на другой IP
}
} Причина: прокси-сервер возвращает некорректный ответ от целевого ресурса в результате:
Решение:
Причина: промежуточный сервер использует 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');
Причина: неверный логин или пароль, отсутствие заголовка 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-адресов, поддержку ротации и высокий аптайм.
Да, в Axios действительно можно глобально настроить прокси-сервер с помощью переменных окружения: HTTP_PROXY, HTTPS_PROXY и NO_PROXY. Эти переменные можно задать через свойства системы. Для этого необходимо открыть “Свойства системы”, “Переменные среды”, в новом окне в разделе “Системные переменные” выбрать “Создать”, указать имя переменной, например “HTTP_PROXY”, и значение – адрес прокси-сервера.
Axios не делает различий между типами промежуточных серверов: мобильные, резидентские или дата-центр – авторизация задается одинаково. Главное – корректный формат URL или блок proxy.auth.
Альтернативами Axios для работы через прокси в Node.js являются node-fetch и Got. Обе библиотеки поддерживают HTTP/HTTPS-прокси как через переменные окружения, так и через явные настройки в коде. По возможностям они аналогичны: Got предоставляет более гибкие настройки для таймаутов, повторных запросах, а node-fetch ближе по синтаксису к привычному браузерному fetch. Выбор зависит от задач и удобства использования.
Комментарии: 0