Как использовать GProxy с Puppeteer: Complete Guide
Настройте GProxy proxy с Puppeteer для автоматизации headless Chrome. Рассматриваются proxy authentication, переключение proxy на уровне page и stealth техники.
Что вам понадобится
- ✓Установленный Node.js 16+
- ✓Установленный Puppeteer (npm install puppeteer)
- ✓Аккаунт GProxy с активным proxy-планом
- ✓Базовые знания JavaScript/async-await
Пошаговая настройка
Установить Puppeteer
Установить Puppeteer с помощью npm
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Запустить браузер с 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();
Авторизация в 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());
Добавить 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']
});
Блокировать ненужные ресурсы
Ускорить парсинг, блокируя изображения и шрифты
await page.setRequestInterception(true);
page.on('request', (req) => {
if (['image', 'font', 'stylesheet'].includes(req.resourceType()))
req.abort();
else
req.continue();
});
Протестировать и проверить
Подтвердить, что 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();
Примеры кода
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();
})();
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();
})();
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 для каждого аккаунта.
FAQ
Можно ли менять прокси без перезапуска браузера? +
Работает ли puppeteer-extra-plugin-stealth с прокси? +
Как обрабатывать таймауты прокси? +
page.setDefaultNavigationTimeout(30000) и оберните навигацию в блоки try/catch. Инфраструктура GProxy обладает высокой доступностью, но возможны сетевые задержки.Puppeteer быстрее, чем Selenium? +
Готовы попробовать?
Начните с GProxy за минуты — резидентные прокси от $0.85/GB, IPv6 от $0.03/прокси, оплата по факту использования.
