Как использовать Proxies с Node.js Axios: Complete Guide
Настройте GProxy proxy с Node.js Axios для HTTP requests. Охватывает proxy configuration, HTTPS support, rotation patterns и error handling.
Что вам понадобится
- ✓Установленный Node.js 16+
- ✓Установленный Axios (npm install axios)
- ✓Аккаунт GProxy с активным тарифным планом proxy
- ✓Базовые знания Node.js и async/await
Пошаговая настройка
Установка Axios
Установите Axios и опциональную поддержку SOCKS5
npm install axios
# For SOCKS5 support:
npm install socks-proxy-agent
Настройка HTTP proxy
Добавьте GProxy proxy в конфиг запроса Axios
const axios = require('axios');
const response = await axios.get('https://httpbin.org/ip', {
proxy: {
host: 'proxy.gproxy.net',
port: 1000,
auth: { username: 'YOUR_USER', password: 'YOUR_PASS' }
}
});
console.log(response.data);
Настройка SOCKS5 proxy
Используйте socks-proxy-agent для поддержки SOCKS5
const { SocksProxyAgent } = require('socks-proxy-agent');
const agent = new SocksProxyAgent('socks5://USER:PASS@proxy.gproxy.net:1001');
const response = await axios.get('https://httpbin.org/ip', {
httpsAgent: agent, httpAgent: agent
});
Создание переиспользуемого клиента
Создайте экземпляр Axios с настройками proxy по умолчанию
const client = axios.create({
proxy: {
host: 'proxy.gproxy.net',
port: 1000,
auth: { username: 'YOUR_USER', password: 'YOUR_PASS' }
},
timeout: 30000
});
const data = await client.get('https://example.com');
Добавление интерцептора повторов
Обрабатывайте ошибки proxy с автоматическим повтором запроса
client.interceptors.response.use(
response => response,
async error => {
if (error.response?.status === 407 || error.code === 'ECONNRESET') {
return client.request(error.config); // retry
}
throw error;
}
);
Тестирование конфигурации
Убедитесь, что proxy маршрутизирует трафик корректно
const res = await client.get('https://httpbin.org/ip');
console.log('Proxy IP:', res.data.origin);
Примеры кода
const axios = require('axios');
async function main() {
const response = await axios.get('https://httpbin.org/ip', {
proxy: {
host: 'proxy.gproxy.net',
port: 1000,
auth: {
username: 'YOUR_USER',
password: 'YOUR_PASS'
}
},
timeout: 30000
});
console.log('Your proxy IP:', response.data.origin);
}
main().catch(console.error);
const axios = require('axios');
const pLimit = require('p-limit');
const limit = pLimit(10); // max 10 concurrent
const client = axios.create({
proxy: {
host: 'proxy.gproxy.net',
port: 1000,
auth: { username: 'USER', password: 'PASS' }
},
timeout: 30000
});
const urls = Array.from({ length: 100 }, (_, i) =>
`https://example.com/page/${i + 1}`);
const results = await Promise.all(
urls.map(url => limit(() =>
client.get(url).then(r => ({ url, status: r.status }))
.catch(e => ({ url, error: e.message }))
))
);
console.log(`Success: ${results.filter(r => r.status).length}`);
console.log(`Failed: ${results.filter(r => r.error).length}`);
const axios = require('axios');
async function fetchFromCountry(url, country) {
const response = await axios.get(url, {
proxy: {
host: 'proxy.gproxy.net',
port: 1000,
auth: {
username: `USER-country-${country}`,
password: 'PASS'
}
}
});
return { country, data: response.data };
}
const countries = ['us', 'de', 'gb', 'jp', 'br'];
const results = await Promise.all(
countries.map(c => fetchFromCountry('https://httpbin.org/ip', c))
);
results.forEach(r =>
console.log(`${r.country}: ${r.data.origin}`));
Зачем использовать proxy с Axios?
Axios — это самый популярный HTTP клиент для Node.js и браузеров, имеющий более 100 миллионов еженедельных загрузок в npm. Добавление GProxy proxy в Axios позволяет реализовать ротацию IP для веб-скрапинга, доступ к API из разных локаций и анонимную обработку запросов. Более 10M+ резидентных IP GProxy и покрытие в 150+ странах бесшовно интегрируются с конфигурацией proxy в Axios.
Базовая конфигурация proxy
Axios поддерживает HTTP proxy через встроенную опцию конфигурации proxy. Передайте хост proxy, порт и учетные данные для аутентификации напрямую в конфиг запроса или в качестве значения по умолчанию. Для HTTPS целей через HTTP proxy, Axios автоматически обрабатывает CONNECT туннель.
Поддержка SOCKS5 proxy
Axios не поддерживает SOCKS5 нативно, но вы можете добавить его с помощью пакета socks-proxy-agent. Создайте SOCKS5 агент и передайте его как httpsAgent в конфиг Axios. Это работает с SOCKS5 эндпоинтами GProxy.
Интерцепторы запросов для логики proxy
Интерцепторы Axios позволяют добавить логику ротации proxy, повторные попытки при сбоях и логирование. Добавьте интерцептор запроса для динамического назначения proxy и интерцептор ответа для обработки ошибок proxy и повторного запроса с другим IP.
Параллельные запросы
Асинхронная природа Node.js делает её идеальной для параллельных запросов через proxy. Используйте Promise.all() или p-limit для контроля конкурентности. Каждый запрос через backconnect эндпоинт GProxy получает уникальный IP, поэтому параллельные запросы ротируются естественным образом.
Лучшие практики обработки ошибок
Ошибки, специфичные для proxy, требуют специальной обработки: 407 означает ошибку аутентификации, ECONNREFUSED означает, что proxy недоступен, а ETIMEDOUT означает, что proxy или цель работают медленно. Установите соответствующие тайм-ауты и внедрите логику повторных попыток с экспоненциальной задержкой для надежности в production.
Сценарии применения
API Data Collection
Собирайте данные из API, которые ограничивают количество запросов на один IP, используя ротируемые proxy.
Price Monitoring Services
Создавайте микросервисы для отслеживания цен, которые опрашивают ритейлеров из разных локаций.
Webhook Testing
Отправляйте тестовые webhook с разных IP для проверки фильтров безопасности вашего приложения.
Microservice Testing
Тестируйте собственные API с внешних IP для проверки правил rate limiting и geo-blocking.
FAQ
Поддерживает ли Axios SOCKS5 нативно? +
Как обрабатывать ошибки аутентификации proxy? +
Могу ли я менять прокси для каждого запроса? +
Работает ли конфигурация proxy в браузерах? +
Готовы попробовать?
Начните с GProxy за минуты — резидентные прокси от $0.85/GB, IPv6 от $0.03/прокси, оплата по факту использования.
