First step for any error: test the line on its own
Browsers and libraries often hide the proxy’s real answer behind a generic message. Run the same line through cURL with -v. For an HTTPS site you’ll see a CONNECT request and the proxy’s reply: 200 means the tunnel is open; any other code is the reason it isn’t.
curl -v -x "http://USERNAME:PASSWORD@HOST:PORT" https://ipinfo.io/jsonIf cURL works and your tool doesn’t, the problem is in how the tool sends the proxy settings. The setup guides cover each tool. You can also check an HTTP line with the free proxy checker.
At a glance
| Error | What it means |
|---|---|
| 407 Proxy Authentication Required | The proxy was reached, but it didn’t accept the username and password it received, or it received none at all. |
| ERR_TUNNEL_CONNECTION_FAILED and “CONNECT tunnel failed” | For an HTTPS site, your client first asks the proxy to open a tunnel with a CONNECT request. This error means the proxy answered that request with something other than “200, tunnel open”. Browsers hide the real reason behind this one generic error. |
| 502 Bad Gateway and 503 Service Unavailable from the proxy | The proxy accepted your login but couldn’t get a working connection to the site through the exit IP. |
| Timeouts | Your client gave up waiting, either for the connection to the proxy or for the site’s answer through it. |
| Connection refused and ERR_PROXY_CONNECTION_FAILED | Your machine couldn’t open a connection to the proxy at all. Nothing reached the exit IP yet. |
| SSL and certificate errors | Something went wrong with TLS, either between your client and the proxy or between your client and the site. |
| Wrong country or location | Either the exit IP isn’t where you asked for, or the site decides your location from something other than the IP. |
| The IP doesn’t change | Rotation happens when your client opens a new connection. HTTPS requests travel through a tunnel, and every request sent through the same open tunnel leaves from the same IP. |
| 403, 429 and CAPTCHAs from the site | These come from the website, not from the proxy. The tunnel worked; the site decided not to serve you. |
407 Proxy Authentication Required
The proxy was reached, but it didn’t accept the username and password it received, or it received none at all.
How it shows up
curl: (56) CONNECT tunnel failed, response 407ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))in Python requestsProxy response (407) !== 200 when HTTP Tunnelingin Node.js (undici)- A browser that keeps showing a proxy sign-in dialog
Common causes
- A typo, a missing character or a trailing space or line break copied with the line.
- The tool dropped the credentials. Chrome’s
--proxy-serverflag, for example, ignores a username and password written into it. - A password with characters such as
@,:,/or#inside a URL, where they need to be URL-encoded. - A username you edited by hand. A wrong targeting tag makes the username one the proxy doesn’t know.
- The plan has expired or has no data left.
How to fix it
- Copy a fresh line from the generator and paste it unchanged.
- Test the line on its own with the
curl -vcommand below. If cURL works, the problem is in how your tool sends the credentials. - In URL formats, URL-encode special characters in the username and password (
@becomes%40). - For tools that can’t send a password (system proxy settings, some apps), add your IP on the Access & API page if your plan supports login by IP.
- Check data left and time left for the plan on the My proxies page.
curl -v -x "http://USERNAME:PASSWORD@HOST:PORT" https://ipinfo.io/jsonERR_TUNNEL_CONNECTION_FAILED and “CONNECT tunnel failed”
For an HTTPS site, your client first asks the proxy to open a tunnel with a CONNECT request. This error means the proxy answered that request with something other than “200, tunnel open”. Browsers hide the real reason behind this one generic error.
How it shows up
net::ERR_TUNNEL_CONNECTION_FAILEDin Chrome, Puppeteer, Playwright and Seleniumcurl: (56) CONNECT tunnel failed, response 502TunnelError: Could not open CONNECT tunnel with proxy …in ScrapyTunnel connection failed: 503 Service Unavailablein Python requests
Common causes
- Authentication failed (the hidden status is 407).
- The proxy couldn’t reach the site through the exit IP (the hidden status is 502 or 503).
- The targeting asks for a location the plan can’t serve.
- The destination isn’t allowed under our Acceptable Use Policy.
How to fix it
- Run the same line through
curl -vto see the real status code, then follow the matching section on this page. - If the code is 407, see 407 Proxy Authentication Required.
- If the code is 502 or 503, see 502 and 503 from the proxy.
502 Bad Gateway and 503 Service Unavailable from the proxy
The proxy accepted your login but couldn’t get a working connection to the site through the exit IP.
How it shows up
curl: (56) CONNECT tunnel failed, response 502HTTP/1.1 503 Service Unavailableon a plainhttp://requestTunnel connection failed: 502 Bad Gatewayin Python requests
Common causes
- The site is down, slow, or refused the connection from that IP.
- The exit IP dropped. Residential IPs are real home devices and can go offline.
- Targeting the proxy can’t match. For example, on Residential Lite you can choose states only in the United States and Canada, and cities only in the United States (together with the state). Other combinations are refused straight away.
- A typo in the target hostname or port.
How to fix it
- Retry on a new connection. On a rotating line, that gives you a new IP.
- Widen the targeting: try country only, then add the state or city back. The generator only offers the location options your plan supports.
- Open the site without the proxy to rule out an outage.
- If it happens on every request and every site, contact support with the time and the line you used (without the password).
Timeouts
Your client gave up waiting, either for the connection to the proxy or for the site’s answer through it.
How it shows up
curl: (28) Operation timed outrequests.exceptions.ReadTimeoutorConnectTimeoutin PythonTimeoutError: Navigation timeout of 30000 ms exceededin Puppeteercontext deadline exceeded (Client.Timeout exceeded while awaiting headers)in Go
Common causes
- The timeout is too short for a page loaded through a home connection on the other side of the world.
- The site is slow or is deliberately slowing you down.
- Too many requests at once from your machine, which saturates your own connection or file limits.
- A connect timeout to the proxy itself, which points at a network or firewall problem on your side (see Connection refused below).
How to fix it
- Set explicit timeouts. 30 to 60 seconds is a sensible start for residential traffic.
- Retry timed-out requests on a new connection, which gives a rotating line a new IP.
- Lower concurrency and see if the timeouts stop.
- Choose an exit country close to the site’s servers.
- For speed-sensitive jobs on sites that allow them, use datacenter or ISP IPs, which run on server connections.
Connection refused and ERR_PROXY_CONNECTION_FAILED
Your machine couldn’t open a connection to the proxy at all. Nothing reached the exit IP yet.
How it shows up
curl: (7) Failed to connect to HOST port PORTECONNREFUSEDorETIMEDOUTin Node.jsnet::ERR_PROXY_CONNECTION_FAILEDin Chromeproxyconnect tcp: dial tcp HOST:PORT: connect: connection refusedin Go- “The proxy server is refusing connections” in Firefox
Common causes
- The wrong host or port. SOCKS5 has its own port, so an HTTP client pointed at the SOCKS5 port (or the other way round) fails.
- A firewall, antivirus or office network that blocks outgoing connections on the proxy port.
- A VPN or another proxy tool on your machine that intercepts the connection.
How to fix it
- Copy the host and port again from the generator, and pick the protocol (HTTP or SOCKS5) that your tool uses.
- Try
curl -vfrom the same machine. If it fails there too, try another network, such as a phone hotspot, to rule out a firewall. - Turn off other VPN or proxy apps while you test.
SSL and certificate errors
Something went wrong with TLS, either between your client and the proxy or between your client and the site.
How it shows up
SSL: WRONG_VERSION_NUMBERin PythonEPROTO … wrong version numberin Node.jscurl: (35) … wrong version numberCERTIFICATE_VERIFY_FAILEDorunable to get local issuer certificateNET::ERR_CERT_AUTHORITY_INVALIDin Chrome
Common causes
- A proxy URL that starts with
https://. That tells many clients to speak TLS to the proxy itself. ZenProxy lines start withhttp://, and your HTTPS traffic is still encrypted end to end inside the tunnel. - Something on your machine that inspects HTTPS traffic: antivirus “web shield” features, office firewalls, debugging proxies, or tools such as selenium-wire.
- An outdated CA bundle or system clock.
How to fix it
- Write the proxy as
http://USERNAME:PASSWORD@HOST:PORT, also for HTTPS sites. - Turn off HTTPS scanning in your antivirus while you test, or test from another machine.
- Update your OS certificates and check the system clock.
- Don’t switch off certificate checks (
verify=False,-k) to make the error go away. It hides the problem and exposes your traffic.
Wrong country or location
Either the exit IP isn’t where you asked for, or the site decides your location from something other than the IP.
How it shows up
- The site shows prices or language for another country
- ipinfo.io/json shows a different country than you chose
- Search results are for your home city
Common causes
- No country set. Without targeting, a residential line can exit anywhere.
- A sticky line generated before you changed the country. It keeps its original IP until it expires.
- IP location databases disagree. A site can place an IP in a neighboring region.
- Your browser gives you away: timezone, language, cookies, a signed-in account, or GPS on phones.
- DNS resolved on your machine (
socks5://instead ofsocks5h://), so the site serves you a server near you. - Datacenter and ISP IPs have a fixed location, chosen when you buy them.
How to fix it
- Set the country in the generator, or on residential plans add
-country-xxto the username (for exampleUSERNAME-country-us). Use two-letter ISO codes such asgbfor the United Kingdom. - Generate new sticky lines after changing the location.
- Check the exit with https://ipinfo.io/json through the same line.
- Match browser timezone and language to the proxy country, and use a clean profile without old cookies.
- With SOCKS5, use
socks5h://so DNS is resolved at the exit.
The IP doesn’t change
Rotation happens when your client opens a new connection. HTTPS requests travel through a tunnel, and every request sent through the same open tunnel leaves from the same IP.
How it shows up
- A rotating line returns the same IP for several requests
- Every request in a session comes from one IP
Common causes
- Your client reuses connections (sessions, keep-alive agents, connection pools). That’s the default in most libraries and browsers.
- You’re using a sticky line, which is meant to keep its IP.
How to fix it
- Open a new connection per request when you need a new IP each time: a fresh client per request, keep-alive off, or a connection limit of one request.
- Or generate many sticky lines (set Sticky Amount in the generator) and pick a different line for each request or task.
- Keep connection reuse when you don’t need a new IP on every request. It’s faster.
403, 429 and CAPTCHAs from the site
These come from the website, not from the proxy. The tunnel worked; the site decided not to serve you.
How it shows up
403 Forbiddenor429 Too Many Requests- A CAPTCHA or “unusual traffic” page
Common causes
- Too many requests too fast from one IP or one session.
- An IP type the site distrusts, often datacenter ranges on protected sites.
- A browser fingerprint or headers that look automated.
How to fix it
- Slow down and spread requests over more IPs with a rotating line.
- Use residential IPs for protected sites, and sticky lines when you log in.
- Send realistic headers, or use a real browser (Playwright, Puppeteer) for sites that check JavaScript.
- Retry blocked requests on a new connection, not the same IP.
Questions
What does 407 Proxy Authentication Required mean?
The proxy was reached but didn’t accept the username and password, or none were sent. Copy a fresh line from the generator, make sure your tool actually sends the credentials, and URL-encode special characters if you use the URL format.
How do I fix ERR_TUNNEL_CONNECTION_FAILED?
It’s a generic browser error for a failed CONNECT request. Run the same proxy line through curl -v to see the real status code. A 407 means a login problem; a 502 or 503 means the proxy couldn’t reach the site through the exit IP.
Is a 403 or 429 a proxy error?
No. Those come from the website through a working tunnel. Slow down, rotate IPs, or switch to residential or sticky lines depending on the site.
Why does my rotating proxy keep the same IP?
Your client reuses the open connection. Requests sent through one open tunnel share its exit IP. Open a new connection per request, or use a different sticky line per task.
Proxies that come with support
Try 1 GB of Residential Lite for $0.49. Copy your lines from the generator, and if something on our side doesn’t work, we fix it or refund you.
Broken on our side? Fixed in 48h or refunded.