Geonode logo
Proxy and connection errors

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.

WhereWhat 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.serverpage.goto: net::ERR_NO_SUPPORTED_PROXIES at http://example.com
Chrome DevTools consoleFailed 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.

  1. 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();
      });
  2. 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.

    1. Start with http://, https://, socks4:// or socks5://, or leave the scheme out for HTTP.

    2. Change socks5h:// to socks5://; Chrome already resolves site names on a SOCKS5 proxy.

    3. Delete quote marks inside the value, PAC words such as PROXY, and any trailing slash.

  3. 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.

    1. In the Geonode dashboard, open Whitelisted IPs in settings.

    2. Click Detect My IP, add a description if you like, then click Add.

    3. 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.

  1. Keep passwords out of launch flags; chrome://version and the system process list print the full command line.

  2. Store host, port, username and password as separate settings, and build each tool's format from them at launch.

  3. Check your exit IP after setting a proxy through Selenium's proxy capability; a login there makes Chrome connect directly.

  4. Have each scraper check its first loaded page for a Chrome error before it starts saving results.

Proxy lines that split cleanlyGeonode's dashboard lists each proxy as host:port:username:password; Chrome takes the first two parts.
Try residential proxies

Related errors

Learn more

FAQ

Chrome had a proxy setting but could not use any entry in it, so it stopped before sending the request. It is a local format problem, most often a username and password written into the proxy address.

No. Chrome drops any entry that holds a login, even a percent-encoded one. The http://USERNAME:PASSWORD@HOST:PORT format in Geonode's docs works in curl and Python scripts, but Chrome's --proxy-server needs the login supplied separately.

No. Chrome rejected the setting before opening any connection, so the proxy was never contacted. A proxy Chrome cannot reach shows ERR_PROXY_CONNECTION_FAILED, and a failed tunnel through it shows ERR_TUNNEL_CONNECTION_FAILED.

Puppeteer through page.authenticate() and Playwright through the username and password fields of its proxy option. Playwright drops a login typed into proxy.server, so leaving those fields empty gets a 407 from the proxy, not this error.

It is the same Chrome error, which page.goto() rethrows with the URL you requested. Chromium puts the net:: prefix on network errors, and this error's number is -336.

No. Chrome's PAC parser keeps only proxy types it supports, and if no entry parses it treats that as a script error and connects directly, so pages load from your own IP with no error page.

A login Chrome can answer

Geonode's HTTP ports use Basic username and password login, which Chrome and Puppeteer answer.