proxys.store

Proxies in Playwright

The proxy is set at browser launch or per context, and the credentials are separate fields rather than part of the address.

Launching with a proxy

The server field takes only the scheme, host and port. Playwright expects the credentials separately, in username and password: a http://login:password@host string will not work here.

import { chromium } from "playwright";

const browser = await chromium.launch({
  proxy: {
    server: "http://gw.dataimpulse.com:823",
    username: "LOGIN__cr.de",
    password: "PASSWORD",
  },
});

const page = await browser.newPage();
await page.goto("https://ipinfo.io/json");
console.log(await page.textContent("body"));
await browser.close();

Several countries in one process

browser.newContext accepts the same proxy object, so one running browser can hold several contexts in different countries — the country lives in the username field, as the __cr suffix on the login.

Contexts are isolated by cookies and storage, so sessions will not bleed into each other. If a context needs a stable address, put a sticky port from 10000–20000 in server, a different one for each.

Read next