Перейти до вмісту

Як використовувати Proxy з Puppeteer: повний гайд

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 та обмежень частоти запитів. Пул 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.

Stealth та захист від виявлення

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

Оптимізація продуктивності

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

Сценарії використання

SPA Scraping

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

Screenshot Services

Генерація скріншотів вебсайтів з різних країн за допомогою геотаргетованих proxy.

Price Comparison

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

Social Media Automation

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

Поради професіоналів
Використовуйте browser contexts замість нових екземплярів браузера для швидшої ротації proxy. Блокуйте зображення та шрифти через перехоплення запитів, щоб економити пропускну здатність. Встановіть viewport на 1920x1080, щоб уникнути виявлення мобільних пристроїв. Поєднуйте stealth plugin з GProxy residential IPs для максимального уникнення блокувань.

FAQ

Чи можу я змінити проксі без перезапуску браузера? +
Ви можете створювати нові контексти браузера з різною автентифікацією, але proxy сервер встановлюється під час запуску. Для різних кінцевих точок проксі запускайте кілька браузерів.
Чи працює puppeteer-extra-plugin-stealth з проксі? +
Так, stealth плагін повністю сумісний з конфігураціями proxy. Він виправляє відбитки браузера, поки ваш proxy обробляє ротацію 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 mode та proxy authentication.
GProxy + Scrapy
Дізнайтеся, як налаштувати GProxy residential та datacenter proxy з Scrapy для масштабного web scraping. Охоплює налаштування middleware, proxy rotation та error handling.
GProxy + cURL
Використовуйте GProxy proxy з cURL для HTTP-запитів через командний рядок. Охоплює типи proxy HTTP, HTTPS, SOCKS5, аутентифікацію та розширені опції.
GProxy + Postman
Налаштуйте GProxy proxy у Postman для API тестування з різних локацій. Охоплює глобальні proxy налаштування, конфігурацію для кожного запиту та змінні оточення.
GProxy + n8n
Маршрутизуйте HTTP requests у n8n workflow через GProxy proxies. Охоплює конфігурацію HTTP Request node, environment variables та automation patterns.
support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.