Quick start
- Purchase bandwidth and wait for checkout to return you to the dashboard.
- Copy the endpoint, username, and password from your credentials card.
- Select a protocol in the generator. HTTP and HTTPS share one endpoint; SOCKS5 uses another port.
- Leave country set to Any and rotation set to Random for the simplest first test.
- Generate one proxy, copy the URL, and test it against an IP-check endpoint.
curl --proxy "http://USERNAME:PASSWORD@proxy.phantomproxies.org:12321" https://api.ipify.orgA successful response prints the proxy exit IP, not your direct IP. If it fails, start with the troubleshooting checklist.
Credentials and proxy formats
Every connection needs a hostname, protocol-specific port, username, and password. The dashboard can export either colon-separated credentials or a complete URL.
proxy.phantomproxies.org:12321:USERNAME:PASSWORDhttp://USERNAME:PASSWORD@proxy.phantomproxies.org:12321Treat proxy URLs like passwords: the credentials are embedded in plain text. Keep them out of source control, browser code, screenshots, and public logs. Store them in server-side environment variables instead.
HTTP, HTTPS, and SOCKS5
Choose the protocol your client supports. The protocol selector in the dashboard automatically pairs each generated line with the correct port.
| Protocol | Port | Use it when |
|---|---|---|
| HTTP / HTTPS | 12321 | Your HTTP client or browser automation tool accepts an HTTP proxy. |
| SOCKS5 | 32325 | Your client supports SOCKS and you want proxy-side DNS resolution. |
An HTTP proxy can carry both HTTP and HTTPS requests. HTTPS sites remain encrypted between your client and the destination through the proxy tunnel. SOCKS5 is a different transport and must use its own port.
Country targeting
Select a supported country in the dashboard to append its two-letter country code to the proxy password. Choose Any for the largest available pool and usually the quickest connection.
City and state targeting are not exposed in PhantomProxies. A misspelled or unsupported location can prevent a connection, so the generator deliberately offers only validated country options. Residential availability changes as devices enter and leave the network; a selected country narrows the pool but does not guarantee a particular city, ISP, or IP.
Learn when geography matters in What are residential proxies?.
Rotating and sticky sessions
Random rotation leaves out a session identifier, allowing the network to select a route for each new request or connection. It is the best default for independent tasks.
Sticky mode generates a unique session identifier and requested lifetime from one minute through seven days. Reuse the exact generated proxy string when requests need the same session. The lifetime is a request, not a guarantee: residential devices can disconnect or become unavailable before it ends.
For selection advice, read Rotating vs. sticky proxies.
Authentication and password rotation
PhantomProxies currently supports username-and-password authentication. IP allowlisting is not available as a self-service dashboard option. If your password is exposed, select Rotate password in the dashboard. The old password stops working immediately; your username and remaining bandwidth do not change.
Bandwidth and buying more
Bandwidth measures traffic transferred through the residential network, including response bodies and request overhead. Your dashboard shows the live upstream balance whenever it is available. Purchased GB does not reset monthly or expire on a billing cycle.
Buying another package adds bandwidth to the same provisioned account after payment succeeds. When the balance reaches zero, proxy traffic stops until more bandwidth is added. Estimate a workload before scaling with the free bandwidth calculator, then review How much proxy bandwidth do I need? for the full planning method.
Code examples
Replace the placeholders with dashboard credentials, preferably through environment variables. These examples make one benign IP-check request so you can verify routing.
cURL over SOCKS5
curl --proxy "socks5h://USERNAME:PASSWORD@proxy.phantomproxies.org:32325" https://api.ipify.orgPython over HTTP
import os
import requests
proxy = os.environ["PROXY_URL"] # http://USERNAME:PASSWORD@proxy.phantomproxies.org:12321
response = requests.get(
"https://api.ipify.org?format=json",
proxies={"http": proxy, "https": proxy},
timeout=30,
)
response.raise_for_status()
print(response.json())Node.js over HTTP
import { ProxyAgent, request } from "undici";
const dispatcher = new ProxyAgent(process.env.PROXY_URL);
const { body, statusCode } = await request(
"https://api.ipify.org?format=json",
{ dispatcher }
);
if (statusCode >= 400) throw new Error(`Proxy request failed: ${statusCode}`);
console.log(await body.json());
await dispatcher.close();Playwright over HTTP
import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: {
server: "http://proxy.phantomproxies.org:12321",
username: process.env.PROXY_USERNAME,
password: process.env.PROXY_PASSWORD,
},
});
const page = await browser.newPage();
await page.goto("https://api.ipify.org?format=json");
console.log(await page.textContent("body"));
await browser.close();Selenium with authenticated HTTP proxies
Core Selenium proxy capabilities do not provide a portable username-and-password field. If your project already uses the third-party selenium-wireintegration, pass the complete HTTP proxy URL through its proxy options.
import os
from seleniumwire import webdriver
driver = webdriver.Chrome(seleniumwire_options={
"proxy": {
"http": os.environ["PROXY_URL"],
"https": os.environ["PROXY_URL"],
"no_proxy": "localhost,127.0.0.1",
}
})
try:
driver.get("https://api.ipify.org?format=json")
print(driver.find_element("tag name", "body").text)
finally:
driver.quit()See the focused Python, Node.js, and Playwright guides for error handling and safer configuration patterns.
Troubleshooting
Authentication failed
- Copy the latest username and password again; an older password stops working after rotation.
- URL-encode credentials when constructing a proxy URL in a tool that does not do it for you.
- Remove accidental spaces or line breaks from copied values.
Connection refused or timed out
- Confirm HTTP(S) uses port 12321 and SOCKS5 uses port 32325.
- Test with Any country and Random rotation to rule out an unavailable route.
- Check whether a local firewall, VPN, or hosting provider blocks outbound proxy ports.
The IP changed during a sticky session
- Reuse the exact same generated credentials; changing the session ID creates a new route.
- Remember that the requested lifetime cannot keep an offline residential device connected.
No traffic passes
- Check the remaining balance in the dashboard and add bandwidth if it is zero.
- Try the one-request cURL test before debugging application code.
- Follow How to test a proxy to isolate DNS, authentication, location, and destination errors.
Still stuck?
Email support@phantomproxies.org with the client name, protocol, and complete error message. Redact your password before sending it.
Open dashboard