Puppeteer controls Chrome/Chromium through DevTools Protocol. Configure SOCKS5 proxies with authentication for headless browser automation.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: true,
args: [
'--proxy-server=socks5://proxy.proxies.sx:10001'
]
});
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();
})();const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: 'new',
args: [
'--proxy-server=http://proxy.proxies.sx:10001',
'--disable-web-security',
'--disable-features=IsolateOrigins,site-per-process'
]
});
const page = await browser.newPage();
// Must authenticate before navigation
await page.authenticate({
username: 'your_username',
password: 'your_password'
});
// Set viewport and user agent
await page.setViewport({ width: 1920, height: 1080 });
await page.setUserAgent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
);
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'screenshot.png' });
await browser.close();
})();const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
// Add stealth plugin
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({
headless: true,
args: [
'--proxy-server=socks5://proxy.proxies.sx:10001',
'--disable-blink-features=AutomationControlled',
'--no-sandbox',
'--disable-setuid-sandbox'
]
});
const page = await browser.newPage();
await page.authenticate({
username: 'your_username',
password: 'your_password'
});
// Additional stealth measures
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined,
});
});
await page.goto('https://bot.sannysoft.com');
await page.screenshot({ path: 'stealth-test.png', fullPage: true });
await browser.close();
})();const puppeteer = require('puppeteer');
class ProxyRotator {
constructor(ports, username, password) {
this.ports = ports;
this.username = username;
this.password = password;
this.currentIndex = 0;
}
getNextProxy() {
const port = this.ports[this.currentIndex];
this.currentIndex = (this.currentIndex + 1) % this.ports.length;
return `socks5://proxy.proxies.sx:${port}`;
}
async createPage() {
const proxy = this.getNextProxy();
const browser = await puppeteer.launch({
headless: true,
args: [`--proxy-server=${proxy}`]
});
const page = await browser.newPage();
await page.authenticate({
username: this.username,
password: this.password
});
return { browser, page };
}
}
// Usage
const rotator = new ProxyRotator(
[10001, 10002, 10003, 10004, 10005],
'your_username',
'your_password'
);
(async () => {
for (let i = 0; i < 5; i++) {
const { browser, page } = await rotator.createPage();
await page.goto('https://httpbin.org/ip');
const ip = await page.$eval('body', el => el.textContent);
console.log(`Request ${i + 1}: ${ip}`);
await browser.close();
}
})();import puppeteer, { Browser, Page } from 'puppeteer';
interface ProxyConfig {
server: string;
username: string;
password: string;
}
async function createProxiedBrowser(proxy: ProxyConfig): Promise<Browser> {
return await puppeteer.launch({
headless: true,
args: [`--proxy-server=${proxy.server}`]
});
}
async function createAuthenticatedPage(
browser: Browser,
proxy: ProxyConfig
): Promise<Page> {
const page = await browser.newPage();
await page.authenticate({
username: proxy.username,
password: proxy.password
});
return page;
}
// Usage
const proxyConfig: ProxyConfig = {
server: 'socks5://proxy.proxies.sx:10001',
username: 'your_username',
password: 'your_password'
};
(async () => {
const browser = await createProxiedBrowser(proxyConfig);
const page = await createAuthenticatedPage(browser, proxyConfig);
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();
})();The stealth plugin patches many detection vectors. Essential for sites with advanced bot protection.
Always call page.authenticate() before page.goto(). Proxy auth must be set before the first network request.
Set headless: 'new' for the newer headless implementation with better compatibility and fewer detection issues.
Always call browser.close() to clean up resources. Use try/finally or wrapper functions to ensure cleanup.
Get mobile proxies for reliable Chrome automation.