Setup & Troubleshooting

How to Check if Your Proxy Is Working

A complete checklist for verifying a proxy: confirm the IP and location, check anonymity headers, test HTTPS, measure speed, detect DNS and WebRTC leaks, and test against your real target.

By Team of Monkeys Editorial Updated 5 min read Affiliate disclosure

This guide contains affiliate links to Geonode, Webshare and Rayobyte. If you buy through them we may earn a commission, at no extra cost to you.

How to check if your proxy is working illustration of a proxy check confirming the new IP address and location 3jdej38j4

Six things to check

A proxy "working" can mean several things. Check each:

  1. Connectivity: can you connect and authenticate?
  2. IP: does the website see the proxy's IP, not yours?
  3. Location and type: is it in the right country/city, and the right type (residential, datacenter)?
  4. Anonymity: does it add headers revealing you?
  5. Leaks: do DNS or WebRTC reveal your real location?
  6. Target performance: does it actually work on the site you care about?
Three ways to test proxy quality and confirm your proxies actually work before you rely on them. Video: IPRoyal on YouTube

1. Connectivity and IP

bash
curl -s -x http://USER:PASS@gate.example.com:7777 https://api.ipify.org

If you get an IP that isn't yours, the proxy works. If you get an error, see common proxy errors. Use -v to see the full exchange. See curl proxy.

In a browser, visit any IP-check website after configuring the proxy.

Testing a new proxy list, please wait (animated GIF) 3jdej38j4
Testing a new proxy list, please wait. GIF via Tenor

2. Location and IP type

bash
curl -s -x http://USER:PASS@gate.example.com:7777 https://ipinfo.io/json

Check:

  • country, region, city: match your targeting?
  • org: a consumer ISP (Comcast, BT, Deutsche Telekom) for residential/ISP proxies, a hosting company for datacenter, a mobile carrier for mobile.

Different IP databases sometimes disagree, especially at city level. See geo-targeted proxies.

3. Anonymity headers

Over plain HTTP, check what headers reach the server:

bash
curl -s -x http://USER:PASS@gate.example.com:7777 http://httpbin.org/headers

There should be no X-Forwarded-For, Via or Forwarded headers revealing your IP. See proxy anonymity levels.

4. HTTPS support

bash
curl -s -o /dev/null -w '%{http_code}\n' -x http://USER:PASS@gate.example.com:7777 https://www.example.com

A 200 confirms CONNECT tunnelling works.

5. DNS and WebRTC leaks (browsers)

Visit a leak-test site in the configured browser. Check that:

  • DNS servers shown are not your ISP's (if privacy matters).
  • WebRTC doesn't show your real public IP.

See DNS leaks and WebRTC leaks.

6. Speed

Measure connect time and time to first byte:

bash
curl -s -o /dev/null -x http://USER:PASS@gate.example.com:7777 \
  -w 'connect %{time_connect}s  ttfb %{time_starttransfer}s  total %{time_total}s\n' https://www.example.com

See proxy speed test.

Proxy tip: When troubleshooting, it helps to have a second, known-good proxy to compare against. A small pay-as-you-go balance from Geonode works well for that, and its dashboard shows usage and active sticky sessions. More in using Geonode in your browser.

7. Rotation and sessions

For rotating proxies, request your IP several times and confirm it changes. For sticky sessions, confirm it stays the same for the expected duration.

bash
for i in 1 2 3 4 5; do curl -s -x http://USER:PASS@gate.example.com:7777 https://api.ipify.org; echo; done

8. Your real target

The final test: request the actual page you care about and check the content is correct, not a block page or CAPTCHA. See how to test proxies before buying.

Python one-shot checker

python
import requests, time
def check(proxy_url):
    p = {"http": proxy_url, "https": proxy_url}
    t = time.time()
    info = requests.get("https://ipinfo.io/json", proxies=p, timeout=20).json()
    return {"ip": info.get("ip"), "country": info.get("country"), "city": info.get("city"),
            "org": info.get("org"), "seconds": round(time.time() - t, 2)}
print(check("http://USER:PASS@gate.example.com:7777"))

Checking a whole proxy list

python
import concurrent.futures as cf, requests

def check_line(line):
    host, port, user, pw = line.strip().split(":")
    url = f"http://{user}:{pw}@{host}:{port}"
    try:
        r = requests.get("https://ipinfo.io/json", proxies={"http": url, "https": url}, timeout=15)
        j = r.json()
        return line.strip(), "OK", j.get("ip"), j.get("country"), j.get("org")
    except Exception as e:
        return line.strip(), "FAIL", type(e).__name__, None, None

lines = [l for l in open("proxies.txt") if l.strip()]
with cf.ThreadPoolExecutor(20) as ex:
    for row in ex.map(check_line, lines):
        print(*row, sep="\t")

This shows which proxies work, where they exit and which network they belong to.

Interpreting results

ResultMeaning
OK, expected country and ISPWorking as intended
OK, wrong countryTargeting issue or provider mislabel
OK, hosting ASN on a "residential" proxyNot residential; contact provider
FAIL: ProxyErrorAuth or connection problem
FAIL: TimeoutSlow or dead proxy

Checking from the right place

Run checks from the machine that will use the proxies (your server or bot host), not just your laptop. Network paths and whitelisting differ by location.

When "working" isn't enough

A proxy can pass every check above and still fail on your target because the IP is flagged there, or because your client is detected. Always finish with a real target test. See how to test proxies before buying and IP reputation and proxies.

Budget tip: For jobs where a fixed IP list is enough, Webshare is one of the cheapest options: shared datacenter proxies are sold by the IP, and static residential (ISP) proxies cost well under a dollar per IP per month at the time of writing. More in fixing common Webshare errors.

Browser-based checks

In a browser configured with the proxy:

  1. Visit an IP-check site: confirm IP and location.
  2. Visit a WebRTC leak test: confirm no real IP.
  3. Visit a DNS leak test: confirm resolvers aren't your ISP's.
  4. Visit your target: confirm it loads normally.

Proxy check results log

Keep a simple log when checking proxies, especially for static ISP or datacenter lists:

DateProxyIPCountry/CityOrgLatencyTarget OK?Notes

Over time this shows which proxies degrade and helps when requesting replacements or comparing providers. See IP reputation and proxies.

Residential tip: If you want to try this on an ethically sourced residential pool, Rayobyte offers a free trial with no credit card, then pay-as-you-go traffic from $3.50 per GB that drops to $0.70 per GB at 1 TB. See testing Rayobyte proxies.

Don't forget IPv6

Many checks only look at IPv4, so a setup can pass every test and still have an IPv6 path that skips the proxy. Add two quick checks.

From the command line, compare an IPv4-only echo service with a dual-stack one:

bash
curl -s -x http://USER:PASS@gate.example.com:7777 https://api.ipify.org
curl -s -x http://USER:PASS@gate.example.com:7777 https://api64.ipify.org

The first always returns an IPv4 address. The second returns an IPv6 address if the exit has one, otherwise IPv4. Either way, both should belong to the proxy, never to your own connection.

In a browser, open test-ipv6.com through the proxy. If it shows your real IPv6 address, something is reaching the internet without going through the proxy. The usual causes:

  • WebRTC, which can reveal local and public addresses directly. See WebRTC leaks and proxies.
  • Apps or extensions that don't use the configured proxy.
  • A VPN or system setting that routes IPv6 differently from IPv4.

If the proxy itself has no IPv6 and the site is IPv6-ready, the browser will simply use IPv4 through the proxy, which is fine. What you're looking for is any address that isn't the proxy's. For the protocol background, see IPv4 vs IPv6 proxies.

For a Webshare-specific walkthrough, see How to Test Webshare Proxies Before You Scale, which explains the right product, settings and costs for this job.

For a third option, read How to Test Rayobyte Proxies Before You Buy; our Rayobyte vs Geonode vs Webshare Speed and Reliability comparison shows where Rayobyte, Geonode and Webshare each come out ahead.

Key takeaways

  • A working proxy passes six checks: connectivity, correct IP, right location and IP type, no revealing headers, no DNS/WebRTC leaks, and success on your real target.
  • curl -x ... https://ipinfo.io/json confirms IP, location and network in one command.
  • The org field tells you whether an IP is residential, mobile or hosting.
  • Check rotation by requesting your IP several times; check sticky sessions by polling over time.
  • Always finish with your actual target, because a proxy can be "working" and still be blocked there. See how to test proxies before buying.

If a proxy keeps failing these checks, compare providers in our guide to the best proxies in 2026, or switch to residential proxies if targets reject datacenter IPs.

FAQ

My proxy shows the right IP but sites still block me. Why?

The IP may be flagged, or your client's fingerprint or behaviour is the problem. See avoiding IP bans when scraping.

Why does my IP lookup show the wrong city?

IP geolocation databases differ and are less accurate at city level.

Sources and further reading

Independent references that back up the points above, from standards bodies, governments, universities and non-profits. They open in a new tab.

Affiliate disclosure: Team of Monkeys is an affiliate of Geonode, Webshare and Rayobyte. Links and banners marked as sponsored, and links to Geonode, Webshare and Rayobyte in the text, use our referral links, and we may earn a commission if you buy through them, at no extra cost to you. Our explanations and comparisons are written to be useful whichever provider you choose.

Editorial note: Proxy providers change their pools, features and prices often, so treat any figures here as typical ranges at the time of writing and confirm current terms with the provider before you buy.