Reading your credentials
Proxies are usually written as a single colon-separated string. All four fields, in a fixed order:
198.51.100.42:8080:myusername:mypassword │ │ │ └─ password │ │ └─ username │ └─ port └─ IP address
Most software wants those same values as a URL instead. The translation is mechanical:
http://myusername:[email protected]:8080
In your dashboard the HTTP and SOCKS5 tabs show different ports for the same address. The username and password do not change between them.
curl
The quickest way to confirm a proxy works before wiring it into anything else:
# HTTP curl -x http://USER:PASS@IP:PORT https://example.com # SOCKS5, with DNS resolved at the proxy curl -x socks5h://USER:PASS@IP:SOCKS_PORT https://example.com
If that returns a page, the credentials are good and the problem in any failing tool is that tool's configuration rather than the proxy.
Environment variables
Many command-line programs read proxy settings from the environment, which saves configuring each one:
export HTTP_PROXY="http://USER:PASS@IP:PORT" export HTTPS_PROXY="http://USER:PASS@IP:PORT" export NO_PROXY="localhost,127.0.0.1"
Two things to know. Support is a convention rather than a standard, so some tools ignore these entirely. And the credentials end up in your shell history and in the environment of every process you start — on a shared machine, put them in a config file with restricted permissions instead.
Browsers
Firefox has its own proxy settings under Network Settings, so it can use a proxy without affecting the rest of the system. Chrome and Edge defer to the operating system's settings, which means configuring them changes the proxy for everything.
Either way, browsers will not take a username and password from the proxy URL — they prompt for credentials when the proxy first challenges them. If you need per-profile proxies or want the credentials remembered properly, a proxy-management extension is generally less painful than the built-in settings.
In code
Most HTTP clients take a proxy as configuration rather than requiring a system setting:
# Python (requests)
proxies = {
"http": "http://USER:PASS@IP:PORT",
"https": "http://USER:PASS@IP:PORT",
}
requests.get("https://example.com", proxies=proxies)// Node.js (undici, built into fetch)
import { ProxyAgent, setGlobalDispatcher } from "undici";
setGlobalDispatcher(new ProxyAgent("http://USER:PASS@IP:PORT"));Keep the credentials out of source control. An environment variable or a secrets manager is the difference between rotating one password and rewriting your git history.
When it does not work
407 Proxy Authentication Required means the proxy was reached but rejected the credentials. Check for a copied trailing space, and check you are not sending the HTTP username against the SOCKS5 port of a different service.
Connection refused or timeout usually means the port is wrong — most often the HTTP port used where the SOCKS5 port was needed, or the reverse. The two are different numbers on the same address.
It works in curl but not in my tool means the tool is not applying the proxy. Many ignore the environment variables, and some need the proxy set per-request rather than globally.
The destination still blocks me is not a configuration problem — the proxy is working and the destination has decided about you on other grounds. Which type of proxy you are using affects how often this happens; see ISP vs residential vs datacenter proxies.
Still stuck? Open a support ticket with the proxy address and what you tried.