For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 before page.goto() — the first request will block on the auth dialog. Always call authenticate() immediately after newPage().

  • puppeteer-extra-plugin-stealth masks the browser fingerprint but does NOT change IP — combine with helodata for full coverage.

  • Same proxy across all pages when using --proxy-server alone — for per-page proxies use the plugin above.

Last updated

Was this helpful?