Both Playwright and Puppeteer support proxy authentication natively, so Proxy Rotator drops in with a few lines. Get a fresh IP per request from a 100M+ pool of residential, datacenter, mobile and IPv6 proxies, with no extra packages and no auth popups to handle.
Plans from $24.95/mo New IP per request HTTPS & SOCKS5
Headless browser automation needs IPs that look real and rotate cleanly. The gateway does the rotation for you.
The gateway picks a fresh exit IP for each request, so your headless sessions blend into normal traffic.
Hold one IP through a multi-step flow with a sticky session, or rotate for high-volume collection.
Residential, datacenter, mobile and IPv6 in one pool, switchable from your dashboard with no code change.
Playwright takes username and password in launch(); Puppeteer uses page.authenticate(). No extra packages.
Render localized pages by targeting a country, and a city on residential IPs.
Thread-based plans handle many concurrent browser contexts, from small jobs to production workloads.
gateway.proxyrotator.com:8080.pip install playwright) or Puppeteer (npm i puppeteer).Throughout this guide, replace USER:PASS with your real gateway credentials.
Both frameworks support authenticated proxies natively, so user:pass needs no workaround.
Pass the gateway server, username and password in the proxy option of launch(). Playwright sends the credentials for you.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(
proxy={
"server": "http://gateway.proxyrotator.com:8080",
"username": "USER",
"password": "PASS",
}
)
page = browser.new_page()
page.goto("https://api.ipify.org")
print(page.inner_text("body")) # exit IP
browser.close()
Puppeteer sets the proxy server on launch, then authenticates per page with page.authenticate().
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({
args: ["--proxy-server=gateway.proxyrotator.com:8080"],
});
const page = await browser.newPage();
await page.authenticate({ username: "USER", password: "PASS" });
await page.goto("https://api.ipify.org");
console.log(await page.evaluate(() => document.body.innerText)); // exit IP
await browser.close();
Prefer not to embed credentials? Whitelist your server IP in the dashboard, then drop the username and password. The gateway authorizes your IP directly.
# Playwright
browser = p.chromium.launch(
proxy={"server": "http://gateway.proxyrotator.com:8080"}
)
// Puppeteer
const browser = await puppeteer.launch({
args: ["--proxy-server=gateway.proxyrotator.com:8080"],
});
// no page.authenticate() needed when IP is whitelisted
Confirm the gateway is reachable and rotating from the command line before launching a browser.
curl -x http://USER:PASS@gateway.proxyrotator.com:8080 https://api.ipify.org # run it again, you get a different IP
A different IP on each run confirms your credentials work and the gateway is rotating.
For headless flows that span a login and several navigations, sticky proxies keep the same IP across the session. For broad collection where each context can come from a different IP, use rotating proxies and let the gateway hand out a new IP per request. Switch between them from your dashboard without changing your launch code.
Create an account, grab your gateway credentials, and drive headless browsers through a 100M+ IP pool. Plans from $24.95/mo.