Перейти к основному содержанию
Puppeteer - это библиотека Node.js, которая предоставляет высокоуровневый API для управления headless Chrome или Chromium. Она незаменима для парсинга современных сайтов на JavaScript (одностраничных приложений). Интеграция прокси Catproxy с Puppeteer требует передачи специального аргумента --proxy-server при запуске браузера.

Базовая настройка

Вот как запустить экземпляр Puppeteer, который направляет весь свой трафик через наш прокси-шлюз.
Вам понадобится puppeteer, установленный в вашем проекте: npm install puppeteer
basic_setup.js
Важно: Puppeteer требует аутентификации для каждой страницы с помощью page.authenticate(). Вы должны вызывать этот метод для каждой новой страницы (browser.newPage()), которую вы открываете.

Пример из реальной практики: скриншот результатов поиска Amazon

Чаще всего Puppeteer используют для того, чтобы отобразить полную страницу с динамическим содержимым и сделать снимок экрана - например, для мониторинга рейтинга товаров или результатов поиска на крупном сайте электронной коммерции, таком как Amazon. Давайте сделаем скриншот результатов поиска по запросу “web scraping books” на amazon.com, при этом запрос будет выглядеть так, как будто он поступает из США.
amazon_scraper.js
Amazon - сложная цель! Они применяют продвинутые меры защиты от ботов. Хотя этот скрипт работает, для масштабного парсинга вам может потребоваться реализовать более продвинутые техники: ротацию User-Agents, обработку CAPTCHA и имитацию поведения реального пользователя (случайные задержки, движения мыши).

Что демонстрирует этот пример

  • Парсинг реального сложного сайта: Как подойти к такому крупному объекту, как Amazon.
  • Аутентификация через прокси в Puppeteer: Правильный двухэтапный процесс установки --proxy-server и использования page.authenticate().
  • Динамический геотаргетинг: Показывает, как изменить ваше видимое местоположение, изменив имя пользователя.
  • Имитация реального пользователя: Демонстрирует лучшие практики, такие как установка реалистичного viewport и User-Agent, чтобы снизить вероятность обнаружения анти-ботами.
  • Обработка ошибок: Включает блок try...catch и сохраняет HTML страницы при неудаче - важный прием для отладки проблем со парсингом.