HomeBlogGuides

Sticky Sessions on Mobile Proxies Explained

Key takeaways

  • A sticky session means the same exit IP persists across your requests for a defined window. It is the opposite of per-request rotation, not a variant of it.
  • On a dedicated device the IP is sticky by default and changes only when you rotate it. There is no lease and no expiry, because no other customer is waiting for the address.
  • On a shared pool, sticky is a timed lease. When it expires the address goes back to the pool and somebody else can be assigned it — including whoever gets your old address next.
  • An IP that changes mid-session looks like account compromise: the same credentials continuing a logged-in flow from a different network location is the exact shape of a stolen-session attack.
  • Token-based stickiness encodes the session in the proxy username; port-based stickiness encodes it in which port you connect to. Same idea, different failure modes.
  • Choose the window by your longest single operation, not your average one. A window shorter than a checkout, an upload, or a login flow will eventually cut one in half.
  • Sticky is about continuity, not anonymity. If your requests are independent and stateless, stickiness buys you nothing and rotation is the better tool.

"Sticky session" is one of the few proxy terms that means roughly what it says: the same exit IP stays with you across requests instead of changing on every one. What the term hides is that two completely different mechanisms are described by it, and they behave differently in the exact situation you bought stickiness for.

On a dedicated device, stickiness is a state — the address is yours and stays until you change it. On a shared pool, stickiness is a lease — the address is yours for a window, after which it goes back into circulation and somebody else can be handed it. Both are marketed as sticky sessions. Only one of them is guaranteed not to move underneath a logged-in account.

This page covers what stickiness is for, how the two implementations differ, how session-token and port-based stickiness work in practice, and how to pick a window without cutting your own flows in half.

What "sticky" actually means

A sticky session is a proxy configuration in which every request you send inside a defined window exits from the same IP address. That is the whole definition. It exists because destinations associate state with a network location — sessions, cookies, carts, rate-limit counters, risk scores, and changing that location discards or contradicts all of it.

The clearest way to think about it is that the exit IP is part of your identity, whether or not you wanted it to be. A destination that has seen you log in, browse three pages, and add an item to a cart has built a small model of who you are, and the address is one of its stable attributes. Sticky sessions keep that attribute stable so the rest of the model survives.

Everything else follows from that. Sticky is not more anonymous than rotation — it is less. It is more coherent, and coherence is what logged-in work needs.

Why anything logged in needs it

The moment a destination knows who you are, changing your network location stops being harmless and becomes evidence. An authenticated session is a claim of continuity, and a claim of continuity that arrives from a different network every few minutes contradicts itself. Sticky sessions exist so that claim holds up.

Consider what a login actually establishes. The platform now has an authenticated session bound to a set of signals it observed at authentication time: browser fingerprint, device characteristics, behavioural rhythm, and the network the request came from. Every subsequent request is checked, implicitly or explicitly, against that baseline.

Rotating the IP changes one of the most heavily weighted signals in that baseline while the others stay identical. That combination — same session, same fingerprint, different network — is not what a normal user produces. A normal user's IP changes when they leave the house, and their behaviour, timing and device usually change with it.

Dedicated device: sticky is the default state

On a dedicated mobile proxy the address is sticky because nothing is trying to take it away. The device holds one carrier address, you are the only customer on that device, and the address persists until the cellular session is torn down, which happens when you rotate, and otherwise does not happen at all.

There is no lease, no expiry timer, and no queue of other customers waiting for the address. The failure mode of pooled stickiness — your window ending and the IP moving without your involvement — has no equivalent here, because there is nobody to move it for.

This is worth being precise about, because it is the single strongest argument for dedicated hardware in account work. The address can still change: a carrier can drop and re-establish the bearer on its own, and any rotation you trigger changes it deliberately. What it cannot do is change because a countdown reached zero on somebody else's schedule.

The corollary is that on dedicated hardware, "sticky session length" is not really a setting. It is the interval between your own rotations, which is why the right configuration for account work is rotation on demand rather than a timer — you hold the identity for as long as it is useful and burn it deliberately when it is not.

Shared pool: sticky is a timed lease

On a shared pool, stickiness is a reservation with an expiry. The provider assigns you an exit from a set shared across customers and promises to keep routing you through it for the window you asked for. When the window ends, the address goes back into circulation and your traffic moves to a different exit.

Two consequences follow, and both get discovered in production rather than in the documentation.

The address was not yours before your window and will not be yours after it. Whatever the previous holder did to its reputation is baggage you inherit, and whatever you do to it becomes somebody else's problem. On a pool, a clean address is a matter of luck and rotation frequency across the whole customer base.

The window boundary is not aligned with your work. The lease expires when the timer says so. It does not know that you are eleven steps into a fourteen-step flow. Providers vary in how gracefully they handle this — some let an in-flight connection finish, some do not, but none of them can extend a lease they have already promised to somebody else.

Dedicated deviceShared pool
Stickiness isThe default stateA timed lease
Ends whenYou rotateThe window expires
Who else uses the addressNobodyOther customers, before and after
Max session lengthIndefiniteProvider's ceiling
Address historyNone you did not createInherited and unknown
Mid-flow surpriseOnly if you cause itStructural

None of this makes pools bad. It makes them a different product, suited to work where an address moving unexpectedly costs you a retry rather than an account. The broader comparison lives in dedicated versus rotating.

Session tokens versus ports

Pooled providers expose stickiness in one of two ways: a session identifier embedded in the proxy username, or a dedicated port per session. Both bind your requests to one exit. They differ in how many sessions you can run, how you rotate, and how easily you break them by accident.

Token-based stickiness

You encode a session identifier into the username field — a string alongside your credentials that the provider parses to decide which exit to route you through. Reuse the same string and you get the same exit; change it and you get a new one.

The advantage is that sessions become cheap and programmatic. You can run many concurrently, generate one per worker or per account, and rotate by changing a string rather than reconfiguring anything.

The failure modes are equally programmatic. A session string that gets regenerated on every run because it was derived from a timestamp will hand you a different address every time. A string reused across two accounts binds both to one address, collapsing identities you meant to keep separate. And the parsing is provider-specific, so a syntax that works with one service silently means nothing to another — you end up on a random exit while believing you are sticky.

Port-based stickiness

The provider gives you a range of ports, and each port maps to one exit for the duration of its session. You pick a port and stay on it.

This is easier to reason about and far easier to configure in tools that accept only a host, port and credentials — a great many anti-detect browsers and scraping frameworks fall into that category. The mapping is visible in your configuration rather than buried in a username string.

The limit is that you have as many concurrent sessions as you have ports, and rotation usually means the provider re-mapping the port behind the scenes, which you cannot observe directly. On a dedicated device, multiple ports on the same phone are a way to separate protocols or credentials, not a way to obtain different exit addresses — every port on that device egresses from the same radio.

Why a mid-session IP change looks like compromise

Because it is exactly the shape of a session-hijack attack. The same authenticated session, carrying the same token, continues from a different network, which is what happens when a stolen cookie is replayed from somewhere else. Your lease expiring produces a signal indistinguishable from the thing account security is built to catch.

That is the entire reason this matters, and it is worth sitting with, because the usual framing gets it backwards. People assume a changing IP is a privacy improvement. To a platform, an authenticated session whose network location jumps is a security event, and the response is a captcha, a re-verification prompt, a forced logout, or a lock — proportional to how much the platform cares.

The response also scales with what the account is doing. A change while idly reading is mostly ignored. A change during a password update, a payout configuration, or a bulk action is the highest-severity version of the same signal.

A rotating IP does not make a logged-in account look like many users. It makes one user look stolen.

The practical rule is that address changes should happen between sessions, never inside them. Finish the flow, log out or go idle, then rotate. On a dedicated device that is trivial to arrange because nothing rotates unless you say so.

Choosing a window length

Size the window by your longest single operation, not the average one, and add margin. If your slowest checkout takes four minutes on a bad day, a five-minute window will eventually cut one in half. Anything involving a login, an upload, or a payment should not be on a timer at all.

A short checklist that resolves most cases:

What stickiness does not fix

A stable IP keeps one signal coherent. It does not make a session look human, and it does not make an automated identity indistinguishable from a real one — those depend on fingerprinting, behaviour and account history, all of which travel with your client rather than your network.

It also does not protect an address you have already burned. Stickiness holds an identity in place, which is exactly wrong when the identity is the problem: if a destination has decided it does not like your address, keeping it is the opposite of what you want, and that is the moment to rotate deliberately.

And it is not free of the physical layer underneath. On a dedicated device the address is stable, but the device is still a phone on a carrier network — the bearer can drop, a tower can misbehave, and a rotation still costs about seven seconds of interruption when you do trigger one. Sticky means nobody else moves your address. It does not mean the radio is immune to reality.

Frequently asked questions

What is a sticky session proxy?

A proxy configuration where the same exit IP is used for all of your requests within a defined window, rather than a different IP per request. It preserves anything the destination associates with a network location — cookies, logins, carts, multi-step flows, rate-limit state.

How long should a sticky session last?

Long enough to cover your longest single operation end to end, with margin. For most account work that means the session should not expire on a timer at all — hold the address until you deliberately change it. Fixed windows only make sense for stateless work with retryable steps.

Is a dedicated mobile proxy already sticky?

Yes. A dedicated device holds one carrier address and keeps it until the cellular session is torn down by a rotation. There is no lease to expire and nobody else in line for the address, so stickiness is the default state rather than a feature with a timer on it.

What happens when a sticky session expires on a shared pool?

Your traffic is assigned a different exit from the pool, and your previous address returns to circulation for other customers. If that boundary lands inside a logged-in flow, the destination sees the same session continuing from a new network location.

Why does a mid-session IP change get accounts flagged?

Because it matches the signature of a hijacked session. Account-security systems watch for the same authenticated session continuing from a different network, since that is what credential theft and session-token replay look like. Your legitimate lease expiry produces an identical signal.

Sticky sessions or rotation — which do I need?

Sticky for anything with state: logins, carts, checkouts, uploads, multi-step APIs. Rotation for independent, stateless requests where no destination needs to recognise you between calls. Most bans come from applying the second pattern to the first kind of work.

Dedicated mobile proxies, one dashboard

Real 4G/5G devices on US carrier SIMs. Sticky IP per customer, rotation on demand.

See plans