Puppeteer
Puppeteer needs two pieces: --proxy-server at launch, plus page.authenticate() for credentials.
Basic setup
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({
args: ["--proxy-server=http://gate.helodata.io:7777"],
});
const page = await browser.newPage();
await page.authenticate({
username: "helo_s1a2b3c4d5e-type-res-region-us",
password: "PASSWORD",
});
await page.goto("https://ipv4.icanhazip.com");
console.log(await page.content());
await browser.close();page.authenticate() handles the proxy-auth dialog transparently.
ISP
Per-page proxy via puppeteer-extra-plugin-proxy
The official Puppeteer can't change proxy mid-session — once Chromium launches with --proxy-server, that's it. To rotate per-page, use the puppeteer-page-proxy plugin:
useProxy() can be called repeatedly to switch the page's proxy between requests.
ISP rotation example
Verify
Common pitfalls
page.authenticate()not set beforepage.goto()— the first request will block on the auth dialog. Always callauthenticate()immediately afternewPage().puppeteer-extra-plugin-stealthmasks the browser fingerprint but does NOT change IP — combine with helodata for full coverage.Same proxy across all pages when using
--proxy-serveralone — for per-page proxies use the plugin above.
Last updated
Was this helpful?