Если вы работаете с Node.js и вам нужно направлять сетевые запросы через прокси-сервер, это может быть полезно по разным причинам: для обхода географических ограничений, повышения безопасности, тестирования или просто для управления трафиком. К счастью, Node.js предоставляет достаточно гибкие возможности для этого.
В этом руководстве мы разберем основные способы подключения прокси в ваших Node.js приложениях.
Прежде чем мы начнем, давайте кратко рассмотрим, зачем это может понадобиться:
В Node.js есть несколько способов настроить прокси, в зависимости от того, как вы выполняете сетевые запросы.
Если вы используете стандартные модули http и https для выполнения запросов, вы можете указать прокси напрямую в опциях запроса.
Пример для HTTP запроса:
const http = require('http'); const proxyOptions = { host: 'your_proxy_host', // Например, '123.45.67.89' port: 8080, // Порт вашего прокси // Если ваш прокси требует аутентификации: // auth: 'username:password' }; const requestOptions = { hostname: 'example.com', port: 80, path: '/', method: 'GET', agent: new http.Agent({ proxy: proxyOptions }) // Указываем прокси через агент }; const req = http.request(requestOptions, (res) => { console.log(`Статус ответа: ${res.statusCode}`); let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log('Полученные данные:', data); }); }); req.on('error', (e) => { console.error(`Ошибка запроса: ${e.message}`); }); req.end();
Пример для HTTPS запроса:
Для HTTPS запросов процесс аналогичен, но вы будете использовать модуль https и https.Agent.
const https = require('https'); const proxyOptions = { host: 'your_proxy_host', port: 8080, // auth: 'username:password' }; const requestOptions = { hostname: 'google.com', port: 443, path: '/', method: 'GET', agent: new https.Agent({ proxy: proxyOptions }) // Используем https.Agent }; const req = https.request(requestOptions, (res) => { console.log(`Статус ответа: ${res.statusCode}`); let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log('Полученные данные:', data); }); }); req.on('error', (e) => { console.error(`Ошибка запроса: ${e.message}`); }); req.end();
Важно: Этот метод работает только для запросов, выполненных напрямую через модули http и https. Если вы используете сторонние библиотеки, они могут иметь свои собственные механизмы настройки прокси.
Node.js (и многие другие инструменты) автоматически подхватывают настройки прокси из переменных окружения. Это самый распространенный и удобный способ