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 reads | What raises the VPN-or-proxy verdict |
|---|---|
| Known-exit list | Your 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 ports | The request advertises a hop, via headers or a default proxy port |
| WebRTC or DNS leak | The client exposes a second, real location the exit does not match |
| Many accounts, one IP | The 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
- DataDome, "What are data center proxies and how to detect them?": how anti-bot systems score hosting networks against ISP-registered ranges.
- IPQualityScore, "Proxy detection": the known-exit lists and the proxy, VPN, and abuse signals behind a classification.
- Cloudflare, "Machine learning to detect bot attacks that use residential proxies": why residential reputation is weighed against known-proxy classification and behavior.