← back to blog

Device signal wallet linking: session and device signals beyond the browser

Most people who run more than one wallet for airdrop farming know about browser fingerprinting. Canvas hash, WebGL renderer string, installed fonts, screen resolution. That’s the part anti-detect browsers advertise on their landing pages, and it’s real, but it’s also the layer that gets the most attention precisely because it’s the easiest to see and the easiest to sell a fix for. The signals that actually do a lot of the linking work sit below the browser: in the session, on the device, and on the network path. If you only think about the fingerprint, you’re defending the part of the house with the most visitors and leaving the back door open.

The browser fingerprint is the visible layer

A browser fingerprint is a snapshot you can inspect yourself. Open a fingerprinting test site, look at the values, change them, check again. That visibility is why the anti-detect browser market grew around it: it’s a problem you can demo. Randomize the canvas noise, spoof the user agent, rotate the WebGL vendor string, and the fingerprint changes. That’s useful, and it’s table stakes for running separate profiles at all.

But a fingerprint check only tells you what’s visible to JavaScript running in that tab. It says nothing about what’s visible to the server at the TLS layer, what’s visible to the mobile OS underneath the browser, or what’s visible on-chain once a transaction leaves the wallet. Those are the parts that don’t show up on a fingerprint test, and they’re the parts that actually correlate identities over time.

What session signals actually cover

A session isn’t just cookies. When a browser or app opens a connection, it negotiates TLS with a specific cipher order, extension list, and handshake shape, often summarized as a JA3 or JA4 hash. That handshake fingerprint comes from the TLS library and OS, not from anything a browser extension controls, so two “different” browser profiles running on the same underlying stack can present an identical JA3 hash even with every visible fingerprint value randomized. HTTP header ordering works the same way: browsers send headers in a consistent, engine-specific order, and a mismatch between a spoofed user agent and the actual header order is a cheap tell.

WebRTC is its own category of leak. Even with a proxy or VPN in place, a page can use WebRTC to enumerate local network interfaces and, in some configurations, expose a real local or public IP that never touches the proxied HTTP traffic. Timing is a session signal too: request latency, keep-alive behavior, and TCP window sizing all vary by network path and hardware in ways that are stable across sessions, even when the IP address rotates.

Device signals that survive a browser reset

Clearing a profile doesn’t reset the device it’s running on. On desktop, GPU renderer capabilities, available audio devices, battery status (where the API is exposed), and clock skew relative to NTP are all readable and tend to be stable for a given machine. Audio context fingerprinting, which reads how a device’s audio stack processes a synthesized signal, is notoriously hard to spoof convincingly because it depends on real hardware and driver behavior.

Mobile and cloud phone setups add a layer most desktop-focused guides skip entirely. A physical or virtualized Android device exposes an IMEI, a hardware serial visible over ADB, sensor calibration data from the accelerometer and gyroscope, and a build fingerprint tied to the ROM. Running a farm of “different” identities on cloud phones that all image from the same base snapshot means every one of them shares sensor calibration quirks and storage layout, which is a linking signal regardless of what app-level identity data looks different. Anyone who has actually operated cloud phone infrastructure at scale has run into this: the base image is an identity leak by itself, not just the apps running on top of it.

Network signals that correlate wallets even through proxies

Proxies solve the IP address problem and nothing else. A residential or mobile proxy hides the origin IP, but it doesn’t hide the ASN reuse if a whole batch of “separate” wallets routes through the same small pool of exit nodes, and it doesn’t hide DNS resolver reuse if every profile is configured to use the same upstream resolver. Timing correlation across a proxy pool is also a real technique: if twenty wallets all go quiet and then all transact within the same narrow window, session-level timestamps line up even when IPs differ.

RPC provider usage is an underrated one. A lot of multi-wallet setups route every wallet through the same RPC endpoint, sometimes even the same API key, because it’s the default in the wallet or the dApp. From the RPC provider’s side, or from anyone who can see request metadata, that’s a direct link between wallets that never touch each other on-chain. This is one of the more specific things worth checking when evaluating an RPC provider for this kind of work: whether it supports per-wallet keys or endpoints at a price and setup cost that’s actually workable, not just whether it’s fast.

On-chain clustering picks up where session signals leave off

Chain analysis doesn’t need session data to build a cluster, though it helps when available. On-chain heuristics do a lot of the work on their own: common-input-ownership heuristics assume addresses that jointly fund a transaction share a controller, funding-source clustering flags wallets that all received their initial gas from the same source address or the same exchange withdrawal, and timing-pattern analysis flags wallets that always interact with a protocol in the same sequence within seconds of each other. Peeling-chain analysis, originally built for tracing mixed funds, applies just as well to a farm that funds wallets from one hot wallet in a repeating pattern.

The reason session signals matter at all is that they turn a probabilistic on-chain cluster into a confirmed one. On-chain heuristics produce a graph of addresses that probably belong together. A shared JA3 hash, a shared RPC key, or a shared device fingerprint across those same addresses turns “probably” into “confirmed,” because it ties the cluster back to infrastructure rather than just fund flow. That’s the actual mechanism behind a lot of sybil detection systems used for airdrop eligibility screening: on-chain graph plus off-chain infrastructure fingerprint, cross-referenced.

What real separation requires

Given all of that, a fingerprint-spoofing browser extension covers maybe one layer out of four. Separation that actually holds up means treating each wallet identity as its own stack, not just its own browser tab. That means a distinct device or hardware-isolated container per identity rather than shared base images, a distinct proxy path with its own ASN rather than a shared pool, a distinct RPC endpoint and key rather than the wallet’s default, and a distinct funding path rather than one hot wallet distributing gas to everything downstream in a visible pattern. It also means checking WebRTC leak behavior directly rather than trusting a proxy to handle it, and being aware that timing correlation exists as a category of risk even when every other layer is separated correctly.

None of this is a guarantee against detection, and it isn’t framed as one. Sybil detection systems evolve, chain analysis firms publish new clustering heuristics regularly, and a setup that holds up today isn’t guaranteed to hold up after the next protocol’s eligibility snapshot. The honest way to think about it is as operational hygiene: each layer you leave shared is a layer that ties activity together, and each layer you separate costs real infrastructure and setup time. Whether that tradeoff is worth it depends on the scale of what you’re running and how much you’re willing to spend on separation versus how much a false cluster flag would cost you.

Evaluating tools against this, not around it

When looking at an anti-detect browser, an RPC provider, a wallet, or an airdrop tracker, the useful question isn’t “does it randomize the fingerprint.” It’s which of these four layers, browser, session, device, and network, the tool actually addresses, and which ones it leaves for you to solve separately. A browser that handles canvas and WebGL spoofing well but ships every profile through the same TLS stack and the same DNS resolver has only solved the layer everyone already knows about.

If you’re building out a review process for these categories of tools, it helps to test each layer independently rather than trusting a single “fingerprint score” as a summary. That’s the same standard worth applying to any claim, including ones made here: check the mechanism, not the marketing.

For more breakdowns like this on wallet separation, chain analysis, and tested tooling for airdrop farming, head back to the homepage.

Get new guides and videos first — join the Telegram channel.

need infra for this today?