How to check a proxy server’s IP address

Written by
How to check a proxy server's IP address
Table of Contents

A proxy has two addresses, and most failed checks come from looking at the wrong one. The entry address is the host and port in your settings, such as 203.0.113.10:8000. The exit IP is the address a website writes into its logs when your request arrives. On a static datacenter proxy the two usually match. On a rotating residential gateway they almost never do.

For most setups, how to check a proxy server’s IP address comes down to one comparison. Ask an echo service for your IP twice, once directly and once through the proxy:

curl -s https://api.ipify.org
curl -s -x http://USER:[email protected]:8000 https://api.ipify.org

If the first command prints your own address and the second prints the proxy’s, that client is routed correctly. It proves nothing about your browser, DNS lookups or WebRTC, which take separate paths and fail separately.

proxy server ip address
How to check a proxy server's IP address 3

Proxy address vs exit IP: what you are actually checking

A proxy server address is the host and port your software connects to. The host can be an IP or a name like gate.example.net. Squid listens on 3128 by default and SOCKS on 1080, but commercial gateways use custom port ranges where the number can select a country or a session.

A static datacenter or ISP proxy forwards traffic from the server that accepted it, so the IP in your dashboard is the exit IP. Rotating residential and mobile products put a gateway in front of a pool of peers: the hostname stays fixed while the exit IP changes per request or per session. Default sticky sessions at Oxylabs and Decodo last 10 minutes and stretch to 1,440; IPRoyal allows up to 7 days.

IPv6 adds a twist. Much software accepts only IPv4 proxy addresses, so Proxys.io delivers IPv6 proxies through an IPv4 tunnel and switches to IPv6 on its own servers. The exit IP is then IPv6, and a checker that listens only on IPv4 simply fails to load.

How to find your proxy server address on any device

Windows 10 and 11

Open Settings > Network & internet > Proxy. Manual proxy setup shows the address and port; Automatic proxy setup shows a PAC script URL and the “Automatically detect settings” switch (WPAD). Windows also keeps a second proxy setting for system services:

reg query “HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings”
netsh winhttp show proxy

The first command lists ProxyEnable, ProxyServer and AutoConfigURL for the current user. The second shows the WinHTTP proxy used by Windows Update and many services. It often says “Direct access (no proxy server)” while the user setting points at a proxy, which is why a service on the same machine can still show your real IP.

macOS

Go to System Settings > Network, select Wi-Fi or Ethernet, click Details, then Proxies. Web Proxy (HTTP) and Secure Web Proxy (HTTPS) are separate fields, so a proxy entered only under HTTP leaves every HTTPS site going direct. In Terminal, scutil –proxy prints the active configuration, and networksetup -getsecurewebproxy “Wi-Fi” shows the HTTPS entry alone.

Linux

GNOME stores its own setting (gsettings get org.gnome.system.proxy mode), but command-line tools read environment variables, which env | grep -i _proxy lists. Two details catch people. http_proxy covers only http:// URLs, so HTTPS requests go direct unless https_proxy is set too. And NO_PROXY beats an explicit curl -x: on our test bench (Ubuntu 24.04, curl 8.5.0, Squid 6.14), a host listed in NO_PROXY returned HTTP 200 while the Squid log stayed empty. No warning at all. Judge the route by the exit IP or the proxy log, never by the status code.

Browsers, Android and iPhone

On Windows and macOS, Chrome and Edge use the operating system’s proxy. Firefox has its own panel under Settings > General > Network Settings. To see what Chrome actually uses, open chrome://net-internals/#proxy; it also reflects a –proxy-server launch flag, which the normal settings page never mentions. On Android, the proxy belongs to the Wi-Fi network (Edit > Advanced options > Proxy). On iPhone and iPad it is Settings > Wi-Fi > (i) > Configure Proxy.

PAC files and WPAD

A URL instead of an address means a PAC script chooses the proxy. Download it and search for PROXY and SOCKS5 return values. Chrome falls back to a direct connection without any message when the script has a syntax error, cannot be downloaded, or returns HTTP instead of PROXY. On a managed laptop, trace an unexpected real IP to the script before you blame the proxy.

How to check the exit IP that websites see

In the browser

Open an IP lookup page in the browser profile that uses the proxy: ipinfo.io, whatismyipaddress.com and browserleaks.com/ip all work. Any “what is my IP” page doubles as a proxy IP checker, since it reports the address the connection arrived from. Read the ASN as well as the IP. A datacenter proxy shows a hosting company, a residential one shows a consumer ISP. Country and city come from a geolocation database, and every service uses its own.

From the command line

curl gives the cleanest answer: one process, one proxy, one request.

curl -s -x http://USER:PASS@HOST:PORT https://ipinfo.io/json
curl -s -x socks5h://USER:PASS@HOST:PORT https://ipinfo.io/json
curl -s -x http://USER:PASS@HOST:PORT http://httpbin.org/ip
curl -s -x http://USER:PASS@HOST:PORT https://api64.ipify.org

The first returns the IP with city, country and org (the ASN). In the second, the h in socks5h makes the proxy resolve hostnames; with plain socks5://, curl resolves them itself and your DNS resolver sees every lookup. The third is an anonymity check and has to use http://, because inside an HTTPS tunnel the proxy cannot add headers. If origin shows two addresses and the first is yours, the proxy is forwarding your IP in X-Forwarded-For. The fourth answers over IPv6 when the route supports it. On Windows PowerShell 5.1, type curl.exe: plain curl is an alias for Invoke-WebRequest, which rejects these flags.

Why an IP check shows your real IP or the wrong location

What you seeLikely causeHow to confirmFix
Browser shows your IP, curl shows the proxyEmpty HTTPS field, extension off in Incognito, PAC fallback to DIRECTchrome://net-internals/#proxyFill HTTP and HTTPS fields, allow the extension in Incognito, fix the PAC file
curl returns 200, proxy log is emptyHost matches NO_PROXY, or only http_proxy is set for an HTTPS URLRun env and look for both variablesAdd –noproxy “” or set https_proxy
Right IP, wrong country or cityGeolocation databases disagree or lag behind reassignmentsLook the IP up in IPinfo, MaxMind and IP2LocationRequest another IP or a database correction
IP pages show the proxy, a WebRTC test shows youSTUN goes over UDP, outside HTTP and SOCKS proxiesWebRTC test in the same profileWebRTC policy disable_non_proxied_udp
DNS test lists your ISP’s resolversClient resolves names itselfDNS leak test in the same clientsocks5h:// or an HTTP proxy
Static proxy returns a new IP each timeLoad-balanced exit or a rotating productThe 20-request loop belowAsk the provider which IP is yours

Location errors deserve a closer look because the IP itself is fine. Researchers from Carnegie Mellon, Stony Brook and UMass Amherst measured ping times to 2,269 proxy servers of commercial VPN providers (ACM IMC 2018) and found about a third definitely outside the advertised country, with another third doubtful. Databases also lag when an ISP reassigns a block. Oxylabs’ endpoint ip.oxylabs.io/location shows the problem plainly by returning one IP’s location from five databases side by side.

DNS and WebRTC: leaks a plain IP check misses

An echo page sees only the TCP connection that reaches it. Two other channels can give you away while every checker shows the proxy.

proxy server ip address 2
How to check a proxy server's IP address 4

In our Chrome 153 tests through local HTTP and SOCKS5 proxies, a page loaded through the proxy still sent its STUN request over UDP straight from the machine, so the STUN server saw the device’s own address. Only the disable_non_proxied_udp policy stopped it (the WebRtcIPHandling policy for administrators, the chrome.privacy API for extensions). Chrome’s SOCKS5 carries TCP only, so switching protocols does not help.

DNS leaks depend on the client more than the protocol. curl 8.5.0 and Python requests 2.34.2 resolved hostnames locally with socks5://, while httpx 0.28.1 and Go 1.24 sent them to the proxy either way. Chrome with an HTTP proxy made zero DNS queries of its own, and a PAC script calling dnsResolve() resolved names on the computer even though traffic went through the proxy. Sites combine these signals with ASN and reputation data, as covered in our breakdown of how websites recognize proxies.

A repeatable workflow for verifying a new proxy

This is how to check a proxy server’s IP address end to end before relying on it for localized search checks, ad verification or price monitoring.

  1. Record your real IP with the proxy off and the proxy variables unset.
  2. Confirm the entry address and protocol where traffic starts: OS settings, app settings or the PAC file.
  3. Query two different echo services through the proxy. The exit IP must differ from your real IP and match on both.
  4. Compare it with the dashboard IP (static proxy) or run the loop below (rotating proxy).
  5. Repeat the lookup in the exact browser profile or app you will use.
  6. Run a WebRTC test and a DNS leak test in that same profile.
  7. Check the country and ASN in two geolocation databases. If they disagree, the one your target site licenses wins, and that is rarely documented.
  8. Log the IP, ASN, country and time, so a later failure can be traced to the proxy or the target.

Checking rotating proxies and sticky sessions

For a rotating gateway, one address proves little. You need the distribution:

for i in $(seq 1 20); do curl -s -x http://USER:PASS@GATEWAY:PORT https://api.ipify.org; echo; done | sort | uniq -c | sort -rn

Per-request rotation should give close to 20 distinct addresses; a few repeats are normal in small city pools. A sticky session should show one IP until it expires, so rerun the loop after the limit. When the peer behind a sticky session goes offline, most gateways quietly switch you to a new IP. Bright Data’s -const option and Oxylabs’ sessid_oneip return a 502 instead, and IPRoyal’s _killswitch-1 returns HTTP 410. If a silent IP change would break your task, enable these and treat the error as the signal.

Expect a slow first response. Our bench counted round trips to the proxy for a first HTTPS request: 3 direct, 4 through an HTTP proxy, 6 through SOCKS5 with a password. With the proxy 150 ms away, that is 600 to 900 ms before the target adds its own time. A reused connection needs one round trip.

How proxy providers expose the exit IP

A bare IP confirms routing; ASN and multi-database geo data help with location disputes. Prices below are list prices for the smallest self-service purchase without coupons. The author works with Proxys.io.

ProviderHow to see the exit IPSticky session controlResidentialStatic or datacenter
Proxys.ioFree web Proxy Checker; on static plans the dashboard IP is the exit IPStatic IPv4 and IPv6 keep one address for the whole rental$4/GBIPv4 from $1.40/IP, IPv6 from $0.13/IP per month
Bright Databrdtest.com/myip.json (JSON with ASN and city)Session ID in the username; ends after 5 min idle8/GBpayasyougo(4 with a 3-month coupon)$1.40/IP per month at 10 IPs
Oxylabsip.oxylabs.io/location: five geo databasessessid in the username, up to 1,440 min$6/GB in plans from $30/monthfrom $1/IP
Decodoip.decodo.com/json: IP, ASN, ISP, citysessionduration in the username, up to 1,440 min$4/GB pay as you go$0.60/GB
IPRoyalDocs use third-party ipv4.icanhazip.com_session and _lifetime in the password, up to 7 days$7.35/GB$1.57/proxy per 30 days
Webshareipv4.webshare.io (plain IP)Numeric session ID in the username, up to 24 hours$3.50/GBFree plan with 10 proxies

A static IP makes the check binary: the exit IP matches the dashboard or it does not, with no session logic to debug. Proxys.io sells static IPv4 and IPv6 with HTTP(S) and SOCKS5 on every address, login or IP authorization, and refunds within 24 hours of payment, enough time to run the workflow above and return an IP that fails it. Its free Proxy Checker takes IP:port:login:password in one line and reports in 5 to 10 seconds whether the proxy connects. It answers “does it work”, not “where is it”, so the geolocation lookups still apply.

When the problem is the provider, not your setup

Once client-side causes are ruled out, these signs point at the proxy itself:

  • The exit IP of a static proxy differs from the dashboard or changes without notice.
  • Two of three geolocation databases place it outside the country you paid for.
  • The ASN belongs to a hosting company while the product is sold as residential or mobile.
  • The IP is on public blocklists such as Spamhaus on the day you receive it.

One mismatch can be database lag. Two or more on the same IP justify a replacement request, and the same pattern across several IPs is a reason to change providers.

Frequently asked questions

Is a proxy address the same as a proxy IP address?

Not always. The proxy address is the host and port you connect to; the IP websites see is the exit IP. They match on most static proxies and differ on rotating gateways.

How to check a proxy server’s IP address without installing anything?

Open ipinfo.io in a browser that uses the proxy and compare it with the same page on a direct connection. curl ships with macOS, most Linux distributions and Windows 10 version 1803 or later, so the command-line check needs no downloads either.