Skip to content
Intermediate / 2 min read

Как использовать резидентные прокси Dataimpulse с Puppeteer для веб-скрапинга на Linux

Узнайте, как интегрировать резидентные прокси Dataimpulse с Puppeteer на Linux для надежного крупномасштабного веб-скрапинга. Это пошаговое руководство охватывает установку, аутентификацию и ротацию IP.

Linux HTTP(S) Веб-скрейпинг

Обзор

Puppeteer — это библиотека Node.js, предоставляющая высокоуровневый API для управления headless-браузером Chrome или Chromium. При масштабном скрапинге использование резидентных прокси, таких как Dataimpulse, помогает избежать блокировок по IP и ограничений скорости. В этом руководстве показано, как настроить Puppeteer для маршрутизации трафика через резидентные прокси Dataimpulse в системе Linux. Мы рассмотрим аутентификацию HTTP-прокси, тестирование и базовую ротацию.

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

Перед началом убедитесь, что у вас есть:

  • Машина с Linux (Ubuntu 20.04+ или аналогичная).
  • Установленные Node.js 14+ и npm.
  • Аккаунт Dataimpulse с учетными данными резидентного прокси (имя пользователя, пароль, эндпоинт, порт). Вы можете зарегистрироваться на тарифный план с оплатой по мере использования на сайте Dataimpulse.
  • Базовое знакомство с командной строкой и JavaScript.

Шаг 1: Установка Node.js и Puppeteer на Linux

Сначала обновите список пакетов и установите Node.js, если вы еще этого не сделали.

sudo apt update
sudo apt install -y nodejs npm

Проверьте установку:

node --version
npm --version

Создайте новый каталог проекта и инициализируйте его:

mkdir puppeteer-dataimpulse
cd puppeteer-dataimpulse
npm init -y

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

npm install puppeteer

Примечание: Puppeteer по умолчанию загружает совместимый бинарный файл Chromium. В Linux может потребоваться установка дополнительных зависимостей. Если вы столкнетесь с отсутствующими библиотеками, установите их:

sudo apt install -y libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libgtk-3-0

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

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

  • Хост прокси (эндпоинт, предоставленный Dataimpulse)
  • Порт (например, 823 для HTTP, 824 для SOCKS5)
  • Имя пользователя и пароль для аутентификации

Dataimpulse по умолчанию использует единый эндпоинт с ротацией IP. В этом руководстве мы будем использовать HTTP-эндпоинт. Замените заполнители в приведенном ниже коде на ваши фактические учетные данные.

Шаг 3: Настройка Puppeteer для использования прокси

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

const puppeteer = require('puppeteer');

(async () => {
  const proxyHost = 'your-proxy-host.dataimpulse.com'; // replace with your host
  const proxyPort = 823; // replace with your port
  const proxyUser = 'your_username';
  const proxyPass = 'your_password';

  const browser = await puppeteer.launch({
    headless: true, // or false for debugging
    args: [
      `--proxy-server=http://${proxyHost}:${proxyPort}`,
      '--no-sandbox',
      '--disable-setuid-sandbox'
    ]
  });

  const page = await browser.newPage();

  // Authenticate with the proxy
  await page.authenticate({
    username: proxyUser,
    password: proxyPass
  });

  // Navigate to a test page to verify the IP
  await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle2' });

  // Extract the IP address
  const ipInfo = await page.evaluate(() => document.body.innerText);
  console.log('Your IP address:', ipInfo);

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

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

node scrape.js

Если все успешно, вы увидите IP-адрес, отличный от вашего локального, принадлежащий пулу Dataimpulse.

Шаг 4: Обработка аутентификации прокси

Метод page.authenticate() в Puppeteer работает для HTTP-прокси. Однако, если вы используете SOCKS5-прокси, Puppeteer не поддерживает аутентификацию SOCKS5 напрямую. В этом случае вам может понадобиться локальный конвертер прокси, такой как gost или proxychains. В этом руководстве мы сосредоточимся на HTTP-прокси.

Если вы предпочитаете встроить учетные данные в URL прокси (некоторые конфигурации это позволяют), вы можете попробовать:

args: [
  `--proxy-server=http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort}`
]

Но учтите, что Chrome может не принимать учетные данные в URL по соображениям безопасности. Подход с page.authenticate() более надежен.

Шаг 5: Проверка подключения через прокси

Чтобы убедиться, что ваши запросы идут через прокси и IP-адреса ротируются, вы можете запустить скрипт несколько раз. Каждый запуск должен возвращать другой IP-адрес.

for i in {1..3}; do node scrape.js; done

Вы должны увидеть три разных IP-адреса. Это подтверждает, что ротация работает.

Шаг 6: Реализация ротации IP и управления сессиями (необязательно)

Dataimpulse позволяет управлять ротацией с помощью идентификатора сессии в имени пользователя. Точный синтаксис может различаться, поэтому обратитесь к своей панели управления Dataimpulse или документации для правильного формата. Обычно вы можете добавить ID сессии к имени пользователя, чтобы сохранить один и тот же IP для нескольких запросов, или опустить его, чтобы ротировать при каждом запросе.

В Puppeteer вы можете динамически задавать имя пользователя для каждого экземпляра браузера. Например, если вы хотите использовать закрепленную сессию (sticky session), вы можете использовать:

const sessionId = 'abc123'; // replace with your session ID
const proxyUser = `your_username-session-${sessionId}`;

Это позволяет поддерживать закрепленную сессию для задачи скрапинга, что может быть полезно для сайтов, которые отслеживают сессии.

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

  • Ошибки аутентификации: Убедитесь, что ваше имя пользователя и пароль верны. Если вы используете специальные символы, закодируйте их в URL.
  • Тайм-ауты соединения: Проверьте настройки брандмауэра и убедитесь, что порт прокси не заблокирован. Попробуйте другой порт, если он доступен.
  • Puppeteer не запускается: Установите отсутствующие зависимости. Запустите ldd chrome | grep not found, чтобы найти отсутствующие библиотеки (путь к Chrome может отличаться).
  • Прокси не ротируется: Убедитесь, что вы не используете имя пользователя с закрепленной сессией. Каждый запрос должен получать новый IP, если сессия не указана.
  • Ошибки SSL: Некоторые сайты могут отклонять прокси. Попробуйте добавить --ignore-certificate-errors в аргументы для тестирования (не рекомендуется для продакшена).

Резюме

В этом руководстве вы узнали, как интегрировать резидентные прокси Dataimpulse с Puppeteer на Linux. Вы установили Puppeteer, настроили аутентификацию прокси, протестировали ротацию IP и изучили управление сессиями. Эта конфигурация обеспечивает надежный крупномасштабный веб-скрапинг за счет распределения запросов по более чем 90 млн резидентных IP-адресов. Не забывайте соблюдать условия обслуживания веб-сайтов и robots.txt. Для других инструментов скрапинга те же учетные данные прокси работают с любым HTTP-клиентом.