Гайды 4 мин чтения 14 просмотров

Использование прокси в Node.js

Интеграция прокси в Node.js проекты с Axios, Puppeteer и Playwright. Пошаговые инструкции и примеры кода для эффективной работы с GProxy.

HTTP прокси — это промежуточный сервер, который принимает HTTP-запросы от клиента и перенаправляет их к целевому серверу. При этом целевой сервер видит IP-адрес прокси, а не ваш реальный адрес. Использование прокси в Node.js позволяет обходить географические ограничения, повышать анонимность и тестировать веб-приложения из разных регионов. Эта статья демонстрирует, как интегрировать прокси с популярными HTTP-клиентами и браузерными движками: axios, puppeteer и playwright.

Использование прокси с Axios

Axios — это популярный HTTP-клиент для Node.js, основанный на Promise API. Настроить прокси с Axios довольно просто, используя опцию proxy в конфигурации запроса.

Настройка прокси

Для использования прокси с Axios необходимо указать его адрес и порт в конфигурации запроса. Можно также добавить логин и пароль, если прокси требует аутентификацию.

const axios = require('axios');

async function fetchDataWithProxy() {
  try {
    const response = await axios.get('https://api.ipify.org?format=json', {
      proxy: {
        host: 'your_proxy_host', // Замените на IP-адрес или доменное имя прокси-сервера
        port: 8080,         // Замените на порт прокси-сервера
        auth: {             // Необязательно: если прокси требует аутентификацию
          username: 'your_username',
          password: 'your_password'
        }
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Ошибка при запросе:', error);
  }
}

fetchDataWithProxy();

В этом примере https://api.ipify.org?format=json используется для получения IP-адреса, с которого был сделан запрос. Если прокси настроен правильно, вы увидите IP-адрес прокси-сервера, а не ваш.

Типы прокси

Axios поддерживает различные типы прокси, такие как HTTP, HTTPS и SOCKS. Тип прокси определяется схемой в адресе прокси.

  • HTTP: http://your_proxy_host:8080
  • HTTPS: https://your_proxy_host:8080
  • SOCKS4/5: socks4://your_proxy_host:1080 или socks5://your_proxy_host:1080

Для SOCKS прокси может потребоваться установка дополнительного пакета, например socks-proxy-agent.

const axios = require('axios');
const SocksProxyAgent = require('socks-proxy-agent');

async function fetchDataWithSocksProxy() {
  try {
    const agent = new SocksProxyAgent({
      host: 'your_proxy_host',
      port: 1080,
      userId: 'your_username', // Необязательно
      password: 'your_password'  // Необязательно
    });

    const response = await axios.get('https://api.ipify.org?format=json', {
      httpsAgent: agent, // Для HTTPS запросов
      httpAgent: agent,  // Для HTTP запросов
    });

    console.log(response.data);
  } catch (error) {
    console.error('Ошибка при запросе:', error);
  }
}

fetchDataWithSocksProxy();

Глобальная настройка прокси для Axios

Вместо указания прокси для каждого запроса, можно настроить глобальный прокси для экземпляра Axios.

const axios = require('axios');

const instance = axios.create({
  proxy: {
    host: 'your_proxy_host',
    port: 8080,
    auth: {
      username: 'your_username',
      password: 'your_password'
    }
  }
});

async function fetchData() {
  try {
    const response = await instance.get('https://api.ipify.org?format=json');
    console.log(response.data);
  } catch (error) {
    console.error('Ошибка при запросе:', error);
  }
}

fetchData();

Использование прокси с Puppeteer

Puppeteer — это Node.js библиотека, предоставляющая API для управления браузером Chrome или Chromium. Использование прокси с Puppeteer позволяет эмулировать действия пользователей из разных географических локаций.

Запуск браузера с прокси

Прокси указывается при запуске браузера через аргументы командной строки --proxy-server.

const puppeteer = require('puppeteer');

async function runPuppeteerWithProxy() {
  const browser = await puppeteer.launch({
    args: [
      '--proxy-server=your_proxy_host:8080' // Замените на адрес и порт прокси-сервера
    ]
  });
  const page = await browser.newPage();
  await page.goto('https://api.ipify.org');
  const ipAddress = await page.$eval('body', el => el.textContent);
  console.log('IP Address:', ipAddress);
  await browser.close();
}

runPuppeteerWithProxy();

Использование аутентифицированного прокси

Для использования прокси с аутентификацией необходимо использовать page.authenticate().

const puppeteer = require('puppeteer');

async function runPuppeteerWithAuthProxy() {
  const browser = await puppeteer.launch({
    args: [
      '--proxy-server=your_proxy_host:8080' // Замените на адрес и порт прокси-сервера
    ]
  });
  const page = await browser.newPage();

  await page.authenticate({
    username: 'your_username',
    password: 'your_password'
  });

  await page.goto('https://api.ipify.org');
  const ipAddress = await page.$eval('body', el => el.textContent);
  console.log('IP Address:', ipAddress);
  await browser.close();
}

runPuppeteerWithAuthProxy();

SOCKS прокси с Puppeteer

Puppeteer поддерживает только HTTP(S) прокси через аргументы командной строки. Для использования SOCKS прокси потребуется дополнительная настройка, например, использование SSH-туннеля или другой библиотеки, которая преобразует SOCKS прокси в HTTP прокси.

Использование прокси с Playwright

Playwright — это библиотека для автоматизации браузеров, разработанная Microsoft. Она поддерживает Chrome, Firefox, Safari и Edge. Настройка прокси с Playwright аналогична Puppeteer, но имеет некоторые отличия.

Запуск браузера с прокси

Прокси указывается через опцию proxy при запуске браузера.

const { chromium } = require('playwright');

async function runPlaywrightWithProxy() {
  const browser = await chromium.launch({
    proxy: {
      server: 'your_proxy_host:8080', // Замените на адрес и порт прокси-сервера
      username: 'your_username',      // Необязательно
      password: 'your_password'       // Необязательно
    }
  });
  const page = await browser.newPage();
  await page.goto('https://api.ipify.org');
  const ipAddress = await page.textContent('body');
  console.log('IP Address:', ipAddress);
  await browser.close();
}

runPlaywrightWithProxy();

Типы прокси с Playwright

Playwright поддерживает HTTP(S) и SOCKS прокси. Тип прокси определяется схемой в адресе прокси.

  • HTTP: http://your_proxy_host:8080
  • HTTPS: https://your_proxy_host:8080
  • SOCKS4/5: socks4://your_proxy_host:1080 или socks5://your_proxy_host:1080

Сравнение библиотек: Axios, Puppeteer, Playwright

Feature Axios Puppeteer Playwright
Типы прокси HTTP, HTTPS, SOCKS HTTP, HTTPS HTTP, HTTPS, SOCKS
Простота настройки Высокая Средняя Средняя
Браузерный движок Нет Chrome/Chromium Chrome/Chromium, Firefox, Safari, Edge
Автоматизация Только HTTP запросы Полная автоматизация браузера Полная автоматизация браузера

Заключение

Использование прокси в Node.js с axios, puppeteer и playwright позволяет решать различные задачи, от обхода географических ограничений до тестирования веб-приложений. Каждая библиотека имеет свои особенности в настройке прокси, но общая идея остается той же: указать адрес и порт прокси-сервера, а также, при необходимости, логин и пароль. Выбор библиотеки зависит от конкретной задачи: axios подходит для простых HTTP запросов, а puppeteer и playwright — для автоматизации браузеров.

Полезные ссылки:
* Документация Axios{rel="nofollow"}
* Документация Puppeteer{rel="nofollow"}
* Документация Playwright{rel="nofollow"}

Обновлено: 26.01.2026
Назад к категории

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира