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:10000.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:10000",
"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:10000"],
});
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:10000"}
)
// Puppeteer
const browser = await puppeteer.launch({
args: ["--proxy-server=gateway.proxyrotator.com:10000"],
});
// 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:10000 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.
Running more than one tool against the same gateway is normal. These cover the others.
Create an account, grab your gateway credentials, and drive headless browsers through a 100M+ IP pool. Plans from $24.95/mo.