# How to test a proxy: exit IP, location, leaks, headers, speed and success rate

A proxy that "works" can still leak, sit in the wrong city or fail on your target. Ten minutes of checks, mostly with cURL, tell you what a sales page cannot.


## 1. The exit and its country

```bash
curl -s -x http://USER-cc-de-city-berlin:PASS@res.proxshift.com:9000 https://api.ipify.org
# then look the address up in one or two public geolocation databases
```

Country must match. At city level, accept the neighbouring town: databases disagree there. Run it a few times without `-sid-` to confirm rotation, then with a fixed `-sid-` to confirm stickiness.


## 2. Anonymity headers

Fetch a header-echo endpoint over plain HTTP and read every header. Nothing should mention a proxy or an address other than the exit: no `X-Forwarded-For`, `Via`, `Forwarded`, `X-Real-IP`. Check over HTTP, not HTTPS, since a proxy cannot add headers inside TLS.


## 3. DNS

With SOCKS5, compare `socks5://` and `socks5h://`: only the second resolves at the exit. With HTTP proxies the hostname always goes to the proxy. If a site behaves differently through the proxy than expected, a local DNS answer pointing at the wrong regional edge is a common cause.


## 4. WebRTC (browsers only)

Open a WebRTC leak test in the browser you will use. Only the exit may appear; if your real address shows, disable WebRTC or set its IP policy to proxied-only.


## 5. Latency and throughput

```bash
curl -s -o /dev/null -w 'connect %{time_connect}s  ttfb %{time_starttransfer}s  total %{time_total}s\n' \
     -x http://USER-cc-de:PASS@res.proxshift.com:9000 https://example.com/
# a few hundred milliseconds of TTFB is normal on a household exit; seconds mean a slow line, try another session id
```

For throughput, download a 10 MB test file and read `%{speed_download}`; expect tens of Mbit/s on residential, hundreds on datacenter and ISP.


## 6. Success rate against your target

```bash
ok=0; for i in $(seq 1 50); do
  code=$(curl -s -o /dev/null -w '%{http_code}' -m 30 -x "http://USER-cc-us:PASS@res.proxshift.com:9000" https://target.example/some/page)
  [ "$code" = 200 ] && ok=$((ok+1))
done; echo "$ok/50 succeeded"
```

Fifty requests cost a few megabytes. Check the *content* of a few responses too: a 200 with missing prices is a soft block, and only content inspection catches it.


## 7. What to conclude

| Finding | Meaning | Action |
| --- | --- | --- |
| Wrong country | Parameter typo or unsupported code | Check -cc- (gb, not uk) |
| Proxy headers present | Not an elite proxy | Change provider |
| 403 or CAPTCHA on first request | Exit type too weak for the target | Residential → mobile, or datacenter → residential |
| Blocks after N requests | Per-IP rate limit | Rotate more, slow down |
| Slow everything | Household line | New session id, or ISP/datacenter for speed |


## Questions

**How much does testing cost on ProxShift?**

The minimum top-up, $20, and a few megabytes of traffic for the checks; the rest of the balance stays for real work and never expires.

Source: https://proxshift.com/guides/test-a-proxy
