Перейти до вмісту
Гайды 5 хв читання 111 переглядів

Використання Проксі в Node.js

Дослідіть проксі Node.js для Axios, Puppeteer та Playwright. Покращте веб-скрейпінг та автоматизацію за допомогою безпечної інтеграції GProxy.

Використання Проксі в Node.js

HTTP-проксі — це проміжний сервер, який знаходиться між вашим застосунком Node.js та цільовим сервером, пересилаючи запити та відповіді. Використання проксі в Node.js з такими бібліотеками, як axios, Puppeteer та Playwright, дозволяє маскувати вашу IP-адресу, обходити географічні обмеження, балансувати навантаження запитів та ефективніше збирати дані з вебсайтів. Ця стаття надає практичні приклади того, як налаштувати ці бібліотеки для використання проксі.

Налаштування проксі за допомогою Axios

Axios — це популярний HTTP-клієнт для Node.js, заснований на промісах. Налаштувати проксі за допомогою Axios просто, використовуючи опцію конфігурації proxy.

Базова конфігурація проксі

Опція proxy приймає об'єкт з такими властивостями, як host, port, username та password.

const axios = require('axios');

async function fetchData() {
  try {
    const response = await axios.get('https://api.example.com/data', {
      proxy: {
        host: 'your_proxy_host',
        port: 8080,
        username: 'your_username', // Optional
        password: 'your_password'  // Optional
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchData();

Замініть your_proxy_host та 8080 на ваш фактичний хост та порт проксі. Якщо ваш проксі вимагає автентифікації, надайте username та password.

Використання змінних середовища

Для безпеки та зручності підтримки найкраще зберігати облікові дані проксі у змінних середовища.

const axios = require('axios');

async function fetchData() {
  try {
    const proxyHost = process.env.PROXY_HOST;
    const proxyPort = process.env.PROXY_PORT;
    const proxyUsername = process.env.PROXY_USERNAME;
    const proxyPassword = process.env.PROXY_PASSWORD;

    const response = await axios.get('https://api.example.com/data', {
      proxy: {
        host: proxyHost,
        port: parseInt(proxyPort), // Ensure port is an integer
        username: proxyUsername,
        password: proxyPassword
      }
    });
    console.log(response.data);
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

fetchData();

Переконайтеся, що ви встановили змінні середовища перед запуском скрипта. Наприклад, у вашому терміналі:

export PROXY_HOST=your_proxy_host
export PROXY_PORT=8080
export PROXY_USERNAME=your_username
export PROXY_PASSWORD=your_password
node your_script.js

Обробка HTTPS-проксі

Для HTTPS-проксі переконайтеся, що ваш проксі підтримує метод CONNECT. Axios безперешкодно працює з HTTPS-проксі з тією ж конфігурацією.

Налаштування проксі за допомогою Puppeteer

Puppeteer — це бібліотека Node.js, яка надає високорівневий API для керування безголовим Chrome або Chromium. Використання проксі з Puppeteer є критично важливим для завдань веб-скрейпінгу та автоматизації, де вам потрібно уникнути блокування IP-адрес або отримати доступ до географічно обмеженого вмісту.

Запуск Puppeteer з проксі

Ви можете налаштувати проксі під час запуску Puppeteer, використовуючи аргумент запуску --proxy-server.

const puppeteer = require('puppeteer');

async function scrapeWebsite() {
  const browser = await puppeteer.launch({
    args: [
      `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`
    ]
  });

  const page = await browser.newPage();
  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Замініть process.env.PROXY_HOST та process.env.PROXY_PORT на ваш хост та порт проксі. Зауважте, що цей приклад передбачає HTTP-проксі; для HTTPS-проксі використовуйте https:// в аргументі --proxy-server.

Автентифіковані проксі з Puppeteer

Puppeteer не підтримує безпосередньо автентифікацію за іменем користувача та паролем через аргументи запуску. Вам потрібно обробляти автентифікацію в контексті сторінки.

const puppeteer = require('puppeteer');

async function scrapeWebsite() {
  const browser = await puppeteer.launch({
    args: [
      `--proxy-server=http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`
    ]
  });

  const page = await browser.newPage();

  // Authenticate with the proxy using page.authenticate
  await page.authenticate({
    username: process.env.PROXY_USERNAME,
    password: process.env.PROXY_PASSWORD,
  });


  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Метод page.authenticate() надає необхідні облікові дані проксі-серверу. Цей метод має бути викликаний перед переходом на цільову сторінку.

Міркування щодо проксі для кожного запиту

Puppeteer застосовує налаштування проксі глобально для всього екземпляра браузера. Якщо вам потрібні різні проксі для різних запитів, вам доведеться запускати кілька екземплярів браузера, кожен з яких налаштований на інший проксі. Альтернативно, розгляньте можливість використання бібліотеки, яка перехоплює запити та застосовує налаштування проксі для кожного запиту (менш поширений, складніший варіант).

Налаштування проксі за допомогою Playwright

Playwright — ще одна потужна бібліотека Node.js для автоматизації браузера та наскрізного тестування. Як і Puppeteer, вона підтримує налаштування проксі для своїх екземплярів браузера.

Запуск Playwright з проксі

Playwright пропонує більш прямий спосіб налаштування проксі порівняно з Puppeteer, використовуючи властивість proxy в опціях launch.

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

async function scrapeWebsite() {
  const browser = await chromium.launch({
    proxy: {
      server: `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`,
      username: process.env.PROXY_USERNAME,
      password: process.env.PROXY_PASSWORD,
    }
  });

  const page = await browser.newPage();
  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Цей підхід є чистішим та більш явним, оскільки він безпосередньо підтримує автентифікацію за іменем користувача та паролем у конфігурації проксі.

Проксі для кожного контексту

Playwright підтримує контексти браузера, що дозволяє створювати ізольовані сеанси перегляду в межах одного екземпляра браузера. Кожен контекст може мати власну конфігурацію проксі. Це корисно для виконання паралельних завдань, кожне з яких використовує інший проксі.

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

async function scrapeWebsite() {
  const browser = await chromium.launch();

  const context = await browser.newContext({
      proxy: {
        server: `http://${process.env.PROXY_HOST}:${process.env.PROXY_PORT}`,
        username: process.env.PROXY_USERNAME,
        password: process.env.PROXY_PASSWORD,
      }
  });

  const page = await context.newPage();
  await page.goto('https://www.example.com');
  console.log(await page.title());

  await browser.close();
}

scrapeWebsite();

Таблиця порівняння: Конфігурація проксі

Функція Axios Puppeteer Playwright
Конфігурація Опція proxy у конфігурації запиту Аргумент запуску --proxy-server, page.authenticate() Опція proxy у launch або newContext
Автентифікація username та password у proxy page.authenticate() username та password у proxy
Підтримка HTTPS Так, та ж конфігурація, що й HTTP Так, використовуйте https:// у --proxy-server Так, та ж конфігурація, що й HTTP
Проксі для кожного запиту Ні, глобально для екземпляра Axios Ні, глобально для екземпляра браузера Так, використовуючи контексти браузера

Найкращі практики

  • Використовуйте змінні середовища: Зберігайте облікові дані проксі у змінних середовища, щоб уникнути їх жорсткого кодування у вашому коді.
  • Обробляйте помилки: Реалізуйте обробку помилок для коректного управління проблемами з підключенням до проксі.
  • Ротуйте проксі: Для веб-скрейпінгу часто ротуйте проксі, щоб уникнути блокування IP-адрес. Розгляньте можливість використання пулу проксі.
  • Тестуйте своє налаштування: Перевірте, чи правильно працює ваш проксі, перевіривши свою IP-адресу через проксі. Використовуйте такі вебсайти, як whatismyipaddress.com{rel="nofollow"}.
  • Безпечні проксі: Використовуйте безпечні проксі (HTTPS або SOCKS5) для шифрування вашого трафіку.
  • Юридичні аспекти: Переконайтеся, що ваша діяльність з веб-скрейпінгу відповідає умовам надання послуг цільового вебсайту та всім чинним законам.

Висновок

Налаштування проксі в Node.js за допомогою таких бібліотек, як axios, Puppeteer та Playwright, є важливим для різних завдань, включаючи веб-скрейпінг, обхід географічних обмежень та підвищення конфіденційності. Кожна бібліотека пропонує різні підходи до конфігурації проксі, при цьому Playwright надає найбільш гнучкий та прямий метод, особливо для автентифікованих проксі та конфігурацій для кожного контексту. Дотримуючись найкращих практик, викладених у цій статті, ви зможете ефективно використовувати проксі у своїх застосунках Node.js.

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

Читайте також

Гайды 1 хв

Налаштування проксі в Cypress для E2E тестування

Налаштування проксі в Cypress: змінні HTTP_PROXY, cy-proxy-middleware та тестування геозалежного контенту.

Гайды 1 хв

Як автоматизувати купівлю проксі через API

Автоматизація купівлі та управління проксі через API провайдерів: інтеграція, моніторинг використання та автопоновлення.

Гайды 1 хв

Створення інформаційної панелі моніторингу проксі в Grafana

Покрокове створення інформаційної панелі для моніторингу проксі в Grafana: метрики,

Гайды 1 хв

Як тестувати проксі перед покупкою

Чек-лист тестування проксі перед покупкою: швидкість, стабільність, анонімність, гео та сумісність з ціллю

Гайды 1 хв

Як налаштувати липкі сесії через проксі

Липкі сесії: підтримка однієї IP-адреси протягом усієї сесії, налаштовуються через провайдера та самостійно.

Гайды 1 хв

Використання проксі з Camoufox

Camoufox — це модифікований Firefox для обходу антиботів. Налаштування проксі, відбиток та режим невидимості.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.