WHY PUPPETEER + PROXY POLAND
Puppeteer is Google's official Node.js library for controlling headless Chrome. Combined with Proxy Poland's dedicated 4G mobile proxies, Puppeteer becomes a powerful tool for web scraping, testing, and automation that bypasses even the most aggressive anti-bot systems.
SETUP INSTRUCTIONS
Install Puppeteer
Install Puppeteer in your Node.js project:
npm install puppeteer # or for minimal install: npm install puppeteer-core
Get Proxy Credentials
Sign up at proxypoland.com and get your proxy IP, port, username, and password from the dashboard.
Basic Proxy Setup
Launch Puppeteer with SOCKS5 proxy:
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({
args: [
'--proxy-server=socks5://proxy-ip:port',
'--no-sandbox',
],
});
const page = await browser.newPage();
// Authenticate with proxy
await page.authenticate({
username: 'your-username',
password: 'your-password',
});
await page.goto('https://httpbin.org/ip');
const content = await page.content();
console.log(content);
await browser.close();HTTP Proxy Alternative
Using HTTP proxy with authentication:
const browser = await puppeteer.launch({
args: ['--proxy-server=http://proxy-ip:port'],
});
const page = await browser.newPage();
await page.authenticate({
username: 'your-username',
password: 'your-password',
});
await page.goto('https://example.com');Stealth Mode + Proxy
Use puppeteer-extra for stealth browsing:
const puppeteer = require('puppeteer-extra');
const StealthPlugin =
require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({
args: ['--proxy-server=socks5://proxy-ip:port'],
headless: 'new',
});
const page = await browser.newPage();
await page.authenticate({
username: 'user', password: 'pass'
});
// Now scrape with stealth + mobile proxy
await page.goto('https://target-site.com');IP Rotation Between Pages
Rotate IP using Proxy Poland's API:
const axios = require('axios');
async function rotateIP() {
const response = await axios.get(
'https://proxy-ip:port/rotate',
{ auth: { username: 'user', password: 'pass' } }
);
console.log('New IP:', response.data);
}
// Rotate between scraping sessions
await rotateIP();
await page.goto('https://next-target.com');Verify Proxy is Working
Quick test to confirm proxy connection:
const page = await browser.newPage();
await page.authenticate({
username: 'user', password: 'pass'
});
await page.goto('https://httpbin.org/ip');
const ip = await page.$eval(
'pre', el => el.textContent
);
console.log('Proxy IP:', JSON.parse(ip).origin);
// Should show Polish mobile IPPRO TIPS
Use puppeteer-extra-plugin-stealth for sites with advanced bot detection
Set viewport to mobile dimensions for mobile-specific scraping
Implement request interception to block unnecessary resources (images, CSS) for faster scraping
Use page.waitForNavigation() after actions to ensure pages fully load through the proxy
For high concurrency, launch multiple browser instances with different proxies
WORKS GREAT FOR
FAQ
Is Puppeteer better than Selenium for use with proxies?+
Puppeteer has native proxy support that's easier to configure than Selenium. It also has built-in page.authenticate() for proxy auth. For Node.js projects, Puppeteer is generally the better choice.
Can I run Puppeteer in headless mode with these proxies?+
Yes. Use headless: 'new' in launch options. The proxy works identically in headless and headed modes. For stealth, add puppeteer-extra-plugin-stealth.
How do I handle CAPTCHAs when scraping through mobile proxies?+
Mobile IPs significantly reduce CAPTCHA frequency. Most sites serve fewer CAPTCHAs to mobile carrier IPs. For remaining CAPTCHAs, integrate a solving service like 2Captcha or use stealth plugins.
Can I run multiple Puppeteer instances with different proxies?+
Yes. Launch separate browser instances, each with a different Proxy Poland proxy in the args. This is ideal for parallel scraping with IP isolation.
What about Playwright -- does it work with these proxies too?+
Yes. Playwright has built-in proxy support: browser.launch({ proxy: { server: 'socks5://ip:port', username: 'user', password: 'pass' } }). Same proxy credentials work with both Puppeteer and Playwright.