Guide

A Website Says VPN or Proxy Detected: Why It Happens and How to Read Clean

A site says VPN or proxy detected when your exit is on a known-proxy list or a hosting range, or leaks a proxy header. Why it happens, what gives you away, and how to read as a real connection.

HProxy Team··5 min read
HProxy.Guide

Skip the dead lists.

Our free proxy list re-checks every exit every few minutes across 100+ countries, with a live last-checked time, so you copy IPs that worked moments ago, not a stale text dump.

Open the free proxy list

The message is blunt and usually final: VPN or proxy detected, and the page refuses to continue. What the site is reporting is a classification rather than an accusation. A fraud or anti-bot service looked up your exit address, matched it against lists of known VPN and proxy endpoints, and returned a verdict before you touched anything on the page. We run a proxy network and FFraud, an IP-intelligence engine that produces exactly this kind of classification, so this guide explains what makes an address read as a VPN or proxy, the leaks that give one away beyond the address itself, and what it takes to read as an ordinary connection.

Why does a website say I am using a VPN or proxy?

Because your exit address carries a signal that services look up in real time. Three signals dominate the verdict: the address appears on a published list of VPN or proxy endpoints, it belongs to a hosting or datacenter network that no ordinary person browses from, or the request leaks a proxy header that announces the hop. Any single one is enough for a site that buys this classification to refuse the connection. The verdict is a property of the address, which is why it arrives before the site has watched a single thing you do.

What makes an address read as a VPN or proxy

The classification is built from a few readings, and each one is a lever you can move.

It is on a known-exit list. Fraud-intelligence vendors such as DataDome, IPQualityScore, and MaxMind keep lists of addresses that operate as VPN or proxy endpoints, and sites query them on every request. A commercial VPN's exit ranges are shared by many users and become known quickly, so they reach these lists fast. The wider detection stack behind this is walked in how websites detect proxies.

It belongs to a hosting network. Every address maps to an ASN, the public identifier of the network that owns it, and a hosting or datacenter ASN is itself the signal, because homes do not sit in server ranges. This is the input a datacenter proxy can never change, and the reason such an address shows up with a high fraud score.

The request leaks a proxy. Some proxies attach headers (Via, X-Forwarded-For, Forwarded) or answer on a default proxy port, which advertises the extra hop directly. A misconfigured client can also expose the real address through WebRTC or a DNS request, so the site sees two locations at once and flags the mismatch.

Too many identities from one address. An address that many unrelated accounts sign in from looks like shared or automated infrastructure, and shared infrastructure reads as a proxy even without a list entry against it.

The signal a site readsWhat raises the VPN-or-proxy verdict
Known-exit listYour address is a published VPN or proxy endpoint
Hosting network (ASN)Your address sits in a datacenter range, not a consumer ISP
Proxy headers or portsThe request advertises a hop, via headers or a default proxy port
WebRTC or DNS leakThe client exposes a second, real location the exit does not match
Many accounts, one IPThe address looks like shared or automated infrastructure

How to read what a site reads

Most of this is visible to you before a site ever sees it, which means you can catch a dirty exit in advance instead of after a refusal.

  • Confirm the network. Run the exit through our proxy checker to see the ASN, the network class, and the country. A hosting classification is the fastest way to fail a check.
  • Read the classification. Put the same address through FFraud to see the fraud score and whether it is flagged as a known proxy or VPN exit. A high score before you send any real traffic means the address arrived dirty.
  • Look for a header leak. One request shows the headers a site actually receives from you:
# What the site sees: your exit address and any proxy header in the request
curl -x http://203.0.113.10:8080 -s https://httpbin.org/headers

A Via or X-Forwarded-For line in that output is a leak you can close at the client, and it will flag you no matter how clean the address is.

How to read clean

Reading clean means removing each signal above, in the order of how heavily it counts.

Exit from a consumer ISP rather than a hosting range. This input dominates the verdict, and a residential address satisfies it by design: it belongs to a real home ISP, so the network reads right and the address is not on a datacenter list. Our residential proxies route through real home connections and start at $0.44/GB pay-as-you-go. Read any exit with the proxy checker and FFraud first, because a residential label is not proof on its own; a specific address can still be flagged if a previous user burned it, which is why a clean exit is a snapshot you measure, not a guarantee you inherit.

Close the leaks. Use a proxy that does not add Via or X-Forwarded-For, and turn off WebRTC and DNS leakage in the browser so no second location contradicts the exit. Then stop stacking identities on one address, because spreading unrelated accounts across a single exit is the pattern that reads as a proxy even when the address itself is clean.

A VPN-or-proxy verdict is one specific way an address gets refused, and the broader set of reasons a site turns you away sits in why is my IP blocked.

What reading clean does not buy you

A clean residential exit clears the classification that stops most VPN and proxy traffic, the address-level check, but detection does not end at the address. Sites also read your TLS fingerprint, your headers, your timezone measured against your IP's country, and your behavior, so a clean address behind a headless client with a mismatched fingerprint can still be flagged. No address makes a browser that reports the wrong timezone look consistent with its exit. A believable exit removes the reason most of these verdicts fire, and a believable browser removes the rest. Anyone selling an address that is never detected is selling the list entry, not the result.

Sources

Frequently asked questions

Why does a website say VPN or proxy detected?
Because a fraud or anti-bot service looked up your exit address and classified it as a VPN or proxy endpoint. Three signals dominate that verdict: the address is on a published list of known VPN and proxy exits, it belongs to a hosting or datacenter network that ordinary people do not browse from, or the request leaks a proxy header. Any one of them is enough for a site that buys this classification to refuse you, and the check happens before the site has seen anything you do.
How do websites detect a VPN or proxy?
They combine several lookups. Vendors publish lists of addresses that operate as VPN or proxy exits and sites query them per request. The address maps to a network (an ASN), and a hosting network is itself a signal. The request can carry proxy headers such as Via or X-Forwarded-For, or answer on a default proxy port. The browser can leak a real location through WebRTC or DNS that does not match the exit. And one address that many unrelated accounts sign in from reads as shared infrastructure.
How do I stop the VPN detected message?
Present an exit that removes each signal. Use an address that belongs to a consumer ISP rather than a hosting range, that is not on a known-proxy list, and that does not add proxy headers to the request. Close WebRTC and DNS leaks in the browser so no second location shows. Read the exit in a proxy checker and a fraud lookup before you rely on it, because the reading a site takes is the one that decides whether you pass.
Why is my VPN detected but my home connection is not?
Commercial VPN exits sit in datacenter ranges, and those ranges are widely shared and quickly added to published VPN endpoint lists. Your home connection is neither a hosting range nor a listed exit, so it reads as an ordinary person. That difference is exactly what these detection services are built to measure, which is why a datacenter VPN is easy to flag while a real consumer ISP address is not.
Does a residential proxy stop the proxy-detected message?
It clears the address-level check, because a residential exit belongs to a real consumer ISP and is not on a datacenter or known-proxy list when the pool is maintained. It does not clear fingerprint or behavior checks, which read your TLS handshake, your headers, and your timezone against your IP's country. A specific residential address can also be flagged if a previous user abused it, so the exit still has to be checked rather than trusted.
What is a proxy header leak?
It is a header the proxy adds to your request that announces the extra hop, most often Via, X-Forwarded-For, or Forwarded, or the fact that the exit answers on a default proxy port. A site that reads one of those knows a proxy is in the path without any list lookup at all. A proxy that does not add these headers avoids the giveaway, and you can confirm what your request carries with a single curl call.
Is a VPN-or-proxy verdict ever wrong?
Sometimes. Classification is probabilistic, and a clean address can be misread if it recently changed hands or shares a range with flagged neighbors, while a flagged address occasionally slips through. That is why reading the exit yourself matters more than trusting a label: a fraud lookup shows you the score and the classification a site will act on before you commit real work to the address.

Get proxies that are alive right now

Our free list re-checks every exit every few minutes and shows a last-checked time, so you copy IPs that worked moments ago, not a stale text dump. When the location has to survive a real check, the paid network holds up.

129M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup