Skip to content
Intermediate / 2 min read

Как использовать резидентные прокси ProxyScrape с Puppeteer для веб-скрейпинга в Node.js

Пошаговое руководство по интеграции резидентных и датацентровых прокси ProxyScrape с Puppeteer в Node.js. Узнайте о настройке HTTP-прокси, аутентификации, ротации и мосте SOCKS5 для продвинутого скрейпинга.

Windows macOS Linux Веб-скрейпинг

Обзор

ProxyScrape предлагает резидентные, датацентровые и мобильные прокси с поддержкой HTTP и SOCKS5. В сочетании с Puppeteer, headless-браузером Chrome для Node.js, вы можете автоматизировать веб-скрейпинг в масштабе, направляя трафик через пул из более чем 97 млн IP-адресов. В этом руководстве показано, как настроить прокси ProxyScrape в Puppeteer, пройти аутентификацию, ротировать IP-адреса и обрабатывать распространённые ошибки.

Предварительные требования

  • Установленный Node.js 16 или более поздней версии. Вы можете скачать его с официального сайта Node.js.
  • Аккаунт ProxyScrape с резидентными или датацентровыми прокси. Подойдёт бесплатный пробный период или платный план.
  • Базовое знакомство с JavaScript и командной строкой.

Шаг 1: Создание нового проекта Node.js

Откройте терминал и выполните:

mkdir puppeteer-proxyscrape
cd puppeteer-proxyscrape
npm init -y
npm install puppeteer

Это создаёт папку проекта и устанавливает Puppeteer. Обратите внимание, что Puppeteer автоматически загружает совместимую сборку Chromium.

Шаг 2: Получение данных вашего прокси ProxyScrape

Войдите в панель управления ProxyScrape. Перейдите в раздел списка прокси. Вы увидите данные для подключения для каждого типа прокси:

  • Резидентные прокси: Ротационные или sticky-сессии с аутентификацией по имени пользователя и паролю.
  • Датацентровые прокси: Статические IP-адреса, также с аутентификацией.

Запишите следующие данные для выбранного прокси:

  • Хост (например, gateway.proxyscrape.com — точный хост уточните в панели управления)
  • Порт (например, 8000 для HTTP, 1080 для SOCKS5 — также подтвердите в панели управления)
  • Имя пользователя
  • Пароль

ProxyScrape обычно предоставляет HTTP- и SOCKS5-эндпоинты. В этом руководстве мы начнём с HTTP.

Шаг 3: Запуск Puppeteer с HTTP-прокси

Создайте файл с именем scrape.js и добавьте следующий код. Замените заполнители на ваши реальные данные прокси.

const puppeteer = require('puppeteer');

(async () => {
  const proxyHost = 'gateway.proxyscrape.com';
  const proxyPort = '8000';
  const proxyUser = 'your_username';
  const proxyPass = 'your_password';

  const browser = await puppeteer.launch({
    headless: true,
    args: [
      `--proxy-server=http://${proxyHost}:${proxyPort}`
    ]
  });

  const page = await browser.newPage();

  // Аутентификация с прокси
  await page.authenticate({
    username: proxyUser,
    password: proxyPass
  });

  // Проверка IP прокси
  await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle0' });
  const content = await page.content();
  console.log(content);

  await browser.close();
})();

Запустите скрипт:

node scrape.js

Вы должны увидеть IP-адрес, используемый прокси, вместо вашего реального IP.

Шаг 4: Ротация прокси с помощью списка

Резидентные прокси ProxyScrape часто поддерживают ротацию сессий с помощью разных имён пользователей или идентификаторов сессий. Распространённый подход — перебор списка эндпоинтов прокси. Вот пример, который переключается между двумя прокси.

const proxies = [
  { host: 'gateway.proxyscrape.com', port: '8000', user: 'user1', pass: 'pass1' },
  { host: 'gateway.proxyscrape.com', port: '8000', user: 'user2', pass: 'pass2' }
];

(async () => {
  for (const proxy of proxies) {
    const browser = await puppeteer.launch({
      headless: true,
      args: [`--proxy-server=http://${proxy.host}:${proxy.port}`]
    });
    const page = await browser.newPage();
    await page.authenticate({ username: proxy.user, password: proxy.pass });

    await page.goto('https://httpbin.org/ip');
    const ip = await page.evaluate(() => document.body.innerText);
    console.log(`Proxy IP: ${ip}`);

    await browser.close();
  }
})();

Для крупномасштабной ротации рассмотрите использование менеджера прокси или библиотеки вроде proxy-chain для централизованной обработки аутентификации и ротации.

Шаг 5: Использование SOCKS5-прокси с Puppeteer (продвинутый уровень)

Chromium, браузер, лежащий в основе Puppeteer, не поддерживает аутентифицированные SOCKS5-прокси нативно. Если вам необходимо использовать SOCKS5-эндпоинты ProxyScrape, вы можете запустить локальный HTTP-прокси, который перенаправляет трафик на SOCKS5. Один из вариантов — использовать npm-пакет proxy-chain.

Установите его:

npm install proxy-chain

Затем создайте локальный прокси-сервер:

const ProxyChain = require('proxy-chain');

(async () => {
  const socksUrl = 'socks5://username:[email protected]:1080';
  const localHttpProxy = await ProxyChain.anonymizeProxy(socksUrl);
  console.log(`Local HTTP proxy: ${localHttpProxy}`);

  // Передайте localHttpProxy как --proxy-server в Puppeteer
  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=${localHttpProxy}`]
  });

  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.content());
  await browser.close();
})();

Это создаёт мост между аутентифицированным SOCKS5 и неаутентифицированным локальным HTTP-прокси, который может использовать Chromium.

Устранение неполадок

  • ERR_PROXY_CONNECTION_FAILED: Проверьте хост и порт. Убедитесь, что ваш IP внесён в белый список, если вы используете аутентификацию по IP. ProxyScrape по умолчанию использует имя пользователя/пароль, но перепроверьте в панели управления.
  • Всплывающее окно аутентификации / ошибка 407: Убедитесь, что вы вызываете page.authenticate() перед навигацией.
  • Медленные ответы: Попробуйте датацентровый прокси для скорости или резидентный прокси для скрытности. Настройте тайм-ауты в Puppeteer.
  • SOCKS5 не работает: Помните, что Chromium не поддерживает аутентификацию SOCKS5 напрямую. Используйте обходной путь с proxy-chain, описанный выше.

Итог

Вы узнали, как настроить резидентные и датацентровые прокси ProxyScrape с Puppeteer в Node.js. Мы рассмотрели настройку HTTP-прокси, аутентификацию, ротацию и мост SOCKS5 для продвинутых сценариев. Благодаря надёжной инфраструктуре, пулу из более чем 97 млн IP-адресов и стабильному времени безотказной работы ProxyScrape является отличным выбором для проектов веб-скрейпинга.