Перейти к содержимому

Как использовать GProxy с Puppeteer: Complete Guide

TL;DR

Настройте GProxy proxy с Puppeteer для автоматизации headless Chrome. Рассматриваются proxy authentication, переключение proxy на уровне page и stealth техники.

Язык: JavaScript

Что вам понадобится

  • Установленный Node.js 16+
  • Установленный Puppeteer (npm install puppeteer)
  • Аккаунт GProxy с активным proxy-планом
  • Базовые знания JavaScript/async-await

Пошаговая настройка

1

Установить Puppeteer

Установить Puppeteer с помощью npm

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
2

Запустить браузер с proxy

Настроить Chrome с GProxy proxy

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy.gproxy.net:1000']
});
const page = await browser.newPage();
3

Авторизация в proxy

Установить учетные данные proxy с помощью page.authenticate()

await page.authenticate({
  username: 'YOUR_USERNAME',
  password: 'YOUR_PASSWORD'
});

await page.goto('https://httpbin.org/ip');
console.log(await page.content());
4

Добавить stealth плагин

Использовать puppeteer-extra-plugin-stealth, чтобы избежать обнаружения

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy.gproxy.net:1000']
});
5

Блокировать ненужные ресурсы

Ускорить парсинг, блокируя изображения и шрифты

await page.setRequestInterception(true);
page.on('request', (req) => {
  if (['image', 'font', 'stylesheet'].includes(req.resourceType()))
    req.abort();
  else
    req.continue();
});
6

Протестировать и проверить

Подтвердить, что proxy работает корректно

await page.goto('https://httpbin.org/ip');
const body = await page.evaluate(() => document.body.innerText);
console.log('Current IP:', JSON.parse(body).origin);
await browser.close();

Примеры кода

Базовый Puppeteer с GProxy · javascript
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--proxy-server=http://proxy.gproxy.net:1000']
  });

  const page = await browser.newPage();
  await page.authenticate({
    username: 'YOUR_USER',
    password: 'YOUR_PASS'
  });

  await page.goto('https://httpbin.org/ip');
  const ip = await page.evaluate(() => document.body.innerText);
  console.log('Proxy IP:', JSON.parse(ip).origin);

  await browser.close();
})();
Конкурентный парсинг с ротацией · javascript
const puppeteer = require('puppeteer');

async function scrapeUrl(browser, url) {
  const context = await browser.createBrowserContext();
  const page = await context.newPage();
  await page.authenticate({ username: 'USER', password: 'PASS' });
  
  try {
    await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
    const title = await page.title();
    return { url, title };
  } finally {
    await context.close();
  }
}

(async () => {
  const browser = await puppeteer.launch({
    args: ['--proxy-server=http://proxy.gproxy.net:1000']
  });

  const urls = ['https://example.com', 'https://example.org'];
  const results = await Promise.all(urls.map(u => scrapeUrl(browser, u)));
  console.log(results);

  await browser.close();
})();
Stealth + гео-таргетированный парсинг · javascript
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--proxy-server=http://proxy.gproxy.net:1000']
  });

  const page = await browser.newPage();
  // Use country-targeted credentials
  await page.authenticate({
    username: 'USER-country-de',
    password: 'PASS'
  });

  await page.setViewport({ width: 1920, height: 1080 });
  await page.goto('https://www.google.de/search?q=proxy+service');
  
  const results = await page.evaluate(() => {
    return [...document.querySelectorAll('h3')].map(h => h.textContent);
  });
  console.log('German SERP results:', results);

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

Почему стоит использовать proxy с Puppeteer?

Puppeteer — это официальная библиотека Node.js от Google для управления headless Chrome. Она широко используется для веб-скрапинга, тестирования и автоматизации. При масштабируемом доступе к веб-сайтам вам необходимы proxy, чтобы избежать блокировок по IP и ограничений скорости (rate limits). Пул GProxy, состоящий из 10M+ резидентных IP в 150+ странах, позволяет вашим скриптам Puppeteer выглядеть как реальные пользователи из любого местоположения.

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

Puppeteer поддерживает конфигурацию proxy через аргументы запуска Chrome. Передайте --proxy-server при запуске браузера. Для HTTP proxy от GProxy формат предельно прост. В отличие от Selenium, Puppeteer дает вам программный контроль над аутентификацией proxy через метод page.authenticate(), избавляя от необходимости использовать расширения браузера.

Аутентификация proxy для каждой страницы

Метод page.authenticate() в Puppeteer элегантно обрабатывает аутентификацию proxy. Вызовите его перед переходом на страницу, чтобы установить учетные данные, которые будут автоматически отправляться при запросе аутентификации со стороны proxy. Это работает с аутентификацией по username/password от GProxy «из коробки».

Стратегии ротации proxy

С Puppeteer у вас есть две стратегии ротации: на уровне браузера (запуск нового браузера для каждого proxy) и на уровне контекста (создание новых инкогнито-контекстов). Контексты браузера легче, чем полные экземпляры браузера, и поддерживают различные конфигурации proxy для каждого контекста, что делает их идеальными для параллельного скрапинга с использованием разных IP.

Стелс-режим и защита от обнаружения

Современные веб-сайты используют фингерпринтинг для обнаружения автоматизированных браузеров. Сочетайте резидентные proxy GProxy с puppeteer-extra и плагином stealth, чтобы избежать обнаружения. Плагин stealth исправляет распространенные векторы обнаружения, такие как navigator.webdriver, chrome.runtime и фингерпринты WebGL.

Оптимизация производительности

Оптимизируйте Puppeteer с proxy следующими способами: блокируйте ненужные ресурсы (изображения, шрифты, CSS) с помощью перехвата запросов, устанавливайте соответствующие тайм-ауты, повторно используйте экземпляры браузера с новыми страницами и используйте дата-центр proxy от GProxy для задач скрапинга, не чувствительных к блокировкам, где важна скорость.

Сценарии применения

SPA Scraping

Скрапинг одностраничных приложений, требующих выполнения JavaScript для отображения контента.

Screenshot Services

Генерация скриншотов веб-сайтов из разных стран с использованием гео-таргетированных прокси.

Price Comparison

Мониторинг цен конкурентов в разных регионах с помощью локальных резидентных IP.

Social Media Automation

Автоматизация рабочих процессов в социальных сетях с уникальными IP для каждого аккаунта.

Pro советы
Используйте контексты браузера вместо новых экземпляров браузера для более ротации proxy. Блокируйте изображения и шрифты через перехват запросов для экономии трафика. Установите viewport на 1920x1080, чтобы избежать мобильного обнаружения. Комбинируйте stealth плагин с резидентными IP GProxy для максимального уклонения от блокировок.

FAQ

Можно ли менять прокси без перезапуска браузера? +
Вы можете создавать новые контексты браузера с разной аутентификацией, но прокси-сервер устанавливается при запуске. Для использования разных эндпоинтов прокси запускайте несколько браузеров.
Работает ли puppeteer-extra-plugin-stealth с прокси? +
Да, stealth плагин полностью совместим с конфигурациями прокси. Он маскирует отпечатки браузера, пока ваш прокси обрабатывает ротацию IP.
Как обрабатывать таймауты прокси? +
Установите page.setDefaultNavigationTimeout(30000) и оберните навигацию в блоки try/catch. Инфраструктура GProxy обладает высокой доступностью, но возможны сетевые задержки.
Puppeteer быстрее, чем Selenium? +
В целом да — Puppeteer взаимодействует с Chrome через DevTools Protocol, который быстрее, чем протокол WebDriver в Selenium. Оба инструмента отлично работают с прокси GProxy.

Готовы попробовать?

Начните с GProxy за минуты — резидентные прокси от $0.85/GB, IPv6 от $0.03/прокси, оплата по факту использования.

Другие интеграции

GProxy + Playwright
Настройте GProxy proxy с Playwright для автоматизации в различных браузерах. Поддерживается переключение proxy для каждого контекста, Chrome/Firefox/WebKit и встроенная аутентификация.
GProxy + Selenium
Настройте GProxy proxy с Selenium WebDriver для автоматизации браузера и парсинга. Охватывает Chrome, Firefox, headless режим и proxy аутентификацию.
GProxy + Scrapy
Узнайте, как настроить GProxy residential и datacenter proxy с Scrapy для крупномасштабного web scraping. Рассматриваются настройка middleware, rotation proxy и обработка ошибок.
GProxy + cURL
Используйте GProxy proxy с cURL для HTTP-запросов через командную строку. Охватывает типы proxy HTTP, HTTPS, SOCKS5, аутентификацию и продвинутые опции.
GProxy + Postman
Настройте GProxy proxy в Postman для API тестирования из различных локаций. Охватывает глобальные proxy settings, конфигурацию per-request и environment variables.
GProxy + n8n
Направляйте HTTP requests из workflow n8n через GProxy proxy. Охватывает конфигурацию HTTP Request node, environment variables и паттерны автоматизации.
support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.