Skip to content
PhantomProxies

Documentation

Connect to your residential proxies

Copy your credentials from the dashboard, choose HTTP(S) or SOCKS5, then add country and session controls only when you need them.

Last updated September 7, 2026

Quick start

  1. Purchase bandwidth and wait for checkout to return you to the dashboard.
  2. Copy the endpoint, username, and password from your credentials card.
  3. Select a protocol in the generator. HTTP and HTTPS share one endpoint; SOCKS5 uses another port.
  4. Leave country set to Any and rotation set to Random for the simplest first test.
  5. Generate one proxy, copy the URL, and test it against an IP-check endpoint.
cURL — first connection
curl --proxy "http://USERNAME:PASSWORD@proxy.phantomproxies.org:12321" https://api.ipify.org

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

Colon-separated
proxy.phantomproxies.org:12321:USERNAME:PASSWORD
Proxy URL
http://USERNAME:PASSWORD@proxy.phantomproxies.org:12321

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

ProtocolPortUse it when
HTTP / HTTPS12321Your HTTP client or browser automation tool accepts an HTTP proxy.
SOCKS532325Your 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

Shell
curl --proxy "socks5h://USERNAME:PASSWORD@proxy.phantomproxies.org:32325" https://api.ipify.org

Python over HTTP

Python
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

JavaScript — undici
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

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

Python — Selenium Wire
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