Skip to main content
Blog
Blog

How to detect VPN traffic on your website

VPN detection in five signals: IP block ownership, JA4 TLS fingerprint, timezone drift, WebRTC, and behavior. IP lists alone miss residential VPNs.

Jan 14, 2026 Updated Aug 10, 2026 14 min read
Blog-How to Detect VPN Traffic On Your Website
Table of Contents

VPN detection works by cross-checking five signals: IP block ownership, TLS handshake fingerprint (JA4), device timezone vs. IP geolocation, WebRTC local address, and behavioral patterns. Each signal is individually weak (VPN providers can counter any one in isolation), but three or more matching signals gives high-confidence detection. The cheapest check is IP block ownership; JA4 TLS fingerprinting is the most stable signal that VPN providers cannot trivially rotate around.

TL;DR: how to detect VPN traffic

  • Five detection layers: One-off IP lookups miss modern VPNs. Real detection stacks five layers: IP block ownership, timezone drift, WebRTC local address, TLS fingerprint, behavioral mismatch.
  • Score across all five: Score across all five. Three of five matching gives you high-confidence VPN or proxy.
  • Cheapest versus costliest: Cheapest layer is IP block ownership. Behavioral mismatch costs the most but catches the sophisticated proxies.

Short on time? See cside's VPN detection. It covers everything below in one deployment.

Why VPN detection matters in 2026

VPN detection has evolved from a niche technical challenge to a business imperative. As age verification laws sweep across US states and the UK Online Safety Act takes effect, website owners now face legal liability when minors access restricted content, even if those web visitors use VPNs to bypass geographic restrictions.

From Texas to Wisconsin to the United Kingdom, the message from legislators is clear: detecting and managing VPN traffic is your responsibility. In this blogpost we'll examine why VPN detection matters, review the legislative drivers creating legal pressure, explore technical detection methods, and help you determine the right approach for your business. Whether you're subject to age verification laws, geographic content restrictions, or contractual distribution agreements, this guide will help you navigate the complex landscape of VPN detection in 2026.

infographic-what-states-have-age-verification-requirements
Infographic: What states have age verification requirements

Failing to detect VPNs may violate local legislations

When the Online Safety Act came into force in the UK, overnight a surge of over 700% took place on the VPN search term.

online-searches-for-vpn-in-the-uk-spike
Online searches for VPNs have spiked after age verification laws

Proton VPN reported a 1,400% jump in signups.

proton-vpn-signups-spike-after-uk-age-verification
Proton VPN signups spike after UK Age Verification legislature

For a few weeks, this sudden surge was all over the news.

This inevitably triggered a counter response from legislators. The US state of Wisconsin was the first to react by Announcing Wisconsin Assembly Bill 105. The bill aims to force adult content sites to block VPN access.

The bill states: "A business entity that knowingly and intentionally publishes or distributes material harmful to minors on the Internet from a website that contains a substantial portion of such material shall prevent persons from accessing the website from an internet protocol address or internet protocol address range that is linked to or known to be a virtual private network system or virtual private network provider."

Under Louisiana's Act 440, failing to verify age (such as allowing VPN access) opens the door to civil lawsuits. The parents of a minor that was able to access "harmful content" through a VPN can sue the site owner for damages, court costs and attorney fees.

Other US states like Michigan and Indiana are pursuing similar action. With Indiana pursuing legal action against over 50 websites.

In the UK, government officials are calling VPNs "a loophole that needs closing".

The conclusion here is clear: as a website owner it is your job to detect VPN traffic and prevent circumvention of age verification or state level blocks.

Failing to detect VPNs breaks contractual obligations on distribution rights

When content distributors purchase rights to certain content it is usually geographically limited. When users travel abroad VPN usage is commonly used to continue watching their favourite series from home.When users want to watch a series that is not available in their country, they frequently use a VPN to gain access to that content.

While the user mostly does this out of convenience, this is a breach of distribution rights and in 2026 it is growing increasingly common for film studios to enforce strict VPN prevention techniques to prevent breaches.

There has always been really 2 versions of the internet:

  1. The open, unauthenticated internet. Relatively anonymous with the exception of some tracking techniques.
  2. The authenticated internet. Users logging in with their credentials. They are known visitors and their access is conditional to them.

Over the years regulators identified that certain content types on the open and unauthenticated internet can be harmful at developing ages. This led to the legislation we see today, requiring companies to perform age verification on visitors.Age verification is currently being performed in a number of ways:

  1. Facial age estimation using Machine Learning.
  2. Credit Card Verification, to verify a user has a credit card, which means they are likely adults.
  3. Photo ID Verification
  4. Digital ID Wallets, sharing only an 'over 18' credential without further context
  5. Open Banking API to verify the age of the bank account holder
  6. Mobile Network Operator, allowing to verify the age of a visitor using the contract with the mobile provider.
  7. Email-Based estimation, verifying the email history of a user across the internet to estimate their age.

Some of these methods are seen as privacy intrusive and as a result website visitors end up using a VPN to work around the restriction instead of complying.

Ways to detect VPNs

There are a few methods that can be used to detect VPNs. Some are quick and dirty, others are more invested in being accurate.

1. Detections on the network and application level

Technical readers may be aware of the OSI stack. There are 7 layers of a network application in the OSI stack.

Diagram of the 7-layer OSI networking model stack
illustration of the OSI stack

Across layer 3, 4 and 7 various elements differ between direct human connections and connections routed through VPN infrastructure. Investigating these layers yields evidence of VPN usage. For example - mismatching machine level timezones to claimed locations, or suspicious network packets.

An independent scientific review of VPN detection methods found this to be the most effective approach.

JA4 TLS fingerprinting

The TLS handshake happens before any HTTP data is exchanged. When a browser connects over HTTPS, it sends a ClientHello message that lists the cipher suites, TLS version, extensions, and elliptic curve groups it supports. JA4 (the 2023 successor to the earlier JA3 standard, developed by FoxIO) hashes these parameters into a short, stable fingerprint.

What matters is which software opens the TLS connection. Transparent tunnel VPNs (WireGuard, OpenVPN in routing mode) forward packets at the network layer and never touch the handshake, so the browser generates the ClientHello itself and the JA4 hash is indistinguishable from an unproxied session. The signal appears when non-browser software originates the request instead: a residential proxy SDK, scraping runtime, or automation client using Go net/tls, Python ssl, or curl produces a ClientHello that deviates structurally from Chrome BoringSSL or Firefox NSS. This is why the scientific review above identifies TLS-level analysis as one of the most durable signals for proxy-originated traffic: an operator can rotate exit IPs cheaply, but cannot cheaply make a non-browser runtime imitate a browser TLS stack.

For deeper background on JA4 mechanics and where TLS fingerprinting can fail, see our TLS fingerprinting guide.

2. IP lists

A simple, quick approach is purchasing or obtaining an open-source list of IP addresses flagged as VPNs. This approach can cover some basic VPNs, but the cat and mouse game is often stronger. Internet users look for VPNs that don't get flagged. VPN providers know when they get flagged and look for alternative measures. Using IP lists can be a start, it can show you made an effort to detect VPNs, but we fundamentally don't believe this approach works in the real world.

If you really need to stop VPN access, you must be willing to face the fact that there are more people looking for ways around your detections than there are maintaining them. So a simple list of IP addresses will not pass the test of the real world.

Especially in a world where regulators have already shown intent to retaliate against checkbox oriented approaches, it's best to recognize how an invested user will seek to bypass the detection efforts.

Detection method comparison

MethodHow it worksAccuracyBypass difficulty
IP blocklist (MaxMind, IPQualityScore)Matches exit IP against known VPN/datacenter CIDR rangesLow (exits rotate hourly)Easy: residential proxies bypass entirely
TLS fingerprint (JA4/JA3)Hashes ClientHello to identify the runtime that originated the requestMedium-high (proxy-originated only)Hard: requires utls or curl-impersonate
Timezone vs. IP geolocationCompares JS-reported device timezone to IP countryMediumEasy: users can change system timezone
WebRTC local IP (desktop only)Reads RFC 1918 local address via WebRTC APIMediumPartly mitigated in modern browsers
Behavioral analysisTiming, cursor/scroll, session patternsHighVery hard: requires human simulation

How do websites detect VPN usage?

Websites detect VPN usage by layering server-side IP checks with browser-level signals collected through JavaScript:

IP block ownership is checked server-side. The server inspects the visitor's exit IP against CIDR databases (MaxMind GeoIP2 Anonymous IP, IPQualityScore, or similar). Datacenter ASNs flag reliably; residential ISP IPs rented by commercial VPN services are harder to catch this way.

TLS fingerprint (JA4) is checked at the TLS terminator, before HTTP decryption. Cloudflare and Fastly expose this signal natively to their customers. If you terminate TLS yourself with nginx or HAProxy, you can enable JA4 logging at the edge. The resulting hash is compared against a database of known browser baselines and known non-browser runtime fingerprints.

Timezone mismatch is collected via JavaScript: Intl.DateTimeFormat().resolvedOptions().timeZone. If a device reports America/Chicago while the exit IP resolves to the Netherlands, that mismatch is a strong proxy or VPN signal.

WebRTC local IP leak (desktop browsers only) uses a WebRTC RTCPeerConnection to read the device's LAN address. A user behind a VPN will show a public exit IP for their network connection but their local RFC 1918 address via WebRTC. Most mobile browsers and iOS Safari block this signal; do not rely on it for mobile traffic.

Behavioral signals are the final layer: cursor movement, scroll speed, typing cadence, and page dwell time. These are the hardest for automated or tunnelled sessions to fake.

cside's VPN detection and Privacy Watch combine network and application-layer signals so website operators do not need to build and maintain each check independently.

How to detect VPNs on mobile devices

Mobile VPN detection follows the same layered approach, but two signals behave differently:

WebRTC local IP does not apply. iOS Safari has blocked WebRTC local address exposure since 2018, and most Android browsers follow the same policy. Remove this check from your mobile detection stack or treat a missing WebRTC signal as neutral.

TLS fingerprinting still works, for proxy-originated traffic. iOS Safari, Chrome for Android, and Firefox for Android each produce distinct JA4 baseline fingerprints, so a session originated by non-browser software deviates from the expected baseline even when the exit IP is clean. A mobile VPN app that only tunnels packets leaves the browser's own fingerprint intact, so treat a matching JA4 as neutral rather than as evidence of a direct connection.

Timezone mismatch remains reliable. The JavaScript timezone API works identically on mobile. VPN users often forget to update their device timezone when connecting to a server in a different region.

Behavioral signals shift from mouse to touch. Tap patterns, pinch-to-zoom, scroll inertia, and gyroscope data replace cursor movement. The signals differ from desktop but remain distinguishable from scripted or tunnelled sessions.

Age verification laws such as Texas HB1181 and Florida HB3 apply to mobile visitors. A compliant VPN detection solution must cover both desktop and mobile traffic paths.

Tools to detect VPNs

With new age verification laws introduced in 2025 and 2026, companies are looking for ways to detect VPNs to prove that reasonable measures are in place. You can evaluate these solutions that offer rapid implementation:

cside VPN detection

cside detects VPN usage by inspecting network behavior and fingerprint signals which traditional web security tools miss. Specialized client-side visibility set this solution apart from other fingerprinting tools.

  • Approach: Network and application level detection
  • Use case: For companies under strict age verification laws that need to demonstrate compliance, cside offers advanced detection and evidence gathering to demonstrate adequate measures for regulators.

Fingerprint

Related reading: our full guide to detecting AI agent traffic on your website · headless browser detection techniques

Detects VPN and proxy usage with device, browser, and network behavior across sessions.

  • Approach: Network and application level detection
  • Use case: For security teams monitoring abuse patterns where users rotate IPs but reuse the same device or browser.

IPQualityScore

Maintains an updated databases of known VPNs, proxies, TOR exit nodes, and hosting providers.

  • Approach: IP list
  • Use case: Fast setup for VPN risk scoring using IP reputation.

MaxMind

GeoIP and Anonymous IP databases that flag VPNs and proxies.

  • Approach: IP list
  • Use case: Fast setup for VPN risk scoring using IP reputation.

IP reputation tools are useful for quick VPN scoring, but their evidence stops at lists and reputation checks. Browser-session intelligence adds behavior, fingerprint consistency, cursor paths, typing cadence, and page-level evidence that survive cleaner IP infrastructure.

IPQualityScore reputation checks compared with cside live browser-session intelligence

How to respond to VPNs

Many websites may be tempted to simply block all requests from VPNs. While this would be easy to do, the issue is that it has become easy for a user to recognize they were caught. In some applications, blocking all VPN requests is the right approach. But in others, this will only trigger the user to look further for methods to avoid the detection.

In VPN detection along with bot detection it's often better to customize the webpage response or make the webpages artificially slow to trigger the visitor to go elsewhere. In some cases, you may want to allow VPN traffic, but only if a user authenticates. That can be a fair compromise.

Not all VPN traffic is bad

VPNs are widely used by many users for legitimate cases:

  • VPNs can be used to protect connections on public Wi-Fi
  • Remote workers may be required to route traffic through corporate VPNs
  • Travellers using VPNs to legitimately access the internet in a familiar environment (search results, language translations)

There is also the possibility of false positives picked up by detection tools. Aggressively blocking all VPN traffic can break functionality for benevolent users or harm customers. Age verification laws do not typically require outright blocking VPNs. They expect to see reasonable measures to protect audiences from harmful content.

What approach works best for you?

If your business is:

  1. subject to age verification laws
  2. subject to regional content restrictions
  3. subject to contractual agreements limiting distribution of media to specific geographies

Use cside's VPN detection to handle the cat and mouse game. We'll detect VPNs for you.

Conclusion

Implementing VPN detection may be a necessary task for your business to avoid liability, risk of fines and potential contract breaches. Use a solution that leverages deep fingerprints on the request level instead of IP lists.

How cside VPN detection works beyond IP lists

The rules changed fast. Texas HB1181, Florida HB3, and the UK's age-verification law all pushed non-compliant sites to detect and act on VPN usage, or face attorney-general fines of up to $10,000 per violation and, in some US states, ISP-level blocks. Static IP lists cannot keep up because VPN providers rotate exit nodes hourly.

cside's VPN detection takes a different approach:

  • Multi-level analysis on every request. cside looks at the technology used to access your site, not the address the request came from. VPN indicators show up in signals a blocklist cannot see.
  • Over 100 million daily requests across the cside network feed the detection model, so new VPN patterns are caught as they emerge rather than after a blocklist update.
  • Custom response workflows through the cside SDK. Block, throttle, require age verification, or route to a fallback experience based on VPN indicators, without a hard block that upsets legitimate users.

The result: compliance with location-restriction and age-verification laws without the false-positive tax that comes with IP-only VPN blocking.

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks, web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

VPN detection is necessary for several business and legal reasons. It is commonly required for age verification and local content restrictions for adult content, medical forums, or other regulated content types, as well as for enforcing contractual content distribution rights. Users often attempt to bypass regional restrictions or age checks by using VPNs to avoid location-based controls or privacy friction.

A basic approach is using IP lists of known VPN providers, but this method has limited effectiveness because VPN services constantly rotate IP addresses. A more accurate approach analyzes network-level signals and browser or device behavior, examining layers 3, 4, and 7 of the OSI model to identify VPN usage, such as mismatches between device timezone and claimed geographic location.

cside does not rely solely on static IP address lists. Instead, it uses signals from the user's browser and device to distinguish direct network connections from those routed through VPN services. By analyzing evidence across OSI layers 3, 4, and 7, cside can detect VPN usage regardless of the IP address, allowing businesses to offload the ongoing cat-and-mouse game of VPN detection to a specialized platform.

Failure to detect VPN traffic can expose website owners to legal risk. For example, laws such as Wisconsin Assembly Bill 105 allow parents to sue website operators for damages, including court and attorney fees, if minors access age-restricted content using VPNs. Other states are adopting similar approaches, and some have taken direct legal action against adult content sites without VPN detection. Additionally, bypassed geo-restrictions may place businesses in breach of content licensing agreements, leading to serious contractual consequences.

IP list-based detection methods are significantly less accurate because VPN providers quickly rotate addresses when they are flagged. Fingerprint-based detection methods are more effective but still subject to ongoing evasion tactics. No VPN detection approach is 100 percent accurate, but some methods are substantially more reliable than others.

Yes, depending on the detection method used. Some approaches are more prone to false positives, which is a concern given that roughly 20 percent of internet traffic flows through VPNs. Poorly tuned detection systems may block legitimate users along with malicious or circumvention traffic.

Texas HB1181 and Florida HB3 require reasonable age verification and circumvention prevention. One option is using commercial IP databases of known VPN and proxy providers, but these have limited accuracy and are easily bypassed by residential VPNs. A more effective solution is using tools that analyze network and device-level signals, such as cside VPN Detection, which inspects OSI layers 3, 4, and 7 along with additional indicators to identify VPN-routed traffic. This approach was designed to help companies meet VPN detection requirements under age verification laws.

JA4 fingerprinting hashes the TLS ClientHello exchanged at the start of every HTTPS connection. The cipher suites, extensions, and elliptic curve parameters in this message are dictated by whichever TLS library initiates the connection, browser or proxy, making them a stable software-stack fingerprint. The critical distinction for VPN detection is which software opens the TLS connection. Transparent tunnel VPNs (WireGuard, OpenVPN in routing mode) forward packets at the network layer and never touch the TLS handshake, so the browser's own TLS stack generates the ClientHello and its JA4 hash looks identical to a non-VPN browser. What JA4 does reveal is traffic that non-browser software originates: when a residential proxy SDK, scraping runtime, or automation client opens the TLS session itself using its own runtime (Go net/tls, Python ssl, curl), the resulting ClientHello deviates structurally from Chrome BoringSSL or Firefox NSS fingerprints. A plain SOCKS5 or HTTP CONNECT proxy is not in this category: it only relays the connection, so the browser still performs the handshake end to end and the JA4 hash is unchanged. Because non-browser runtimes cannot trivially mimic a browser TLS stack, JA4 remains a durable signal for sessions those runtimes originate, even when the exit IP address is clean.

Residential VPNs route through real ISP addresses, so the most reliable approach combines TLS fingerprinting (JA4), device timezone versus IP geolocation, and behavioral signals rather than IP reputation alone. Blocklists only flag datacenter ranges, so a residential exit passes clean. Scoring three or more matching signals across OSI layers 3, 4, and 7 catches proxy-originated sessions a list cannot see, because an operator can rotate exit IPs cheaply but cannot cheaply make a non-browser runtime imitate a browser stack.

Prioritise a tool that gathers evidence, not just a block decision. Age verification laws such as Texas HB1181 and Florida HB3 expect reasonable, demonstrable measures, so favour a solution that analyses network and device signals across OSI layers 3, 4, and 7 and records why each session was flagged. Confirm it covers both desktop and mobile, catches residential VPNs that IP lists miss, and lets you throttle or step up verification rather than hard-block, so you limit false positives on the roughly 20 percent of traffic that is legitimate VPN use.

cside reads browser and device signals in the session, more than 250 signals per session, and correlates them with network-level evidence across OSI layers 3, 4, and 7 to flag VPN-routed traffic regardless of the exit IP. Because it records which signals matched, JA4 TLS fingerprint, timezone drift, WebRTC address, and behavioral patterns, it produces an audit trail that shows the reasonable, demonstrable measures regulators expect under age verification laws.

cside deploys as one first-party JavaScript script added to your pages, with no DNS change and without rerouting your site traffic. Once installed it reads browser and device signals in each session and combines them with network-level analysis to flag VPN-routed visitors. The cside SDK then lets you choose the response, block, throttle, require age verification, or route to a fallback experience, so you avoid a blanket block that upsets legitimate users. An agentless Scan Method is available where adding a script is not an option.

Monitor and Secure Your Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start free, or try Business with a 14-day trial.

cside dashboard interface showing script monitoring and security analytics
Related Articles
Book a demo

Want to walk through this with an engineer?

Thirty minutes, on your own site. Not a slide deck.

Book a personalized demo to see:

How to achieve PCI DSS requirement 6.4.3 & 11.6.1 compliance in 1 day
Why third-party scripts are a security risk for you and your visitors
Monitoring privacy and consent leakage (GDPR, CCPA) across every third party
Stopping signup abuse, account sharing, and chargeback fraud with device intelligence
Detecting and controlling AI agents and bots hitting your site in real time

Rather just send a question?

Finding open slots…

Real humans only. We'd know.

Having trouble booking? Open scheduler in a new tab

What are you trying to solve?

Tell us in a line and we'll come back with something useful, not a generic pitch.

We usually help with:

Seeing which third-party scripts run on your site
PCI DSS 6.4.3 and 11.6.1 evidence
Bots, AI agents and account takeover

Prefer to just book a time? Pick a slot instead