Перейти к содержимому

Как использовать Proxies с Node.js Axios: Complete Guide

TL;DR

Настройте GProxy proxy с Node.js Axios для HTTP requests. Охватывает proxy configuration, HTTPS support, rotation patterns и error handling.

Язык: JavaScript

Что вам понадобится

  • Установленный Node.js 16+
  • Установленный Axios (npm install axios)
  • Аккаунт GProxy с активным тарифным планом proxy
  • Базовые знания Node.js и async/await

Пошаговая настройка

1

Установка Axios

Установите Axios и опциональную поддержку SOCKS5

npm install axios
# For SOCKS5 support:
npm install socks-proxy-agent
2

Настройка 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);
3

Настройка 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
});
4

Создание переиспользуемого клиента

Создайте экземпляр 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');
5

Добавление интерцептора повторов

Обрабатывайте ошибки 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;
  }
);
6

Тестирование конфигурации

Убедитесь, что proxy маршрутизирует трафик корректно

const res = await client.get('https://httpbin.org/ip');
console.log('Proxy IP:', res.data.origin);

Примеры кода

Базовый Axios с GProxy · javascript
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);
Конкурентные запросы с ограничением скорости · javascript
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}`);
Запросы с гео-таргетингом · javascript
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.

Pro советы
Создайте выделенный экземпляр Axios с настройками proxy по умолчанию для чистоты кода. Используйте p-limit для управления параллелизмом, чтобы не перегружать целевые серверы. Добавьте перехватчики ответов для автоматического повтора попыток при ошибках proxy. Установите разумные тайм-ауты (30s) для корректной обработки медленных proxy-соединений.

FAQ

Поддерживает ли Axios SOCKS5 нативно? +
Нет, но вы можете использовать пакет socks-proxy-agent для добавления поддержки SOCKS5. Передайте агент как httpsAgent в конфигурации Axios.
Как обрабатывать ошибки аутентификации proxy? +
Отлавливайте статус-коды 407 в перехватчиках ответов (interceptors). Проверьте свои учетные данные GProxy и убедитесь, что ваш тарифный план активен.
Могу ли я менять прокси для каждого запроса? +
Да. Backconnect эндпоинт GProxy назначает новый IP для каждого соединения, поэтому каждый запрос Axios автоматически получает другой IP.
Работает ли конфигурация proxy в браузерах? +
Нет, конфигурация proxy в Axios работает только в Node.js. Браузерные запросы проксируются через настройки системы или расширения прокси.

Готовы попробовать?

Начните с GProxy за минуты — резидентные прокси от $0.85/GB, IPv6 от $0.03/прокси, оплата по факту использования.

Другие интеграции

GProxy + Puppeteer
Настройте GProxy proxy с Puppeteer для автоматизации headless Chrome. Рассматриваются proxy authentication, переключение proxy на уровне page и stealth техники.
GProxy + Selenium
Настройте GProxy proxy с Selenium WebDriver для автоматизации браузера и парсинга. Охватывает Chrome, Firefox, headless режим и proxy аутентификацию.
GProxy + Scrapy
Узнайте, как настроить GProxy residential и datacenter proxy с Scrapy для крупномасштабного web scraping. Рассматриваются настройка middleware, rotation proxy и обработка ошибок.
GProxy + cURL
Используйте GProxy proxy с cURL для HTTP-запросов через командную строку. Охватывает типы proxy HTTP, HTTPS, SOCKS5, аутентификацию и продвинутые опции.
GProxy + Postman
Настройте GProxy proxy в Postman для API тестирования из различных локаций. Охватывает глобальные proxy settings, конфигурацию per-request и environment variables.
GProxy + n8n
Направляйте HTTP requests из workflow n8n через GProxy proxy. Охватывает конфигурацию HTTP Request node, environment variables и паттерны автоматизации.
support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.