What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
To send website traffic from a Playwright render through your own proxy, set Playwright’s documented proxy option on browser launch or on the browser context that will load the page. Use the proxy endpoint supplied by your network or proxy administrator, and add credentials or bypass domains only if your setup requires them. This controls traffic from the running browser; proxying browser installation downloads is a separate configuration task.
Configure the proxy for the browser traffic you want to render
Playwright documents HTTP and SOCKS proxy server values, optional username and password fields, and optional comma-separated bypass domains. Its API describes the option as “Proxy to be used for all requests.” Use the endpoint and protocol provided by your proxy administrator; the example below uses an HTTP endpoint. See the Playwright BrowserType API for the current API details.
Apply one proxy when launching the browser
Set proxy in the options passed to chromium.launch() when all contexts created in that browser should use the same proxy.
const { chromium } = require('playwright');
async function main() {
const browser = await chromium.launch({
proxy: {
server: 'http://myproxy.example:3128',
username: process.env.PROXY_USER,
password: process.env.PROXY_PASSWORD,
bypass: 'localhost,.internal.example',
},
});
try {
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
console.log(await page.title());
} finally {
await browser.close();
}
}
main().catch(error => {
console.error(error);
process.exitCode = 1;
});
Replace the example endpoint and bypass list with values appropriate to your network. If the proxy does not require authentication, remove the username and password fields rather than supplying credentials. Keep actual credentials in environment variables or a secret manager, not in source control.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware match#1 Best Overall
Apply a proxy to one browser context
When only one isolated context should use the proxy, pass the option to browser.newContext() instead. This lets other contexts in the same browser be configured independently.
const { chromium } = require('playwright');
async function main() {
const browser = await chromium.launch();
try {
const context = await browser.newContext({
proxy: {
server: 'http://myproxy.example:3128',
username: process.env.PROXY_USER,
password: process.env.PROXY_PASSWORD,
bypass: 'localhost,.internal.example',
},
});
const page = await context.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
console.log(await page.title());
await context.close();
} finally {
await browser.close();
}
}
main().catch(error => {
console.error(error);
process.exitCode = 1;
});
The launch-level choice is convenient for a browser dedicated to one route or test environment. The context-level choice is more selective when an application needs separate sessions or network paths. The proxy configuration changes how the browser fetches page resources; it does not, by itself, configure unrelated Node.js requests made by your automation code.
Choose the endpoint, authentication, and bypass rules
Use the proxy’s actual protocol and address
The server value must identify a reachable proxy endpoint, not the website being rendered. Playwright’s API documents HTTP and SOCKS proxy server values. Use the scheme and port the endpoint operator specifies. A mismatch between the configured scheme and the service actually listening at that address can prevent the browser from connecting.
Supply credentials only when required
For an authenticated proxy, pass its username and password in the documented fields. Do not place production secrets directly in a committed script, print them in logs, or expose them in error reports. If access is denied, verify the credential values and whether the endpoint expects the authentication method supported by your proxy arrangement; the supplied Playwright API documentation establishes the username and password fields, not every proxy vendor’s authentication behavior.
Recommended Free Tools
Rank #2
Use bypass entries deliberately
The optional bypass value is a comma-separated list of domains to access without using the proxy. Add exceptions only when your network design needs them—for example, an internal host that must remain directly reachable. An overly broad bypass can cause selected page requests to leave through a different route than expected. Confirm the matching rules against the Playwright API and your proxy administrator’s guidance.
Keep browser downloads separate from rendered-page traffic
A common source of confusion is configuring a proxy for the wrong stage. Playwright’s browser proxy option governs requests made by a running browser. Installing browser binaries or retrieving them from an internal artifact host is a different workflow, documented in the Playwright Browsers guide.
- Rendered pages: configure
proxyat browser launch or context creation as shown above. - Browser installation downloads: the Playwright browser guide documents
HTTPS_PROXYfor downloads andPLAYWRIGHT_DOWNLOAD_HOST, including browser-specific variants, for an internal download host. These settings do not replace the running browser’s proxy option. - Certificate interception during installation: if a corporate proxy intercepts TLS and produces a self-signed certificate chain error, Playwright’s browser guide documents
NODE_EXTRA_CA_CERTS. Ask the proxy administrator for the trusted CA certificate and follow the guide; do not casually disable TLS verification.
Set up the stage that is failing. A browser binary download that cannot reach its host does not show that the proxy option for a page is wrong, and a page render failing through an endpoint does not mean download environment variables will fix it.
Playwright routing APIs are not an outbound proxy
page.route() and browserContext.route() let automation code intercept, modify, fulfill, or mock requests. They are request-handling APIs, not substitutes for the browser’s proxy setting when the goal is to send network traffic through a proxy endpoint. The Playwright Network guide also notes that service workers can take over requests and make them invisible to those route APIs; when the aim is to observe or intercept requests, the guide advises blocking service workers.
Use the distinction to choose the mechanism:
- For outbound network egress through a proxy, configure
proxy. - For test-specific request mocking or inspection, use the routing APIs and account for service-worker behavior.
- Do not reach first for custom Chromium launch arguments for ordinary proxy setup: Playwright warns that custom browser arguments can break functionality, and its documented option is the direct configuration path.
What to check when the render fails
The browser cannot connect to the proxy
Check that the configured hostname and port are reachable from the machine or container running Playwright, and that the server scheme matches the endpoint’s protocol. Confirm firewall and network policy with the endpoint administrator. A syntactically valid proxy setting cannot make an unreachable endpoint available.
The proxy rejects the request
First check whether the endpoint requires authentication. If it does, verify the values exposed as PROXY_USER and PROXY_PASSWORD in the process environment. If it does not, remove the credential fields. Also check the proxy’s own access rules; Playwright’s configuration cannot override a proxy-side denial.
Some hosts appear to bypass the proxy
Review the bypass list for matching domains and remove exceptions that should use the proxy. Then check the proxy’s access logs, if available, while loading the affected page. A website can load multiple resources from different hosts, so confirm which request or host is taking the unexpected route rather than treating the whole page as one connection.
The browser installs but a rendered page does not load
Installation and runtime traffic use different controls. Verify the launch- or context-level proxy option for the page render; do not assume HTTPS_PROXY used to retrieve browser binaries configures the browser after launch.
Rank #4
A route handler does not see a request
If you are using request interception rather than proxy egress, check whether a service worker is handling the request. The Playwright Network guide describes this limitation and recommends blocking service workers when interception visibility is the goal. Changing the proxy endpoint is not the fix for a request that a service worker has taken over.
TLS errors appear around proxy interception
Identify whether the failure occurs while downloading the browser or while the browser loads a site. For an installation-time self-signed certificate chain error, consult the Playwright browser-download guidance for NODE_EXTRA_CA_CERTS and obtain the correct trusted CA from the proxy administrator. Do not weaken TLS verification as a routine workaround.
Puppeteer: distinguish its configuration from Playwright’s
The Puppeteer configuration guide describes HTTP_PROXY, HTTPS_PROXY, and NO_PROXY as environment-only settings used to download and run the browser. It also says that puppeteer-core ignores Puppeteer configuration files and environment variables, and that browser downloads through a proxy need the optional proxy-agent package. Consult the Puppeteer Configuration guide for the version and package variant you use. Those documented configuration notes should not be silently treated as equivalent to Playwright’s explicit browser/context proxy example above.
Performance, reliability, and cost considerations
A proxy adds a network dependency between the browser and the sites it visits. The reviewed official documentation establishes configuration behavior, not a general speed improvement, success rate, or performance penalty. Measure your own render latency and failure modes with the target websites, proxy location, and deployment network you actually use.
Best Value
For reliable jobs, monitor navigation outcomes and proxy-side availability, keep secrets out of logs, and distinguish browser installation errors from page-load errors. If the proxy is required for compliance or network access, treat it as part of the render service’s operational dependencies: a browser cannot complete a render through an unavailable or unauthorized endpoint. Neither the Playwright nor Puppeteer documentation cited here provides a universal proxy price or performance figure.
Or skip the browser setup
If your goal is to obtain a website screenshot or PDF rather than to control the browser’s egress through your own proxy, ScreenshotNeo offers a one-request screenshot API and an MCP server for AI agents. It is not presented here as a way to configure your own proxy; use Playwright’s proxy option when that is the requirement.
For an image capture, the cURL example is:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. ScreenshotNeo removes cookie banners, newsletter popups, and chat widgets before the shot; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots, and the Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Learn more at ScreenshotNeo.
Sign up for 1,000 free screenshots a month, with no card required.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

