Fixing a 407 from your proxy: a credentials checklist

Updated:

A 407 Proxy Authentication Required response tells you two things at once: your traffic reached the proxy, and the proxy did not accept the username and password it received (or received none). The network is not the problem here. Treat a 407 as a login problem and you will usually solve it in a couple of minutes.

One line, ready to paste

Where the login usually goes wrong

  • A typo or a stray space. Copying a password from a chat or a spreadsheet often drags an invisible space or line break with it. This is the single most frequent source of 407 reports.
  • Values in the wrong boxes. The entire ip:port:user:pass string is pasted into the host field, or user and password are swapped. Some apps split a pasted line into four fields automatically; many do not.
  • No credentials sent at all. System-wide proxy settings on Windows, macOS or a phone store a host and port, nothing else. An app that cannot show a login prompt then connects anonymously and the proxy answers 407.
  • Unescaped symbols in a proxy URL. In http://user:pass@host:port, a password containing @, : or # breaks the parsing unless it is percent-encoded, for example @ written as %40.

Recognising a 407 in curl, Chrome and the checker

Here is how it looked on our test proxy (shown with the documentation address 203.0.113.10:8080 and the intentionally wrong pair user123:pass456). Requesting an HTTPS page with curl -x http://user123:[email protected]:8080 https://example.com ends with curl: (56) CONNECT tunnel failed, response 407. Requesting a plain HTTP page with -w %{http_code} prints only 407.

Adding -v answers the key question: did the client send a login? In the verbose trace you should see > CONNECT example.com:443 HTTP/1.1, followed by > Proxy-Authorization: Basic ..., and then the 407 reply. When the Proxy-Authorization line is absent, the client never transmitted credentials, so look at the app's settings rather than the password itself.

The ProxyV4 proxy checker labels this situation auth failed (407). Headless Chrome has no login dialog to show, so it reports the same refusal as ERR_TUNNEL_CONNECTION_FAILED, which is explained on the tunnel error page.

Fix it in the tool you are using

  • Chrome on Windows: Chrome uses the Windows proxy (Settings > Network & Internet > Proxy), which only holds address and port. When the first page loads, Chrome pops up a sign-in box for the proxy username and password. If you mistyped and the box does not come back, close all Chrome windows and start it again.
  • AdsPower, GoLogin, GenLogin and other antidetect browsers: fill Host, Port, Username and Password as four separate values. Rather than correcting a password in place, empty the field and paste a fresh copy. The GoLogin setup guide shows each field.
  • iPhone: under Settings > Wi-Fi > (i) > Configure Proxy there is an Authentication switch. If it stays off, the proxy answers 407. Android generally accepts only host and port, so apps that need a login tend to show a vague connection error instead.
  • curl: give the login with -U "user:pass" and keep the proxy URL credential-free. That avoids every special-character problem.
  • Python requests: put http://user:pass@host:port under both the http and https keys of the proxies dict, and run unusual passwords through urllib.parse.quote first.

Login is correct and the 407 remains

Check the proxy type next. ProxyV4 proxies are HTTP(S) with username and password, delivered as one ip:port:user:pass line, so the app should be set to HTTP. Then test the exact line you copied from the dashboard in the checker. If the checker connects and your app still gets a 407, the difference is in how the app stores or sends the credentials.

Step by step

  1. 1

    Copy the line straight from Orders

    Open the order in your ProxyV4 dashboard and copy the full proxy line instead of retyping it.

  2. 2

    Test it in the proxy checker

    Paste the line into the proxy checker. The result auth failed (407) confirms the login is the issue, not the network.

  3. 3

    Paste user and password again

    Empty both fields in your app and paste them fresh, with nothing before or after the text.

  4. 4

    Set the type to HTTP

    Choose HTTP as the proxy type, save the profile and reload the page.

  5. 5

    Inspect the trace with curl -v

    If the 407 persists, run curl -v with your real values and look for a Proxy-Authorization line before the response.

Frequently asked questions

Does a 407 mean my internet provider blocks the proxy?

No. The 407 is generated by the proxy, which proves your connection reached it. A blocked route looks different: a timeout or a refused connection. See proxy timeout.

Why does Chrome keep showing the proxy sign-in box?

Each rejected attempt triggers another 407, and Chrome asks again. Check Caps Lock and make sure your keyboard input method is not adding accents or changing characters in the password.

How do I write a password that contains @ in a proxy URL?

Percent-encode the symbols: @ becomes %40, : becomes %3A, # becomes %23. With curl, passing the login through -U means you do not need to encode anything.

Puppeteer or Selenium shows a tunnel error, not a 407. Is it the same thing?

Often, yes. Headless Chrome cannot ask for a password, so the 407 is reported as ERR_TUNNEL_CONNECTION_FAILED. Pass the credentials through the library's own authentication method, as shown in the Selenium guide.

One line, ready to paste

Each ProxyV4 order gives you an ip:port:user:pass line for a private IPv4 or static ISP address. Copy it once, use it in any app.

Check live prices

Related articles

Proxy errors
Behind ERR_TUNNEL_CONNECTION_FAILED: reading the proxy's CONNECT reply
ERR_TUNNEL_CONNECTION_FAILED hides the proxy's real reply to CONNECT. Uncover the 407 or 502 behind it and fix Chrome, Puppeteer, Playwright or Android setups.
Free tools
Check proxies in bulk: status, exit IP and latency
Free online proxy checker: paste up to 100 ip:port:user:pass lines and see which proxies work, their exit IP and latency, plus what each failure result means.
Proxy setup
Routing Google Chrome Through a Private Proxy
Put an HTTP(S) proxy on Google Chrome only, not the whole computer: a per-profile extension, a --proxy-server launch shortcut, or the system proxy settings.
Proxy setup
Using cURL with an authenticated proxy: commands that prove it works
Send cURL requests through an authenticated HTTP(S) proxy with -x and -U, confirm the exit IP, read the CONNECT handshake and time each request on any OS.
Proxy setup
Python requests through an authenticated proxy, step by step
Send Python requests through an authenticated HTTP(S) proxy: build the proxies dict, attach it to a Session, encode odd passwords, rotate a list, check the IP.
Proxy setup
GoLogin proxy settings for profiles opened on more than one machine
Add your own HTTP proxy to GoLogin under Proxy -> Your Proxy, sync timezone and WebRTC in Orbita, import a list, and diagnose failed checks by symptom.
Proxy setup
Setting a Proxy on Windows 10 and Windows 11
Set an HTTP(S) proxy on Windows 10 or 11: the Proxy page in Settings, saving the login in Credential Manager, variables for CLI tools and netsh winhttp.
Proxy setup
Setting up a GenLogin proxy so the IP and fingerprint tell one story
Add a GenLogin proxy to a browser profile, fill WebRTC and timezone from the IP, import lines through Proxy Manager, and fix 407 or timeout check errors.