Як використовувати Proxy з Puppeteer: повний гайд
Налаштуйте 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 та обмежень частоти запитів. Пул 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 для кожного акаунта.
FAQ
Чи можу я змінити проксі без перезапуску браузера? +
Чи працює puppeteer-extra-plugin-stealth з проксі? +
Як мені обробляти тайм-аути проксі? +
page.setDefaultNavigationTimeout(30000) і оберніть навігацію в блоки try/catch. Інфраструктура GProxy є високонадійною, але можуть виникати мережеві затримки.Чи Puppeteer швидший за Selenium? +
Готові спробувати?
Почніть з GProxy за хвилини — резидентні проксі від $0.85/GB, IPv6 від $0.03/проксі, оплата за використання.
