Bot detection

Proxy and VPN detection vs bot detection: two different questions

By the ROAS365 team 2026-09-08 9 min read

Almost every detection system eventually emits a single number: a risk score somewhere between 0 and 100. The number is convenient, and precisely because it is convenient it compresses two independent questions into one — where did this connection come from, and is there a person at the other end of it. The answers combine freely: a real customer can be on a VPN, and a script can run from a perfectly ordinary home broadband line. Once both kinds of evidence are folded into one score, though, "using a proxy" becomes functionally equivalent to "is a bot", and that is the most common category error in traffic classification. This article separates the two families of signals: what each one actually measures, which cell of the four-way matrix produces nearly all of the false positives, and how to read them apart in your own data.

TL;DR
  • Proxy and VPN detection is a property of the network path; bot detection is a property of the client. One asks which address the request arrived from, the other asks whether a person is operating the far end. A request can be both, neither, or only one.
  • Address intelligence classifies hosting ranges nearly as reliably as a lookup, because ownership and routing are published. It largely fails on residential proxies, where the address genuinely is a consumer address and carries no distinguishing ownership marker. The two verdicts differ by an order of magnitude in confidence and should not carry equal weight.
  • Of the four cells, only automation arriving from hosting infrastructure has both signals agreeing, and it is the only one where confident action is justified. The people-on-proxies cell is where the false positives live: privacy-conscious users, corporate VPNs, carrier-grade NAT, relay services and anyone travelling.
  • VPN traffic looks suspicious in aggregate because of concentration rather than automation: many unrelated sessions share a small number of exit addresses, so per-address rate rules fire on a population of real people who happen to share an exit.
  • The workable approach is to treat the address verdict as an input rather than a conclusion: bucket traffic by address type first, then examine client consistency and behavioural metrics separately within each bucket. Comparisons are informative inside a bucket and close to meaningless across buckets.

Two questions, compressed into one number

It helps to state the definitions plainly, because everything that follows derives from them. Proxy and VPN detection concerns the path: does the address a request arrives from belong to a hosting provider, a commercial VPN service, a corporate egress point, a privacy relay, or an ordinary residential or mobile carrier connection? The evidence is drawn almost entirely from address intelligence — autonomous system ownership, ranges published by providers, routing announcement behaviour, and the history of what that address has been observed doing. It is a question about where a connection originates, and it says nothing about who is at the far end.

Bot detection concerns the client: is the software at the other end a browser genuinely being driven by a person? The evidence comes from an entirely different place — whether the client environment is internally consistent (do the claimed browser version and the actually exposed APIs, fonts and rendering characteristics agree), whether the transport-layer handshake fingerprint matches the client it claims to be, and whether interaction timing has the distribution that human input produces. How these signals are assembled into a verdict varies considerably between detection systems.

The two questions are orthogonal, yet most commercial systems expose only a single combined score. There is a reason for that design: callers usually want one number they can threshold. The cost is that whoever receives the score cannot recover what drove it — was it high because the address falls in a hosting range, or because the client environment contradicts itself? Those two situations call for entirely different handling, and the combined score erases the distinction.

What the address signals actually measure

Address intelligence is mostly classification rather than detection. The bulk of the work is mapping an address to the autonomous system that announces it, then characterising that system: cloud and hosting provider, residential ISP, mobile carrier, enterprise-owned, or academic network. The mapping comes from public routing data, is stable and independently checkable, and so the question "is this a hosting address" is the highest-confidence verdict in the entire stack — close to a lookup.

Commercial VPN classification is a step less certain. Exit ranges for the major services are continuously enumerated and maintained as lists, which gives decent coverage with a lag — newly added exits take time to appear. At the residential proxy layer the method breaks down altogether: these networks borrow addresses from genuine consumer connections, the address really does belong to a residential ISP at the routing level, and no ownership marker separates it from an ordinary subscriber.

What remains is indirect evidence, and every piece of it is much weaker: a mismatch between the address geography and the client timezone or language preference, latency that is implausible for the claimed location, or one address appearing across many unrelated sessions in a short window. These carry markedly higher false-positive rates — a timezone mismatch is perfectly consistent with someone travelling, or with a device whose settings were never changed. Residential proxy verdicts therefore deserve visibly lower weight in a decision, and giving them the same weight as hosting classification is where a great deal of over-blocking begins. The mechanics of how these misclassifications form are worth understanding on their own.

What the client signals actually measure

The organising idea on the client side is internal consistency rather than signature matching. Detection systems rarely look for a string unique to some automation tool, because such markers are easy to change. The more durable approach collects a set of properties that ought to agree with one another and checks whether they contradict: a client claiming to be a particular mobile browser version while exposing APIs that only the desktop build has, claiming an operating system whose font list does not match, or producing rendering characteristics inconsistent with the hardware it describes. Any single mismatch means little; several at once mean a great deal. Fingerprinting and anonymity sets cover the other side of that collection.

The second layer is the transport. The ordering of parameters and the combination of extensions in a TLS handshake form a fingerprint that differs between HTTP client libraries and between browser versions. Its value lies in where it sits — before any page script executes, and considerably harder to align with a claimed browser than editing a user agent string. Classification performed at the edge relies mainly on this layer.

The third layer is behavioural: the distribution of intervals between input events, pointer trajectories, scroll rhythm, and the pattern of dwelling and navigating across a page. It is the most informative layer and the slowest, since none of it exists when the first request arrives. The tiered design of systems such as DataDome is essentially a trade between how quickly a verdict is needed and how strong the evidence has to be.

The four-way matrix and where the errors concentrate

Crossing the two dimensions yields four combinations, and each one calls for different handling.

A person on an ordinary residential or mobile address: the overwhelming majority of traffic, and nothing to discuss.
Automation on a hosting address: both families of evidence point the same way, and it is the only cell where confident action is well supported. Large-scale scraping, inflation and most automation sit here.
Automation on a residential address: automation routed through residential proxies. The address side contributes almost nothing, leaving client consistency and behaviour to carry the verdict. This is the genuinely hard cell.
A person on a proxy or VPN: a real person arriving through a VPN, a corporate egress, a privacy relay or carrier-grade NAT. This cell produces nearly all of the false positives.

The last cell deserves elaboration, because the size of that population is routinely underestimated. Consumers using commercial VPNs are ordinary users. Corporate secure web gateways are designed to converge an entire company onto a handful of exits. Carrier-grade NAT has thousands of mobile subscribers sharing one public address. Privacy relay services built into mainstream platforms forward user traffic through hosting infrastructure by design. People travelling connect from anywhere. All of these are real people, and frequently the segment with the strongest purchasing intent.

This is why VPN traffic looks suspicious in aggregate: the cause is concentration, not automation. Per-address rate rules fire on a population of unrelated real people who happen to share an exit. The pattern shows up constantly in everyday traffic classification statistics and is very easy to read backwards.

Reading the two apart in your own data

If only one thing gets done, make it bucketing. Before any quality judgement, split traffic by address type: residential, mobile, hosting, known VPN, verified crawler. Then look at conversion, bounce and dwell time separately inside each bucket. Comparisons within a bucket are informative — a source in the residential bucket whose conversion rate suddenly falls to a tenth of its peers in the same bucket is a genuine signal. Comparisons across buckets are close to meaningless, because the baselines were never the same.

The second thing is to lift verified crawlers out separately. Search engine crawlers, link preview fetchers and uptime monitors all originate from hosting addresses and all ought to be served normally. They can be verified through reverse DNS with forward confirmation, and anything that verifies should be released ahead of any risk rule. Leaving them inside the hosting bucket to be restricted damages indexing and breaks previews while removing none of the actual problem traffic.

The third is to down-weight residential proxy verdicts. Since they rest on indirect evidence, they should not trigger action alone; the defensible use is to let them tighten a threshold by one step while still requiring independent client-side evidence before anything happens. When separating types of invalid traffic, the distinction between general and sophisticated invalid traffic supplies another useful axis.

Finally, if the system in use can emit the network and client components separately, record both rather than only the combined total. In any review after the fact, "was this traffic restricted because of the address or because of the client" is almost always the first question, and a log holding only the total can never answer it. In reading traffic data, traceability is usually worth more than precision.

Frequently asked questions

What is the difference between bot detection and proxy detection?

They answer different questions about the same request. Proxy detection is a property of the network path: does the address the request arrives from belong to a hosting provider, a commercial VPN, a relay service or a residential proxy network? It is resolved almost entirely from address intelligence — autonomous system ownership, published ranges and routing behaviour. Bot detection is a property of the client: is the software at the other end a browser genuinely driven by a person? It is resolved from the consistency of the client environment, transport-layer fingerprints and interaction behaviour. A request can be one, both or neither. Treating a proxy verdict as a bot verdict is the most common category error in traffic classification, because the address says nothing about who is holding the device.

Does traffic from a VPN count as bot traffic?

Not on its own. Commercial VPN use is ordinary consumer behaviour, and corporate VPNs route large volumes of legitimate business traffic through a small number of exit addresses by design. What makes VPN traffic look suspicious in aggregate is concentration rather than automation: many unrelated sessions share one address, so per-address rate rules trigger on a population that happens to be behind the same exit. If a VPN session shows a coherent client environment and human interaction timing, the appropriate reading is a person who uses a VPN. Only when the network signal and the client signal both point the same way does the combined evidence support an automated classification.

Can proxy detection identify residential proxies?

Less reliably than it identifies datacenter addresses, and that gap is the practical limit of address intelligence. Datacenter and hosting ranges are published and stable, so classifying them is close to a lookup. Residential proxy networks borrow addresses from consumer connections, which means the address itself is genuinely residential and carries no distinguishing ownership marker. Detection then has to fall back on weaker, indirect evidence: mismatch between the address geography and the client timezone or language, unusual latency for the claimed location, or an address appearing across many unrelated sessions in a short window. These signals carry meaningfully higher false-positive rates than hosting-range classification, which is why residential proxy verdicts deserve lower weight than datacenter ones.

Why does bot detection flag proxy traffic more often?

Partly because the correlation is real and partly because of how scores are built. The real part is that most large-scale automation does run through hosting infrastructure or proxy pools, so the address signal has genuine predictive value. The artificial part is that many systems fold the address verdict into the same score as the client verdict, and then a request from a VPN starts from a worse baseline before any client evidence is examined. Reputation feedback compounds it: an address that produced flagged sessions earlier is scored worse later, and because VPN exits are shared, one abusive session can degrade the baseline for every subsequent unrelated user of that address.

Should I block all datacenter IP traffic?

Blanket blocking is rarely the right setting, because hosting ranges carry a substantial amount of traffic that is either legitimate or actively wanted. Search engine crawlers, link preview fetchers, uptime monitors, corporate secure web gateways and privacy relay services all originate from hosting infrastructure, and blocking them indiscriminately removes indexing and breaks previews while doing nothing about automation that runs on residential addresses. A more defensible configuration treats a datacenter address as one input rather than a verdict: allow verified crawlers explicitly, require additional client evidence before restricting anything else, and reserve outright blocking for addresses where both the network and client signals agree.