How to Fix ERR_NO_SUPPORTED_PROXIES
Find the part of your proxy address Chrome rejects, then fix it for Puppeteer, Selenium or an extension.
Updated
TL;DR
ERR_NO_SUPPORTED_PROXIES is Chrome's own error: no entry in its proxy setting was in a form it can use, so the request never left the browser. The usual cause is a username and password written into the proxy address, and the fix is to supply that login separately.
What the error looks like in each client
Chrome's page says the site might be temporarily down, but the cause is always the proxy setting.
| Where | What you see |
|---|---|
| Chrome (page heading) | This site can't be reached |
| Chrome (code under the summary) | ERR_NO_SUPPORTED_PROXIES |
| Puppeteer page.goto() | net::ERR_NO_SUPPORTED_PROXIES at http://example.com |
| Playwright page.goto(), for example with socks5h:// in proxy.server | page.goto: net::ERR_NO_SUPPORTED_PROXIES at http://example.com |
| Chrome DevTools console | Failed to load resource: net::ERR_NO_SUPPORTED_PROXIES |
Why this happens
Chrome throws away proxy entries it cannot read, and here none was left.
A login such as USERNAME:PASSWORD@ or a scheme Chrome lacks, such as socks5h://, gets the entry discarded without a warning. With a single proxy for all sites and nothing usable left, Chrome fails the request instead of connecting directly.
Diagnose your ERR_NO_SUPPORTED_PROXIES first
The first three checks read the proxy address; the last two compare how tools treat it.
Read the proxy address in your extension, settings or launch code; if it contains @, Chrome dropped it because of the login inside.
Look at how the address starts; if it begins with socks5h://, socks4a://, a typo or a quote mark, Chrome cannot use the scheme.
Look at what follows the port; a slash, a path, an empty port or a second colon with a login also gets the entry dropped.
Give curl -i -x the same address and any http:// URL; a 200 status line means proxy and login work; only Chrome rejects the format.
In Selenium, search driver.page_source for ERR_NO_SUPPORTED_PROXIES; if it is there, get() returned Chrome's error page, since ChromeDriver raises no exception for it.
Solutions ranked by effectiveness
Start with the login, the most common cause; the second card covers the rest of the address.
- Most common fix
Take the login out of the address
Applies when the proxy address holds USERNAME:PASSWORD@. Give Chrome only the scheme, host and port, then pass the login to Puppeteer's page.authenticate(), which answers the proxy's 407 challenge.
// npm install puppeteer@24 const puppeteer = require("puppeteer"); puppeteer.launch({ args: ["--proxy-server=http://proxy.geonode.io:9000"] }) .then(async (browser) => { const page = await browser.newPage(); await page.authenticate({ username: "USERNAME", password: "PASSWORD" }); const res = await page.goto("http://example.com").catch((e) => e); console.log(res instanceof Error ? res.message : "HTTP " + res.status()); await browser.close(); }); - Check next
Write the address the way Chrome reads it
Applies when there is no login but the error stays. Chrome takes scheme://host:port with one of four schemes, and nothing after the port.
Start with http://, https://, socks4:// or socks5://, or leave the scheme out for HTTP.
Change socks5h:// to socks5://; Chrome already resolves site names on a SOCKS5 proxy.
Delete quote marks inside the value, PAC words such as PROXY, and any trailing slash.
- If nothing else works
Whitelist your IP and drop the login
Applies to Selenium and to any extension or settings screen without its own login field. With your IP whitelisted, the proxy needs no password, so Chrome gets host and port alone.
In the Geonode dashboard, open Whitelisted IPs in settings.
Click Detect My IP, add a description if you like, then click Add.
Launch Chrome with --proxy-server=http://proxy.geonode.io:9000 and no username or password.
Stop the proxy format error from coming back
These habits keep a bad address out of Chrome and catch the setups where Chrome skips a proxy without any error.
Keep passwords out of launch flags; chrome://version and the system process list print the full command line.
Store host, port, username and password as separate settings, and build each tool's format from them at launch.
Check your exit IP after setting a proxy through Selenium's proxy capability; a login there makes Chrome connect directly.
Have each scraper check its first loaded page for a Chrome error before it starts saving results.
Related errors
Learn more
FAQ
A login Chrome can answer
Geonode's HTTP ports use Basic username and password login, which Chrome and Puppeteer answer.


