Residential proxy 407, timeouts, or your own IP: a troubleshooting table

Troubleshoot by symptom: 407 auth failure, timeouts, traffic still leaving from your IP, or a 403/429 from the destination. Confirm with curl first. No invented SLA or success rates. Console wins. Not for mainland China.

Troubleshoot by symptom: 407 auth failure, timeouts, traffic still leaving from your IP, or a 403/429 from the destination. Confirm with curl first. No invented SLA or success rates. Console wins. Not for mainland China.

When a request fails, separate “this proxy hop never connected” from “the destination rejected the request.” Run a minimal check first, then change application code. Checks: test with curl. String shapes: Proxy format. Protocol: HTTP / SOCKS5 setup. App samples: Python, Node.js Axios, Playwright. Commands follow Docs EN quickstart.

ZTProxy sells rotating residential (per GB) and static residential (per IP·month). Hosts below are fake placeholders. The check URL must be one you may call; the sample uses `https://example.com`. Not for mainland China. This page does not invent an availability SLA, a success rate, or an average latency.

Start with the symptom

What you seeMore likely causeDo this first
407 Proxy Authentication RequiredUsername or password does not match the console, or special characters were eaten by the shell or URL encodingRecopy credentials from the console and retry with curl `--proxy-user`
A hang or connect timeoutWrong protocol or port, local egress blocked, or a timeout that is too shortCheck the console protocol (HTTP vs SOCKS5) and port, and set `--connect-timeout` / `--max-time`
The request succeeds, but the exit is still your machine’s IPThe app never used the proxy (Axios default proxy behavior, unset environment variables, a browser extension left off)Compare a direct request with a proxied request to the same authorized URL; check that the app did not ignore your proxy
The proxy connected, but the site returns 403 / 429The destination rejected the visit under its own rules—not automatically a gateway faultConfirm authorization, rate, and exit region; do not write a site policy as “the proxy is broken”
A SOCKS-related errorAn HTTP client was aimed at a SOCKS port, or the reverseFollow the protocol the console returns; use `socks5h` when you need DNS through the proxy
A rotating exit that changes every timeOften expected for a rotating productConfirm whether the order is rotating or static; see rotating vs static
A static exit that changes often during the termThe order, session, or host may not be the static one you boughtRecheck the order and host in the console, and keep sticky ≠ static separate

Reproduce with a minimal curl

Leave the app aside. Use this placeholder structure, then replace the fakes with console values:

export ZT_PROXY_USER='USER_EXAMPLE'
export ZT_PROXY_PASS='PASS_EXAMPLE_NOT_REAL'
export ZT_PROXY_HOST='proxy.example.invalid'
export ZT_PROXY_PORT='10000'

curl -sS --connect-timeout 10 --max-time 30 \
  --proxy "http://${ZT_PROXY_HOST}:${ZT_PROXY_PORT}" \
  --proxy-user "${ZT_PROXY_USER}:${ZT_PROXY_PASS}" \
  "https://example.com" -o /dev/null -w "%{http_code}\n"

If this already returns 407 or times out, do not start editing Python, Node, or the browser—the problem is still credentials, protocol, or the network path. If this succeeds and the app fails, check whether the app actually attached the proxy (Axios needs `HttpsProxyAgent` and `proxy: false`; Playwright puts `proxy` on `chromium.launch`).

Auth and encoding

If the username or password contains `@`, `:`, `#`, or a space, pasting it into a URL can truncate the string. Prefer a separate `--proxy-user` flag or the library’s `username` / `password` fields. Environment names you can use: `ZT_PROXY_USER`, `ZT_PROXY_PASS`, `ZT_PROXY_HOST`, `ZT_PROXY_PORT`. Do not paste cleartext passwords into ticket screenshots or public repositories.

Your own IP and “the proxy was skipped”

To tell whether traffic used the proxy, you need two contrasts: one direct request to an authorized URL, and one through the proxy, then compare the result or exit clues. Do not rely on the wording of a single lookup site. Third-party lookup sites are not this company’s official API. Browser extensions, system proxies, and process environment variables can override each other; see browser proxy setup.

A 403 / 429 from the destination is a different class of failure

After proxy auth succeeds, the destination can still reject the visit by rate, region, fingerprint, or login state. Return to the task: whether you may access the target, whether the rate is reasonable, and whether the exit region matches how to choose a location. Do not record a site policy as a gateway incident, and do not invent a success-rate figure to explain it.

Limits

Troubleshoot only against authorized targets. Prices follow the console (about $0.40/GB rotating, about $0.20/GB for the 100 TB bundle; shared static about $1.50 and dedicated about $5 per IP·month). USDT/USDC available; Visa/Mastercard applying. Not for mainland China.

FAQ

Does a 407 mean the service is down?

In most cases, re-check credentials and encoding before assuming an outage. This page does not publish an availability figure.

Does a timeout always mean the proxy is slow?

No. First check protocol, port, local firewall, and the timeout you set. Do not write an unmeasured latency as a product metric.

Why does curl work while Axios still leaves from my IP?

A common cause is still using Axios’s default proxy behavior instead of `HttpsProxyAgent` with `proxy: false`. See the Node.js guide.

Is a changing rotating IP an error?

If the order is rotating residential, a new connection may use a new exit. If the order is static, re-check the host and the order.

Must I use a public IP-lookup site?

No. Use any URL you may access and can compare between a direct and a proxied request.

What should I check first on a SOCKS error?

Whether the console lists HTTP or SOCKS5. Do not mix schemes and ports. Use `socks5h` when DNS should go through the proxy.

Should I switch to static after a 429?

Not automatically. Confirm authorization and rate first. Read rotating vs static before changing products.

Can I find prices or refunds on this page?

No. Follow the console and Pricing. This page does not invent an SLA.

Next steps

  1. Reproduce with curl against an authorized URL.
  2. Use the table to separate “the proxy never connected” from “the site rejected the request.”
  3. Return to the matching app guide, or re-check the order in the console.