Skip to content
Esc

How to check a proxy — IP, country, carrier, speed and DNS and WebRTC leaks

Setup and use 4 min read

In this article
  1. 01 Step 1: does the proxy work?
  2. 02 Step 2: country and carrier
  3. 03 Step 3: mobile IP or server IP?
  4. 04 Step 4: measure latency and speed
  5. 05 Step 5: DNS leaks
  6. 06 Step 6: WebRTC leaks
  7. 07 Step 7: the browser's time zone and language
  8. 08 Quick checklist

A proxy that "works" isn't necessarily the proxy you need. A good proxy exits in the right country on the right kind of network, is fast enough for the job, and doesn't expose your real IP through DNS or WebRTC. This guide walks through every check, from a one-line command to the leak-test pages, and explains how to read the results.

Step 1: does the proxy work?

The quickest test is to call a page that returns nothing but the IP address, through the proxy:

Terminal
curl -x "http://USER:PASS@HOST:PORT" https://api.ipify.org

On Windows, open Command Prompt or PowerShell and type curl.exe rather than curl (in PowerShell, curl is an alias for a different command).

  • It prints an IP address that isn't your home IP: the proxy works.
  • It prints an error (such as 407, Failed to connect, Could not resolve proxy): each error is explained in common proxy errors.

Not comfortable with the command line? Set the proxy up in a browser following how to set up a proxy and open api.ipify.org — same result.

Step 2: country and carrier

ipinfo.io returns both the location and the owner of an IP:

Terminal
curl -x "http://USER:PASS@HOST:PORT" https://ipinfo.io/json

The result looks like this (an illustrative, shortened example; the IP and AS number come from ranges reserved for documentation):

JSON
{
  "ip": "203.0.113.42",
  "city": "Singapore",
  "country": "SG",
  "org": "AS64500 Example Mobile Operator",
  "timezone": "Asia/Singapore"
}

How to read it:

  • country is the country code: SG is Singapore.
  • timezone is the time zone of the IP's location — you'll use it again when checking the browser.
  • org is the AS number and name of the organisation that owns the IP range. This is what tells a carrier from a server.
  • city is often only approximate for mobile IPs: location databases estimate it from the carrier's ranges. For Singapore, a city-state, that hardly matters.

Different IP lookup services sometimes disagree a little. If the platform you work with matters, check a second lookup site too.

Step 3: mobile IP or server IP?

For a 4G proxy, org should be a telecom carrier, not a hosting or cloud company. If you see the name of a server or cloud provider, that IP is a datacenter IP, whatever it's sold as.

One caveat: many carriers run mobile and fixed broadband under the same AS number, so a carrier's name tells you the IP belongs to a carrier, not necessarily to its mobile network. Some IP lookup services add a separate "mobile" label. The difference between IP types is explained in 4G vs residential vs datacenter proxies.

Step 4: measure latency and speed

curl can time each stage of a request through the proxy:

Terminal
curl -x "http://USER:PASS@HOST:PORT" -o /dev/null -s -w "connect: %{time_connect}s\ntls: %{time_appconnect}s\nfirst byte: %{time_starttransfer}s\ntotal: %{time_total}s\n" https://www.google.com.sg/

On Windows, replace -o /dev/null with -o NUL. Each figure counts from the start of the request:

  • connect — connected to the proxy server;
  • tls — finished the encryption handshake with the website, through the proxy's tunnel;
  • first byte — the website started sending data;
  • total — the download finished.

To measure download speed, fetch a 25 MB test file through the proxy (this uses 25 MB of your plan's bandwidth):

Terminal
curl -x "http://USER:PASS@HOST:PORT" -o /dev/null -s -w "%{speed_download} bytes/s\n" "https://speed.cloudflare.com/__down?bytes=25000000"

How to read it: 4G proxies have higher latency than datacenter proxies — that's the nature of mobile networks. Rather than judging one number, measure a few times at different hours and look at how steady the results are.

Step 5: DNS leaks

A DNS leak happens when your machine asks your own ISP's DNS instead of letting the proxy resolve domain names. Websites still see the proxy's IP, but your ISP sees which sites you visit, and lookups may not resolve the way they would for a user in Singapore.

  • In code and cURL: use an HTTP proxy, or SOCKS5 written as socks5h:// (the h makes the proxy resolve DNS). Details in SOCKS5 vs HTTP proxies.
  • In a browser: open BrowserLeaks' DNS test. If the list of DNS servers includes your own ISP's, DNS is leaking.

Step 6: WebRTC leaks

WebRTC is the technology behind in-browser video calls and chat. In a regular browser, WebRTC can reveal your real IP even with a proxy configured.

Open BrowserLeaks' WebRTC test in the same browser or profile that uses the proxy. It must not show your home IP — only the proxy's IP or no public IP at all. If your real IP shows up, use an antidetect browser and set WebRTC to replace or hide the IP — see adding a proxy to antidetect browsers.

Step 7: the browser's time zone and language

A Singapore IP with a browser reporting another country's time zone is an easy-to-spot mismatch: Singapore is on UTC+8. Open the developer tools (F12), go to the Console tab and type:

JavaScript
Intl.DateTimeFormat().resolvedOptions().timeZone

The answer should be "Asia/Singapore" — the same as timezone in step 2. Type navigator.language to see the language the browser reports to websites.

Quick checklist

Check How Expected result
Proxy works curl -x … https://api.ipify.org Prints the proxy's IP
Country ipinfo.io country is SG
IP type ipinfo.io, the org field A carrier's name, not a hosting company
Latency curl -w Steady across several runs
DNS leak browserleaks.com/dns None of your ISP's DNS servers
WebRTC leak browserleaks.com/webrtc Your home IP doesn't appear
Time zone Intl.DateTimeFormat() in the Console Asia/Singapore

A proxy that passes all of these is ready for work. With a rotating 4G proxy, re-run steps 1 and 2 after every rotation — how to rotate is in rotating proxies explained.