The terminal is the fastest way to check that a proxy works, find out which IP and country you're getting, and measure how quick it is. Bookmark this page. Replace USERNAME and PASSWORD with your own from the generator; the examples use the Residential gateway geo.crawlproxies.com.
cURL: HTTP proxy
# credentials in the proxy URL
curl -x http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/json
# or separately with -U (--proxy-user)
curl -x http://geo.crawlproxies.com:8080 -U "USERNAME:PASSWORD" https://ipinfo.io/jsonHTTPS websites work through an HTTP proxy: cURL opens a tunnel with CONNECT, and the TLS connection to the site stays end to end.
cURL: SOCKS5
curl -x socks5h://USERNAME:PASSWORD@geo.crawlproxies.com:1080 https://ipinfo.io/jsonUse socks5h:// (with the h) so the proxy resolves the hostname. Plain socks5:// looks up DNS on your own machine.
Targeting and sessions
Location and session options go in the username, so they work in every command on this page:
# a German IP
curl -x http://USERNAME-country-de:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/json
# a sticky Texas IP for 10 minutes
curl -x http://USERNAME-country-us-state-texas-session-t1-time-600:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/ipSee geo-targeting and sticky vs rotating sessions for every option.
Just the IP, please
curl -s -x http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/ipWatch rotation happen
Each curl call opens a new connection, so a rotating username gives a new IP every time:
for i in 1 2 3 4 5; do
curl -s -x http://USERNAME-country-us:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/ip; echo
doneSwap in a sticky username and the five IPs will match.
Measure speed
curl -s -o /dev/null -x http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 \
-w "connect %{time_connect}s first byte %{time_starttransfer}s total %{time_total}s\n" \
https://example.com/time_connect is how long it took to reach the proxy; time_starttransfer includes the trip to the website and back. Run it a few times; residential exits vary a little.
Debug a failing connection
curl -v -x http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/ipIn the verbose output look for:
CONNECT ipinfo.io:443followed by200 Connection established: the proxy accepted you.407 Proxy Authentication Required: wrong username or password.Failed to connect to geo.crawlproxies.com port ...: wrong port, or a firewall in the way.
Environment variables
Most command-line tools read these:
export http_proxy="http://USERNAME:PASSWORD@geo.crawlproxies.com:8080"
export https_proxy="http://USERNAME:PASSWORD@geo.crawlproxies.com:8080"
export no_proxy="localhost,127.0.0.1"cURL only reads the lowercase http_proxy, but accepts https_proxy in either case. Setting both lowercase forms covers everything.
wget
wget -qO- -e use_proxy=yes \
-e https_proxy=http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 \
https://ipinfo.io/jsonOr keep the credentials out of the URL:
wget -qO- -e use_proxy=yes -e https_proxy=http://geo.crawlproxies.com:8080 \
--proxy-user=USERNAME --proxy-password=PASSWORD https://ipinfo.io/jsonwget doesn't support SOCKS proxies. Use cURL for SOCKS5. To make the proxy permanent, put the same settings in ~/.wgetrc:
use_proxy = on
https_proxy = http://geo.crawlproxies.com:8080
http_proxy = http://geo.crawlproxies.com:8080
proxy_user = USERNAME
proxy_password = PASSWORDWindows
Windows 10 and 11 include real cURL as curl.exe. In PowerShell, type curl.exe explicitly: in Windows PowerShell 5.1, plain curl is an alias for Invoke-WebRequest, which takes different options.
curl.exe -x http://USERNAME:PASSWORD@geo.crawlproxies.com:8080 https://ipinfo.io/jsonWith PowerShell's own cmdlet:
$cred = New-Object System.Management.Automation.PSCredential("USERNAME", (ConvertTo-SecureString "PASSWORD" -AsPlainText -Force))
Invoke-RestMethod -Uri https://ipinfo.io/json -Proxy http://geo.crawlproxies.com:8080 -ProxyCredential $credQuick reference
| Task | Command |
|---|---|
| HTTP proxy | curl -x http://USER:PASS@geo.crawlproxies.com:8080 URL |
| SOCKS5 proxy | curl -x socks5h://USER:PASS@geo.crawlproxies.com:1080 URL |
| Show your proxy IP | curl -s -x ... https://ipinfo.io/ip |
| Verbose debugging | curl -v -x ... URL |
| Timing | curl -s -o /dev/null -w "%{time_total}\n" -x ... URL |
| wget with proxy | wget -e use_proxy=yes -e https_proxy=http://USER:PASS@geo.crawlproxies.com:8080 URL |
Ready to move from the terminal to code? Start with Python or Node.js.



