Як використовувати proxy з Node.js Axios: повний посібник
Налаштуйте GProxy proxy з Node.js Axios для HTTP запитів. Охоплює proxy конфігурацію, HTTPS підтримку, ротаційні патерни та обробку помилок.
Що вам знадобиться
- ✓Встановлено 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');
Додавання interceptor для повторних спроб
Обробляйте помилки 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 host, port та облікові дані автентифікації безпосередньо в конфігурації запиту або як значення за замовчуванням. Для 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, використовуючи ротаційні проксі.
Price Monitoring Services
Створюйте мікросервіси для відстеження цін, які опитують ритейлерів з різних локацій.
Webhook Testing
Надсилайте тестові webhooks з різних IP, щоб перевірити фільтри безпеки вашого додатка.
Microservice Testing
Тестуйте власні API з зовнішніх IP, щоб перевірити правила rate limiting та geo-blocking.
FAQ
Чи підтримує Axios SOCKS5 нативно? +
Як обробляти помилки автентифікації proxy? +
Чи можу я ротувати проксі для кожного запиту? +
Чи працює конфігурація proxy у браузерах? +
Готові спробувати?
Почніть з GProxy за хвилини — резидентні проксі від $0.85/GB, IPv6 від $0.03/проксі, оплата за використання.
