How to Test Proxies: Your Complete Verification Guide 2025
Before deploying proxies for scraping, account management, or security, testing is absolutely critical. Whether you’ve purchased premium proxies or found a free list online, knowing what you’re working with can save hours of frustration and wasted resources.
This comprehensive guide covers 7 proven testing methods - from quick online checkers to advanced custom solutions - ensuring you can verify proxy speed, anonymity, location accuracy, and target website compatibility.
ποΈ Quick Navigation
Testing Methods:
- Quick IP Checkers - Instant verification (30 seconds)
- Proxy Checker Tools - Multi-proxy testing
- IP Databases - Deep analysis
- Local Proxy Testers - Real-world performance
- Browser Testing - Hands-on verification
- Command Line Tools - Developer approach
- Custom Testing Scripts - Advanced automation
Essential Info:
- What to Test For - Key proxy metrics
- Testing Checklist - Step-by-step verification
- Common Issues - Problem solving
- Best Practices - Professional tips
π― Why Test Proxies Before Using Them?
The Risks of Untested Proxies
| Risk | Impact | Prevention |
|---|---|---|
| Dead Proxies | Wasted time on non-working IPs | β±οΈ Pre-test availability |
| Slow Connections | Project delays, timeouts | π Speed benchmarking |
| Wrong Location | Geo-targeting failures | π Location verification |
| Poor Anonymity | IP leaks, detection | π Anonymity testing |
| Target Blocks | Can’t access needed sites | π― Target compatibility |
| Money Wasted | Paying for unusable proxies | π° Test during trial/guarantee |
π‘ Pro Tip: Most premium proxy providers offer 24-48 hour money-back guarantees. Always test immediately upon purchase!
π What Should You Test For?
Essential Proxy Metrics
β 1. Availability (Is it Working?)
What to Check:
- Proxy responds to requests
- No connection timeouts
- Consistent uptime
Red Flags:
- β Connection refused errors
- β Timeout after 10+ seconds
- β Intermittent connectivity
β‘ 2. Speed & Latency
What to Check:
- Response time (< 3 seconds ideal)
- Download speed (Mbps)
- Latency/ping (< 500ms good)
Performance Standards:
| Proxy Type | Expected Speed | Acceptable Latency |
|---|---|---|
| Datacenter | 100-1000 Mbps | 10-100ms |
| Residential | 10-50 Mbps | 200-500ms |
| Mobile | 20-100 Mbps | 300-800ms |
π 3. Geographic Location
What to Check:
- Actual country matches advertised
- City-level accuracy (if needed)
- ISP matches expected region
Why It Matters:
- Geo-targeted content access
- Localized scraping
- Regional compliance
- Search engine localization
π 4. Anonymity Level
What to Check:
- Real IP hidden
- Proxy headers revealed?
- DNS leaks
- WebRTC leaks
Anonymity Levels:
| Level | Your IP Hidden? | Proxy Detected? | Rating |
|---|---|---|---|
| Transparent | β No | β Yes | β Poor |
| Anonymous | β Yes | β Yes | βββ Good |
| Elite | β Yes | β No | βββββ Excellent |
π’ 5. Proxy Type (Datacenter vs Residential)
What to Check:
- ISP vs datacenter hosting
- IP reputation databases
- ASN (Autonomous System Number)
Detection Methods:
- IP intelligence databases
- Known datacenter IP ranges
- ISP registration records
π― 6. Target Website Compatibility
What to Check:
- Can access your specific targets
- No CAPTCHA challenges (or rare)
- Not blocked/banned
- Correct content returned
Critical for:
- Social media automation
- E-commerce scraping
- Restricted platforms
- Geo-blocked services
π Method 1: Online IP Checkers (Instant Verification)
Best For: Quick verification, beginners, one-off checks Time Required: 30 seconds Skill Level: β Beginner
Top Online IP Checkers
π₯ IPinfo.io
URL: https://ipinfo.io
What It Shows:
- β Current IP address
- β Geographic location (city, region, country)
- β ISP/Organization
- β ASN (Autonomous System Number)
- β Basic proxy detection
How to Use:
Method A: Browser Testing
- Set up proxy in your browser
- Visit
https://ipinfo.io - Compare displayed IP with your real IP
- Verify location matches proxy location
Method B: cURL Command
# Test proxy via command line
curl --proxy http://proxy.example.com:8080 https://ipinfo.io
# With authentication
curl --proxy http://username:[email protected]:8080 https://ipinfo.io
# Pretty JSON output
curl --proxy http://proxy.example.com:8080 https://ipinfo.io/json | python -m json.tool
Sample Output:
{
"ip": "203.0.113.45",
"city": "Los Angeles",
"region": "California",
"country": "US",
"org": "AS7922 Comcast Cable Communications",
"timezone": "America/Los_Angeles"
}
π₯ WhatIsMyIP.com
URL: https://www.whatismyip.com
What It Shows:
- β IP address
- β Location (country, city)
- β ISP
- β Browser information
- β User agent
- β οΈ Proxy detection (basic)
Unique Feature: Shows browser fingerprint details
π₯ IPLeak.net
URL: https://ipleak.net
What It Shows:
- β IP address (IPv4 and IPv6)
- β DNS servers
- β WebRTC detection
- β Geolocation
- β Torrent IP detection
Why It’s Special: Best for leak detection - shows if your real IP leaks through WebRTC or DNS.
π Whoer.net
URL: https://whoer.net
What It Shows:
- β IP address
- β Anonymity score (out of 100)
- β Blacklist status
- β DNS leaks
- β WebRTC leaks
- β Browser fingerprint
Unique Feature: Anonymity score - rates your overall privacy level.
Comparison Table
| Tool | Speed | Detail Level | Leak Detection | Proxy Type | Best For |
|---|---|---|---|---|---|
| IPinfo.io | β‘β‘β‘ | βββ | β | β | Quick API checks |
| WhatIsMyIP | β‘β‘ | ββ | β | β οΈ | Basic verification |
| IPLeak.net | β‘β‘ | ββββ | β β | β οΈ | Leak testing |
| Whoer.net | β‘ | βββββ | β β | β | Complete analysis |
Python Script for Batch Testing
import requests
def test_proxy_with_ipinfo(proxy):
"""Test single proxy with IPinfo.io"""
proxies = {
'http': proxy,
'https': proxy
}
try:
response = requests.get(
'https://ipinfo.io/json',
proxies=proxies,
timeout=10
)
if response.status_code == 200:
data = response.json()
return {
'proxy': proxy,
'status': 'working',
'ip': data.get('ip'),
'city': data.get('city'),
'country': data.get('country'),
'org': data.get('org')
}
except Exception as e:
return {
'proxy': proxy,
'status': 'failed',
'error': str(e)
}
# Test multiple proxies
proxy_list = [
'http://proxy1.example.com:8080',
'http://proxy2.example.com:8080',
'http://proxy3.example.com:8080'
]
for proxy in proxy_list:
result = test_proxy_with_ipinfo(proxy)
print(f"{result['proxy']}: {result['status']}")
if result['status'] == 'working':
print(f" IP: {result['ip']}, Location: {result['city']}, {result['country']}")
π οΈ Method 2: Dedicated Proxy Checker Tools
Best For: Testing multiple proxies, comprehensive overview Time Required: 1-5 minutes Skill Level: ββ Beginner-Intermediate
Free Online Proxy Checkers
π ProxyScrape Proxy Checker
URL: https://proxyscrape.com/proxy-checker
Features:
- β Batch testing (up to 100 proxies)
- β Connection speed test
- β Anonymity level detection
- β Location identification
- β Export working proxies
How to Use:
- Visit the proxy checker page
- Paste your proxy list (one per line):
192.168.1.1:8080
proxy.example.com:3128
username:[email protected]:8080
- Select protocol (HTTP, HTTPS, SOCKS4, SOCKS5)
- Set timeout (5-30 seconds)
- Click “Check Proxies”
- Export working proxies
Output Format:
β
192.168.1.1:8080 - Working - 250ms - USA - Elite
β proxy.example.com:3128 - Failed - Timeout
β
proxy2.com:8080 - Working - 850ms - Germany - Anonymous
π Hide.me Proxy Checker
URL: https://hide.me/en/proxy-checker
Features:
- β Single proxy testing
- β Anonymity verification
- β Speed test
- β Location check
- β Simple interface
Best For: Quick single-proxy verification without bulk needs.
β‘ FreeProxyList Checker
URL: https://free-proxy-list.net/proxy-checker.html
Features:
- β Bulk proxy testing
- β Protocol support (HTTP, SOCKS)
- β Response time measurement
- β Free to use
Comparison: Online Proxy Checkers
| Feature | ProxyScrape | Hide.me | FreeProxyList |
|---|---|---|---|
| Batch Testing | β 100 proxies | β Single only | β 50 proxies |
| Speed Test | β Yes | β Yes | β Yes |
| Anonymity Check | β Yes | β Yes | β οΈ Basic |
| Export Results | β Yes | β No | β Yes |
| Auth Support | β Yes | β οΈ Limited | β No |
| API Available | β Paid | β No | β No |
π Method 3: IP Intelligence Databases
Best For: Deep analysis, proxy type identification, professional use Time Required: 1 minute per IP Skill Level: βββ Intermediate
Top IP Intelligence Services
π₯ IP2Location
URL: https://www.ip2location.com
Free Tier: 50-200 lookups/day (with registration)
What It Reveals:
| Data Point | Description |
|---|---|
| IP Address | IPv4/IPv6 |
| Country/City | Accurate geolocation |
| ISP | Internet Service Provider |
| Domain | Associated domain name |
| Proxy Type | DCH, RES, MOB, PUB, VPN, TOR |
| Usage Type | Commercial, hosting, residential |
| Threat Level | Risk score (malicious activity) |
| ASN | Autonomous System Number |
Proxy Type Codes:
- DCH: Datacenter/Hosting
- RES: Residential
- MOB: Mobile
- PUB: Public proxy
- VPN: VPN server
- TOR: Tor exit node
π₯ IPQualityScore (IPQS)
URL: https://www.ipqualityscore.com/free-ip-lookup-proxy-vpn-test
Free Tier: 5,000 lookups/month
What It Reveals:
- β Fraud score (0-100)
- β Proxy/VPN detection
- β Tor exit node detection
- β Recent abuse reports
- β Bot likelihood
- β Connection type
Fraud Score Interpretation:
- 0-25: Low risk (clean IP)
- 25-75: Medium risk (suspicious)
- 75-100: High risk (likely malicious)
π₯ IPHub
URL: https://iphub.info
Free Tier: 1,000 lookups/day
What It Reveals:
- β Proxy detection (0-2 score)
- β Country code
- β ISP
Block Score:
- 0: Residential/unclassified (good)
- 1: Non-residential (datacenter)
- 2: Known proxy/VPN/bad IP
Unique Feature: Simple binary classification - good for quick block/allow decisions.
Using IP Databases Programmatically
Python Example: IP2Location API
import requests
def check_ip_with_ip2location(ip_address, api_key):
"""Check IP details with IP2Location API"""
url = f"https://api.ip2location.com/v2/?ip={ip_address}&key={api_key}&package=WS24"
try:
response = requests.get(url, timeout=10)
data = response.json()
return {
'ip': ip_address,
'country': data.get('country_name'),
'city': data.get('city_name'),
'isp': data.get('isp'),
'proxy_type': data.get('proxy_type'),
'is_proxy': data.get('is_proxy') == 'YES',
'usage_type': data.get('usage_type')
}
except Exception as e:
return {'ip': ip_address, 'error': str(e)}
# Usage
api_key = "YOUR_API_KEY"
result = check_ip_with_ip2location("8.8.8.8", api_key)
print(result)
Python Example: IPQualityScore API
import requests
def check_ip_with_ipqs(ip_address, api_key):
"""Check IP reputation with IPQualityScore"""
url = f"https://ipqualityscore.com/api/json/ip/{api_key}/{ip_address}"
params = {
'strictness': 1, # 0-2, higher = more strict
'allow_public_access_points': 'true',
'lighter_penalties': 'false'
}
try:
response = requests.get(url, params=params, timeout=10)
data = response.json()
return {
'ip': ip_address,
'fraud_score': data.get('fraud_score'),
'is_proxy': data.get('proxy'),
'is_vpn': data.get('vpn'),
'is_tor': data.get('tor'),
'is_bot': data.get('bot_status'),
'recent_abuse': data.get('recent_abuse'),
'country': data.get('country_code'),
'isp': data.get('ISP'),
'connection_type': data.get('connection_type')
}
except Exception as e:
return {'ip': ip_address, 'error': str(e)}
# Usage
api_key = "YOUR_API_KEY"
result = check_ip_with_ipqs("8.8.8.8", api_key)
if result['fraud_score'] < 25:
print(f"β
Clean IP: {result['ip']}")
elif result['fraud_score'] < 75:
print(f"β οΈ Suspicious IP: {result['ip']}")
else:
print(f"β High-risk IP: {result['ip']}")
π» Method 4: Local Proxy Testing Applications
Best For: Target-specific testing, real-world performance, bulk validation Time Required: 2-10 minutes (depending on list size) Skill Level: ββ Intermediate
Desktop Proxy Checkers
πͺ Proxy Checker by SmartProxy (Windows/Mac)
Download: https://smartproxy.com/proxy-checker
Features:
- β Bulk proxy testing (unlimited)
- β Target website testing
- β Speed measurement
- β Export results (CSV, TXT)
- β Protocol support (HTTP, HTTPS, SOCKS5)
- β Clean interface
How to Use:
Step 1: Install Application
- Download for Windows or macOS
- Install and launch
Step 2: Import Proxies
File β Import Proxies
Paste list in format:
192.168.1.1:8080:username:password
proxy.example.com:3128
socks5://proxy3.com:1080:user:pass
Step 3: Configure Test
- Target URL:
https://www.google.com(or your specific target) - Timeout: 10 seconds
- Threads: 10 (concurrent tests)
Step 4: Run Test Click “Test Proxies”
Step 5: Export Results
Export β Working Proxies β Save as CSV
Output Example:
Proxy,Status,Speed,Location,Type
192.168.1.1:8080,Working,250ms,USA,Elite
proxy.example.com:3128,Failed,Timeout,-,-
proxy3.com:1080,Working,850ms,Germany,Anonymous
π§ GSA Proxy Scraper (Windows)
Download: https://gsa-online.de/download/gsa-proxy-scraper/
Features:
- β Built-in proxy scraping
- β Testing & filtering
- β Scheduled testing
- β Export multiple formats
- β Advanced filtering rules
Best For: Users who need both scraping and testing in one tool.
π§ ProxyChains (Linux/Mac)
Installation:
# Ubuntu/Debian
sudo apt-get install proxychains4
# macOS
brew install proxychains-ng
Configuration:
Edit /etc/proxychains.conf:
strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
http 192.168.1.1 8080 username password
socks5 proxy.example.com 1080
Usage:
# Test proxy with curl
proxychains4 curl https://ipinfo.io
# Test with custom command
proxychains4 wget https://example.com
Custom Python Proxy Tester Script
For developers who want full control:
import requests
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
def test_single_proxy(proxy, target_url, timeout=10):
"""
Test single proxy against target URL
Returns: dict with test results
"""
proxies = {
'http': proxy,
'https': proxy
}
start_time = time.time()
try:
response = requests.get(
target_url,
proxies=proxies,
timeout=timeout,
allow_redirects=True
)
elapsed = (time.time() - start_time) * 1000 # Convert to ms
return {
'proxy': proxy,
'status': 'working',
'speed_ms': round(elapsed, 2),
'status_code': response.status_code,
'response_size': len(response.content)
}
except requests.exceptions.Timeout:
return {
'proxy': proxy,
'status': 'timeout',
'error': 'Connection timeout'
}
except requests.exceptions.ProxyError:
return {
'proxy': proxy,
'status': 'proxy_error',
'error': 'Proxy connection failed'
}
except Exception as e:
return {
'proxy': proxy,
'status': 'failed',
'error': str(e)
}
def test_proxy_list(proxy_list, target_url='https://httpbin.org/ip', max_workers=10):
"""
Test multiple proxies concurrently
"""
results = []
with ThreadPoolExecutor(max_workers=max_workers) as executor:
# Submit all tests
future_to_proxy = {
executor.submit(test_single_proxy, proxy, target_url): proxy
for proxy in proxy_list
}
# Collect results as they complete
for future in as_completed(future_to_proxy):
results.append(future.result())
return results
# Usage Example
if __name__ == '__main__':
# Your proxy list
proxies = [
'http://proxy1.example.com:8080',
'http://user:[email protected]:8080',
'socks5://proxy3.example.com:1080'
]
# Test against target
target = 'https://www.google.com'
results = test_proxy_list(proxies, target_url=target, max_workers=5)
# Display results
print(f"\nTesting {len(proxies)} proxies against {target}\n")
print(f"{'Proxy':<40} {'Status':<15} {'Speed':<10}")
print("-" * 70)
working = 0
for result in results:
status = result['status']
speed = f"{result.get('speed_ms', 0)}ms" if status == 'working' else 'N/A'
print(f"{result['proxy']:<40} {status:<15} {speed:<10}")
if status == 'working':
working += 1
print(f"\nβ
Working: {working}/{len(proxies)} ({working/len(proxies)*100:.1f}%)")
Save as: proxy_tester.py
Run:
python proxy_tester.py
π Method 5: Manual Browser Testing
Best For: Hands-on verification, visual inspection, beginners Time Required: 2-5 minutes per proxy Skill Level: β Beginner
Step-by-Step Browser Testing
Chrome/Edge Testing
Step 1: Configure Proxy See our complete proxy setup guide
Quick Setup:
Settings β System β Open proxy settings β Manual proxy
Enter: proxy.example.com:8080
Step 2: Visit Test Sites
Test 1: IP Verification
Visit: https://ipinfo.io
Check: IP matches proxy, not your real IP
Test 2: Location Verification
Visit: https://www.google.com
Check: Google shows correct region/language
Test 3: Anonymity Check
Visit: https://whoer.net
Check: Anonymity score, no leaks
Test 4: Target Website
Visit: Your actual target website
Check: Loads correctly, no blocks/CAPTCHAs
Firefox Testing
Advantage: Firefox has independent proxy settings (doesn’t use system proxy).
Setup:
Settings β Network Settings β Manual proxy configuration
HTTP Proxy: proxy.example.com Port: 8080
βοΈ Also use this proxy for HTTPS
Same testing steps as Chrome above.
Visual Testing Checklist
β Successful Proxy Test:
- IP address changed from your real IP
- Location matches proxy location
- No DNS leaks detected
- No WebRTC leaks detected
- Target website loads normally
- No excessive CAPTCHAs
- Page loads in < 5 seconds
- Content matches expected region
β Failed Proxy Test:
- Real IP still visible
- Location doesn’t match
- DNS/WebRTC leaks present
- Target website blocks access
- Constant CAPTCHA challenges
- Very slow loading (> 15 seconds)
- Error messages or timeouts
β¨οΈ Method 6: Command Line Testing (cURL & Wget)
Best For: Developers, automation, scripting, quick checks Time Required: 10 seconds per test Skill Level: βββ Advanced
cURL Proxy Testing
Basic Connection Test
# Test if proxy works
curl --proxy http://proxy.example.com:8080 https://ipinfo.io
# With authentication
curl --proxy http://username:[email protected]:8080 https://ipinfo.io
# SOCKS5 proxy
curl --socks5 proxy.example.com:1080 https://ipinfo.io
Speed Test with Timing
# Measure total time
curl --proxy http://proxy.com:8080 \
-w "Time: %{time_total}s\n" \
-o /dev/null \
-s \
https://www.google.com
Output:
Time: 0.458s
Detailed Timing Breakdown
# Show all timing metrics
curl --proxy http://proxy.com:8080 \
-w "\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
-o /dev/null \
-s \
https://example.com
Output:
DNS: 0.045s
Connect: 0.124s
TTFB: 0.385s
Total: 0.458s
Check Response Headers
# See all response headers
curl --proxy http://proxy.com:8080 \
-I \
https://example.com
Look for:
X-Forwarded-For: Should show proxy IP, not yoursVia: May reveal proxy presence (anonymous proxies)X-Real-IP: Should be proxy IP
Test Multiple Proxies (Bash Script)
#!/bin/bash
# save as: test_proxies.sh
PROXY_LIST="proxies.txt" # One proxy per line
TARGET_URL="https://ipinfo.io"
echo "Testing proxies from $PROXY_LIST"
echo "=================================="
while IFS= read -r proxy; do
echo -n "Testing $proxy ... "
response=$(curl --proxy "$proxy" \
--connect-timeout 10 \
--max-time 15 \
-s \
"$TARGET_URL")
if [ $? -eq 0 ]; then
ip=$(echo "$response" | grep -oP '"ip":\s*"\K[^"]+')
country=$(echo "$response" | grep -oP '"country":\s*"\K[^"]+')
echo "β
Working - IP: $ip, Country: $country"
else
echo "β Failed"
fi
done < "$PROXY_LIST"
Usage:
chmod +x test_proxies.sh
./test_proxies.sh
Wget Proxy Testing
# Basic test
wget -e use_proxy=yes \
-e http_proxy=proxy.example.com:8080 \
-O - \
https://ipinfo.io
# With authentication
wget -e use_proxy=yes \
-e http_proxy=username:[email protected]:8080 \
-O - \
https://ipinfo.io
# Speed test (download file)
wget -e use_proxy=yes \
-e http_proxy=proxy.example.com:8080 \
--output-document=/dev/null \
https://speed.hetzner.de/100MB.bin
ποΈ Method 7: Build Your Own Proxy Tester
Best For: Professional use, custom requirements, ongoing testing Time Required: 1-4 hours setup, then automated Skill Level: βββββ Expert
Advanced Python Proxy Testing Framework
#!/usr/bin/env python3
"""
Advanced Proxy Testing Framework
Features: Speed, anonymity, location, target testing
"""
import requests
import time
import json
from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import List, Dict
import statistics
class ProxyTester:
def __init__(self, timeout=10, max_workers=10):
self.timeout = timeout
self.max_workers = max_workers
self.results = []
def test_availability(self, proxy: str) -> Dict:
"""Test if proxy is responsive"""
proxies = {'http': proxy, 'https': proxy}
try:
response = requests.get(
'https://httpbin.org/ip',
proxies=proxies,
timeout=self.timeout
)
return {
'available': response.status_code == 200,
'status_code': response.status_code
}
except:
return {'available': False, 'status_code': None}
def test_speed(self, proxy: str, iterations=3) -> Dict:
"""Test proxy speed with multiple iterations"""
proxies = {'http': proxy, 'https': proxy}
times = []
for _ in range(iterations):
start = time.time()
try:
requests.get(
'https://www.google.com',
proxies=proxies,
timeout=self.timeout
)
elapsed = (time.time() - start) * 1000
times.append(elapsed)
except:
return {'speed_ms': None, 'speed_rating': 'failed'}
avg_speed = statistics.mean(times)
# Speed rating
if avg_speed < 500:
rating = 'excellent'
elif avg_speed < 1000:
rating = 'good'
elif avg_speed < 2000:
rating = 'acceptable'
else:
rating = 'slow'
return {
'speed_ms': round(avg_speed, 2),
'speed_min': round(min(times), 2),
'speed_max': round(max(times), 2),
'speed_rating': rating
}
def test_location(self, proxy: str) -> Dict:
"""Get proxy geographic location"""
proxies = {'http': proxy, 'https': proxy}
try:
response = requests.get(
'https://ipinfo.io/json',
proxies=proxies,
timeout=self.timeout
)
data = response.json()
return {
'ip': data.get('ip'),
'city': data.get('city'),
'region': data.get('region'),
'country': data.get('country'),
'org': data.get('org')
}
except:
return {
'ip': None,
'city': None,
'region': None,
'country': None,
'org': None
}
def test_anonymity(self, proxy: str) -> Dict:
"""Test proxy anonymity level"""
proxies = {'http': proxy, 'https': proxy}
try:
# Check headers that proxy sends
response = requests.get(
'https://httpbin.org/headers',
proxies=proxies,
timeout=self.timeout
)
headers = response.json()['headers']
# Check for revealing headers
has_xff = 'X-Forwarded-For' in headers
has_via = 'Via' in headers
if not has_xff and not has_via:
level = 'elite'
elif has_via or has_xff:
level = 'anonymous'
else:
level = 'transparent'
return {
'anonymity_level': level,
'reveals_proxy': has_via,
'reveals_ip': has_xff
}
except:
return {
'anonymity_level': 'unknown',
'reveals_proxy': None,
'reveals_ip': None
}
def test_target_compatibility(self, proxy: str, target_url: str) -> Dict:
"""Test if proxy works with specific target"""
proxies = {'http': proxy, 'https': proxy}
try:
response = requests.get(
target_url,
proxies=proxies,
timeout=self.timeout
)
# Check for blocks/CAPTCHAs
content = response.text.lower()
blocked = any(keyword in content for keyword in [
'captcha', 'blocked', 'access denied', 'forbidden'
])
return {
'compatible': response.status_code == 200 and not blocked,
'status_code': response.status_code,
'blocked': blocked
}
except:
return {
'compatible': False,
'status_code': None,
'blocked': None
}
def test_comprehensive(self, proxy: str, target_url=None) -> Dict:
"""Run all tests on a proxy"""
print(f"Testing {proxy}...")
result = {'proxy': proxy}
# Test 1: Availability
avail = self.test_availability(proxy)
result.update(avail)
if not avail['available']:
result['overall_status'] = 'failed'
return result
# Test 2: Speed
speed = self.test_speed(proxy)
result.update(speed)
# Test 3: Location
location = self.test_location(proxy)
result.update(location)
# Test 4: Anonymity
anonymity = self.test_anonymity(proxy)
result.update(anonymity)
# Test 5: Target compatibility (optional)
if target_url:
compat = self.test_target_compatibility(proxy, target_url)
result.update(compat)
# Overall rating
if speed['speed_ms'] and speed['speed_ms'] < 1000:
result['overall_status'] = 'excellent'
elif speed['speed_ms'] and speed['speed_ms'] < 2000:
result['overall_status'] = 'good'
else:
result['overall_status'] = 'acceptable'
return result
def test_batch(self, proxy_list: List[str], target_url=None) -> List[Dict]:
"""Test multiple proxies concurrently"""
results = []
with ThreadPoolExecutor(max_workers=self.max_workers) as executor:
futures = {
executor.submit(self.test_comprehensive, proxy, target_url): proxy
for proxy in proxy_list
}
for future in as_completed(futures):
results.append(future.result())
self.results = results
return results
def export_results(self, filename='proxy_test_results.json'):
"""Export test results to JSON"""
with open(filename, 'w') as f:
json.dump(self.results, f, indent=2)
print(f"β
Results exported to {filename}")
def print_summary(self):
"""Print human-readable summary"""
if not self.results:
print("No results to display")
return
print("\n" + "="*80)
print("PROXY TESTING RESULTS")
print("="*80)
working = [r for r in self.results if r.get('available')]
print(f"\nβ
Working: {len(working)}/{len(self.results)}")
if working:
speeds = [r['speed_ms'] for r in working if r.get('speed_ms')]
if speeds:
print(f"β‘ Avg Speed: {statistics.mean(speeds):.2f}ms")
print(f"β‘ Fastest: {min(speeds):.2f}ms")
print(f"β‘ Slowest: {max(speeds):.2f}ms")
print("\n" + "-"*80)
print(f"{'Proxy':<40} {'Status':<10} {'Speed':<10} {'Location':<15} {'Anonymity':<10}")
print("-"*80)
for r in self.results:
proxy = r['proxy'][:38]
status = 'β
' if r.get('available') else 'β'
speed = f"{r.get('speed_ms', 0):.0f}ms" if r.get('speed_ms') else 'N/A'
location = f"{r.get('country', 'N/A')}"
anon = r.get('anonymity_level', 'N/A')
print(f"{proxy:<40} {status:<10} {speed:<10} {location:<15} {anon:<10}")
# Usage Example
if __name__ == '__main__':
# Your proxy list
proxies = [
'http://proxy1.example.com:8080',
'http://user:[email protected]:8080',
'http://proxy3.example.com:8080'
]
# Initialize tester
tester = ProxyTester(timeout=15, max_workers=5)
# Test all proxies
print("Starting comprehensive proxy testing...\n")
results = tester.test_batch(proxies, target_url='https://www.google.com')
# Display results
tester.print_summary()
# Export to JSON
tester.export_results('proxy_results.json')
Save as: advanced_proxy_tester.py
Run:
python advanced_proxy_tester.py
Features of This Framework
| Feature | Description | Benefit |
|---|---|---|
| Concurrent Testing | Tests multiple proxies simultaneously | 10x faster than sequential |
| Speed Benchmarking | Multiple iterations with statistics | Accurate performance metrics |
| Anonymity Detection | Checks proxy headers | Know your privacy level |
| Location Verification | Gets geo data from IPinfo | Confirm proxy location |
| Target Testing | Checks specific websites | Real-world compatibility |
| JSON Export | Structured data output | Easy integration |
| Human Readable | Pretty printed summary | Quick overview |
β Proxy Testing Checklist
Before Testing
- Understand your use case (scraping, accounts, privacy)
- Know what proxy type you have (datacenter, residential, mobile)
- Have proxy credentials ready (if required)
- Know your target websites (if applicable)
- Set realistic expectations for proxy type
During Testing
Basic Tests:
- Test availability (is it online?)
- Test speed (< 3 seconds ideal)
- Verify IP changed from your real IP
- Check geographic location
- Confirm proxy type (datacenter vs residential)
Advanced Tests:
- Check anonymity level (elite preferred)
- Test DNS leaks (should use proxy DNS)
- Test WebRTC leaks (should hide real IP)
- Test target website compatibility
- Check for CAPTCHA frequency
- Measure success rate (aim for 90%+)
After Testing
Analysis:
- Calculate working percentage (aim for 95%+)
- Identify speed outliers (remove very slow)
- Verify locations match your needs
- Check anonymity meets requirements
- Test target compatibility is acceptable
Action:
- Remove non-working proxies from list
- Document working proxies
- Set up monitoring for production
- Request refund if quality poor (within guarantee period)
- Contact provider if issues found
π¨ Troubleshooting Failed Proxy Tests
Issue 1: All Proxies Fail Availability Test
Possible Causes:
1. Authentication Problem
# β Wrong format
proxy = 'http://proxy.com:8080' # Missing credentials
# β
Correct format
proxy = 'http://username:[email protected]:8080'
2. IP Not Whitelisted
# Check your current IP
curl https://ipinfo.io/ip
# Add to provider's whitelist
3. Wrong Port/Protocol
# Try different protocols
proxies = [
'http://proxy.com:8080', # HTTP
'https://proxy.com:8080', # HTTPS
'socks5://proxy.com:1080' # SOCKS5
]
Issue 2: Proxies Work But Very Slow
Solutions:
1. Geographic Distance
- Use proxies closer to your location
- Or closer to target website
2. Proxy Type Mismatch
- Residential naturally slower than datacenter
- Consider datacenter if speed critical
3. Overloaded Proxy
- Test at different times
- Try dedicated vs shared proxies
4. Target Website Slow
# Test proxy speed with fast endpoint
curl --proxy http://proxy.com:8080 \
-w "Time: %{time_total}s\n" \
-o /dev/null \
-s \
https://www.google.com
Issue 3: Anonymity Tests Show Leaks
DNS Leak:
# Use proxy's DNS
proxies = {
'http': 'http://proxy.com:8080',
'https': 'http://proxy.com:8080'
}
# Don't use system DNS
WebRTC Leak:
- Disable WebRTC in browser
- Chrome:
chrome://flags/#enable-webrtc - Firefox:
about:configβmedia.peerconnection.enabled= false
Check for leaks:
- Visit:
https://ipleak.net - Ensure no real IP visible
Issue 4: Target Website Blocks Proxy
Solutions:
1. Upgrade Proxy Type
Datacenter β Residential β Mobile
2. Improve Request Headers
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
3. Add Delays
import time
time.sleep(random.uniform(2, 5))
4. Use Session Management
session = requests.Session()
session.proxies = proxies
session.headers = headers
# Maintain cookies and session
response1 = session.get(url1)
response2 = session.get(url2) # Uses same session
π‘ Proxy Testing Best Practices
β DO:
1. Test Immediately
- Test proxies within money-back guarantee period
- Most providers: 24-48 hours
- Document results for potential refund
2. Test Your Actual Use Case
# Don't just test Google
target = 'https://your-actual-target.com'
test_proxy(proxy, target)
3. Test Multiple Times
# One test isn't enough
for i in range(5):
result = test_proxy(proxy, target)
# Check consistency
4. Test at Different Times
- Morning, afternoon, evening
- Weekday vs weekend
- Peak vs off-peak hours
5. Keep Records
# Log all test results
results = {
'date': '2025-11-04',
'proxy': proxy,
'tests': [test1, test2, test3],
'avg_speed': avg_speed,
'success_rate': success_rate
}
β DON’T:
1. Don’t Trust Free Proxies
- 99% are malicious or unusable
- Use only for learning/testing
- Never for production or sensitive data
2. Don’t Test Just Once
- Network conditions vary
- One success doesn’t mean reliability
- One failure doesn’t mean proxy is bad
3. Don’t Ignore Target Compatibility
# β Wrong
test_proxy_with_google(proxy) # Google works
use_for_instagram(proxy) # Instagram blocks
# β
Correct
test_proxy_with_instagram(proxy) # Test actual target
4. Don’t Forget Rate Limits
# β Don't hammer servers
for proxy in 1000_proxies:
test_immediately(proxy)
# β
Add delays
for proxy in 1000_proxies:
test(proxy)
time.sleep(1) # Be respectful
5. Don’t Mix Proxy Types
- Datacenter β Residential performance
- Compare apples to apples
- Test same type together
π Frequently Asked Questions
How many proxies should I test before purchasing more?
Sample Size Recommendation:
| Purchase Size | Test Sample | Reason |
|---|---|---|
| 10-50 proxies | All of them | Small enough to test all |
| 50-200 proxies | 20-50 (25%) | Representative sample |
| 200-1000 proxies | 50-100 (10%) | Statistical significance |
| 1000+ proxies | 100-200 (5-10%) | Large sample sufficient |
Statistical Rule:
- Test at least 30 proxies for meaningful data
- Aim for 95% working rate
- If < 80% working, contact provider
What’s a good proxy success rate?
Success Rate Standards:
| Rate | Quality | Action |
|---|---|---|
| 95-100% | βββββ Excellent | Keep provider |
| 85-95% | ββββ Good | Acceptable |
| 70-85% | βββ Acceptable | Monitor closely |
| 50-70% | ββ Poor | Contact provider |
| < 50% | β Very Poor | Request refund |
Note: Rates vary by proxy type and target:
- Datacenter on Google: 90-95% normal
- Residential on Instagram: 95-99% expected
- Datacenter on Instagram: 50-70% typical
How often should I re-test my proxies?
Re-testing Schedule:
| Scenario | Frequency | Reason |
|---|---|---|
| Production Scraping | Every 6-12 hours | Detect failures early |
| Social Media Accounts | Daily | Accounts are sensitive |
| Long-term Projects | Weekly | Monitor degradation |
| One-time Tasks | Before use | Ensure still working |
| Static Proxies | After issues | Diagnose problems |
| Rotating Proxies | Monthly | Pool quality check |
Automated Monitoring:
# Schedule with cron
0 */6 * * * python /path/to/proxy_tester.py # Every 6 hours
My test shows elite anonymity but target detects proxy. Why?
Anonymity β Undetectable
Possible Detection Methods:
1. IP Reputation Databases
- IP is in known proxy lists
- Solution: Use residential proxies
2. Behavior Patterns
- Too fast, too perfect, no cookies
- Solution: Humanize requests, maintain sessions
3. Browser Fingerprinting
- Headless browser detected
- Solution: Use stealth plugins, real browser profiles
4. TLS Fingerprinting
- Proxy’s TLS signature known
- Solution: Use residential or mobile proxies
Elite anonymity means:
- β Proxy headers hidden
- β Your IP hidden
- β Doesn’t guarantee undetectability
Can I test proxies without knowing the credentials?
With IP Whitelist: β Yes - if your IP is authorized, no credentials needed
Without IP Whitelist: β No - authentication required
Workaround for Unknown Credentials:
# Try common formats
formats = [
f'http://{ip}:{port}',
f'http://user:pass@{ip}:{port}',
f'socks5://{ip}:{port}'
]
for format in formats:
if test_proxy(format):
print(f"Working format: {format}")
Should I test free proxy lists?
For Learning: β Yes For Production: β NEVER
Why Test Free Proxies?
- Learn proxy concepts
- Test your code
- Understand different proxy types
- Practice testing methods
Reality Check:
Free proxy list of 1000 IPs:
β
Working: ~50 (5%)
β‘ Fast enough: ~10 (1%)
π Safe to use: ~0 (0%)
Better Alternative:
- Use free trials from reputable providers
- Webshare: 10 free residential proxies
- Proxy6: Trial options available
π― Conclusion: Your Proxy Testing Action Plan
Quick Testing (5 minutes)
For beginners or quick checks:
- Visit
https://ipinfo.iowith proxy configured - Verify IP changed and location correct
- Check
https://whoer.netfor anonymity score - Test your target website
- If all pass β proxy is working
Comprehensive Testing (30 minutes)
For serious projects:
- Availability - Test with online checker or cURL
- Speed - Measure response time (< 2 seconds good)
- Location - Verify with IP database (IP2Location)
- Anonymity - Check leak sites (IPLeak.net)
- Type Detection - Confirm datacenter vs residential
- Target Compatibility - Test actual website
- Consistency - Run tests 5+ times
- Documentation - Record all results
Automated Testing (Setup once, run forever)
For professionals:
- Use custom testing script
- Schedule automated testing (cron/Task Scheduler)
- Export results to database
- Set up alerts for failures
- Monitor trends over time
π Next Steps
Now that you know how to test proxies:
Choose Your Proxies:
- Read our guide on proxy types to choose the right type
- Check best proxy providers for recommendations
- Try Webshare - 10 free residential proxies
- Consider Proxy6 - budget-friendly option
Set Up Your Proxies:
- Follow our complete setup guide
- Configure for your specific platform
- Implement proper authentication
Learn the Fundamentals:
- Read What Are Proxies? for comprehensive basics
- Understand different use cases
- Learn about pricing and value
Remember: Testing proxies isn’t a one-time task. Regular monitoring ensures your operations run smoothly and helps you catch issues before they impact your projects.
Last Updated: November 4, 2025
Disclaimer: Proxy testing methods and tools may change. Always verify current functionality before relying on any testing method.