Skip to main content
Threat Detection

VPN & Proxy Detection Database

Classify connections associated with VPNs, proxies, residential-proxy networks, and datacenters using downloadable data covering 1,000+ providers. Query locally and use the match alongside account, device, payment, WAF, or firewall signals.

1,000+
VPN Providers
95%+
Commercial VPN coverage
<1ms
Local lookup time

How VPN & proxy detection works

We collect and classify ranges associated with commercial VPN providers, open proxies, residential-proxy networks, and datacenters. You import each release into the lookup structure that fits your application.

1

IP Range Collection

We aggregate IP ranges from over 1,000+ VPN services, proxy networks, and data centers. Our collectors identify both well-known commercial providers (NordVPN, ExpressVPN, Surfshark) and lesser-known regional services.

2

Classification & Verification

Each IP range is classified by type: commercial VPN, SOCKS/HTTP proxy, residential proxy, or data center. We verify entries against multiple sources and remove stale IPs that are no longer active.

3

Residential Proxy Detection

Residential proxies are the hardest to detect because they use real ISP IPs. We identify residential proxy networks by monitoring known providers like Bright Data, Oxylabs, and SOAX, as well as peer-to-peer proxy networks.

4

Monthly Database Updates

VPN providers frequently rotate their IP ranges. Our database is updated monthly to ensure you have accurate, current data. Download the latest version and replace your local copy with a simple script.

Detection coverage

Commercial VPNs 95%
Data Center Proxies 92%
Residential Proxies 75%
Open/SOCKS Proxies 87%
Anonymous Proxies 83%

What's included in the database

The VPN & Proxy database is delivered as CSV and JSON files. Each record contains the following fields so you can make informed decisions about incoming traffic.

Field Type Description
ip_start string Start of the IP range (IPv4 or IPv6)
ip_end string End of the IP range
provider string Name of the VPN or proxy provider (e.g., NordVPN, ExpressVPN)
type enum Classification: vpn, proxy, residential_proxy, datacenter_proxy, open_proxy
country string Country code where the exit node is located (ISO 3166-1 alpha-2)
is_residential boolean Whether the IP belongs to a residential proxy network
risk_level enum Risk classification: low, medium, high, critical
last_seen date Date the IP was last confirmed active as a VPN/proxy endpoint
CSV & JSON
Data Formats
Monthly
Update Frequency
IPv4 & IPv6
IP Version Support

Use cases for VPN & proxy detection

From stopping payment fraud to enforcing content licensing, VPN and proxy detection is critical for any application that needs to know who its users really are.

Payment Fraud Prevention

Block fraudulent transactions from users hiding behind VPNs to bypass geo-restrictions or disguise their true location. Match billing addresses against actual IP geolocation.

Multi-Account Prevention

Detect users creating multiple accounts through different VPN servers to abuse sign-up bonuses, promotions, or referral programs.

Content Licensing Enforcement

Ensure that geo-restricted content is only accessible from licensed regions. Identify users bypassing geographic restrictions with VPN connections.

Account Takeover Detection

Flag login attempts from VPN IPs when the account has no history of VPN usage. Combine with geolocation data to detect impossible travel patterns.

Ad Fraud Mitigation

Prevent click fraud and impression fraud by detecting traffic originating from VPN and proxy infrastructure used by click farms and bots.

Scraping & Competitive Intelligence Defense

Identify scrapers hiding behind rotating residential proxies and VPNs to steal your pricing data, product listings, or proprietary content.

Query locally in your own code

Load the VPN/proxy database into MySQL, PostgreSQL, Redis, or even a flat file. Query it directly from your application with zero network overhead.

PHP - MySQL Lookup
prepare(
        "SELECT provider, type, country, risk_level, is_residential
         FROM vpn_ips
         WHERE ip_start <= INET6_ATON(:ip)
           AND ip_end   >= INET6_ATON(:ip)
         LIMIT 1"
    );
    $stmt->execute(['ip' => $ip]);
    return $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
}

// Usage in your registration or checkout flow
$ip = $_SERVER['REMOTE_ADDR'];
$result = check_vpn($pdo, $ip);

if ($result) {
    // IP matched - decide what to do
    if ($result['risk_level'] === 'critical') {
        http_response_code(403);
        exit('Access denied.');
    }
    if ($result['is_residential']) {
        // Residential proxy - higher risk, may want extra verification
        require_captcha();
    }
    // Log for review
    log_threat('vpn_detected', $ip, $result);
}
Python - SQLite Lookup
import sqlite3
import ipaddress

# Load the AntiProxies CSV into SQLite on first run
# Then query locally - no network calls needed

def check_vpn(db_path: str, ip: str) -> dict | None:
    """Check if an IP belongs to a known VPN or proxy."""
    conn = sqlite3.connect(db_path)
    conn.row_factory = sqlite3.Row
    ip_int = int(ipaddress.ip_address(ip))

    row = conn.execute(
        """SELECT provider, type, country, risk_level, is_residential
           FROM vpn_ips
           WHERE ip_start <= ? AND ip_end >= ?
           LIMIT 1""",
        (ip_int, ip_int)
    ).fetchone()

    conn.close()
    return dict(row) if row else None

# Example: check during user registration
result = check_vpn("antiproxies_vpn.db", request.remote_addr)
if result and result["risk_level"] in ("high", "critical"):
    abort(403, "Suspicious connection detected.")

Put the full dataset in your stack

€99/year gets you all 22 data categories, unlimited local queries, and one year of updates. Load the files once, keep your decision logic in-house, and update on your own deployment schedule.

30-day money-back guarantee
All databases included
Monthly updates