← Back to blog
STICKY nodetonet.com

Sticky sessions explained — pin one device per session inside a rotating pool

N Nodetonet Team
May 4, 2026 10 min read

Rotation gives you a fresh IP on every connection — perfect for broad scraping, price monitoring and any workload where each request is independent. But plenty of real tasks are stateful: a login flow, a multi-step checkout, a form that tracks your session across several pages. Rotating the IP mid-flow looks like account takeover to most anti-fraud systems, and they block you instantly. Sticky sessions solve this by pinning one session identifier to one physical device for a defined window of time, then automatically refreshing the IP at expiry — so you keep rotating identity over time without breaking any single user journey.

TL;DR: append -session-XXXX to your proxy username and every connection with that ID lands on the same device for the duration of the TTL. No code changes to the endpoint, no extra infrastructure — it is a one-field username modifier.

This guide covers the complete picture: how sticky sessions work under the hood, the exact username syntax, TTL mechanics, how to combine sticky with geo-targeting, what happens when a device goes offline, and a side-by-side comparison of sticky versus rotation for common use cases.

What is a sticky session?

In proxy terminology, a sticky session is a routing guarantee: all proxy connections that carry the same session key are forwarded through the same exit device for a fixed time-to-live (TTL). The concept is borrowed from load-balancer design, where "session affinity" or "sticky routing" keeps one user's HTTP requests on the same backend server so server-side session data stays valid.

On a mobile proxy platform like Nodetonet, the device is a real Android phone on a live carrier SIM. Each device has its own real carrier IP from the carrier-grade NAT (CGNAT) pool. A sticky session does not freeze that IP permanently — instead it pins your requests to that device, and when the TTL expires the device gets a fresh carrier IP while staying bound to your session. The result is: same trusted device, periodically refreshed IP, continuous session.

The username syntax

There is nothing to configure beyond your proxy username. Any connection whose username matches the pattern <base>-session-<id> is treated as a sticky session automatically. The router hashes the session ID, selects an eligible device from your token group pool, and pins that binding for the TTL window.

Format:  <token>-session-<any-string>
Example: u8x2-session-user42
Example: u8x2-session-a3f9c1d8-4b27-4e6e-a1cc-f2bc1234abcd

The session ID after -session- is entirely arbitrary. Common patterns:

What matters is that the same string is reused for every request in a given session. Generate it once per user journey and pass it through.

Combining sticky with geo-targeting

Sticky modifiers compose with geo-targeting modifiers in the same username field. The router first filters the pool to devices matching your geo constraints, then applies the sticky pin within that filtered set:

# Sticky to a Turkcell device in Istanbul
u8x2-country-tr-carrier-turkcell-session-user42

# Sticky to any Turkish device
u8x2-country-tr-session-order99

See Turkey proxy locations, Turkcell, Vodafone and Türk Telekom pages for available carrier tags.

Live example: rotation vs sticky

# Pure rotation — each request may exit from a different device
curl -x http://u8x2:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
curl -x http://u8x2:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
# Result: two different IPs (pool rotates)

# Sticky — same device for both requests
curl -x http://u8x2-session-abc:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
curl -x http://u8x2-session-abc:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
# Result: same IP, same device

# Two independent sticky sessions from the same pool
curl -x http://u8x2-session-alice:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
curl -x http://u8x2-session-bob:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
# Result: likely two different devices, each stable to its own session

Both HTTP and SOCKS5 connections honour the same sticky logic — the session modifier works identically regardless of which protocol you use.

TTL mechanics — the default 600-second window

A sticky binding lasts for a configurable time-to-live. The default is 600 seconds (10 minutes). This is set at the token group level, not per-session and not per-proxy — every proxy that draws from the same group shares its TTL setting.

Valid TTL values run from 60 seconds to 3,600 seconds. Choose based on how long a typical user journey in your use case lasts:

TTL settingBest forTrade-off
60 – 120 s Short stateful bursts: login + single page-read, quick form submit IP refreshes frequently — near-rotation behaviour, less risk of IP reuse
300 – 600 s (default) Login, browse a few pages, add to cart, begin checkout — typical user flow Good balance between stability and IP freshness
900 – 1800 s Extended scrape where consistent identity matters (account-authenticated crawl) IP stays longer between refreshes; device is tied up to that session for longer
3600 s Full-hour workflows: onboarding funnels, survey completion, long-form data entry Maximum stability; IP rotates only once per hour

You change the TTL on the token group settings page in the Nodetonet panel. No endpoint changes, no code redeploy — the new value takes effect for sessions opened after the save.

What happens at TTL expiry — the exact sequence

This is the part most people get wrong, so it deserves precise explanation. When the TTL window closes for a sticky session:

  1. The router sends an IP-rotation command to the bound device. The device briefly drops its mobile data connection and reconnects, which causes the carrier to issue a fresh IP from its CGNAT pool.
  2. The sticky binding stays on the same physical device — it does not reassign to a different phone. The device just now carries a new exit IP.
  3. In-flight HTTP/SOCKS5 connections are not killed mid-request. Any request already through the proxy at TTL expiry completes normally; only new connections after the rotation see the new IP.
  4. The TTL timer resets for another full window. As long as you keep sending connections with the same session ID, the device remains your anchor.
"Sticky on Nodetonet" means same device, periodically refreshed carrier IP — not "the same IP frozen forever". If you need an IP that never changes, use a dedicated single-device proxy with IP rotation turned off entirely.

What happens if the pinned device goes offline?

Device connectivity is real-world — phones can lose signal or reboot. If the pinned device disconnects, the router does not silently drop your requests. Instead, it re-selects the next best available device in the pool and rebinds your session to it. The new device has its own IP; the switch is transparent from your proxy client's perspective, and the TTL timer continues from where it left off.

If you need guaranteed failover behaviour with device-level redundancy, read automatic failover for mobile proxies, which covers how token-group pools handle device drops.

Rotation vs sticky — choosing the right mode

Neither mode is universally better; the right choice depends on your workload's statefulness:

ScenarioRecommended modeWhy
Independent per-request fetches (price scraping, SERP monitoring, bulk data collection) Rotating Each request benefits from a fresh IP; no state to preserve
Login + authenticated browsing across pages Sticky IP change mid-session triggers fraud detection; session cookies must stay on one identity
Multi-step checkout or form flow Sticky Cart / form state tied to a session; rotating mid-flow looks like account takeover
Many parallel independent users through one pool Sticky (one session ID per user) Each user gets their own pinned device; pool provides IP diversity across users
One-time data fetch, no follow-up requests Rotating No stickiness needed; rotating gives maximum IP diversity per request
Account creation + profile setup (hours-long) Sticky with long TTL (1800 – 3600 s) Consistent identity throughout onboarding; IP refresh stays within the same device

Most production workflows mix both modes: rotate during discovery and broad crawling, then switch to sticky for the authenticated steps. Because the mode is encoded in the username — not the endpoint — you can switch on a per-request basis without changing any connection settings.

Per-client controls and sticky sessions

Sticky sessions live inside a token group and interact with all the per-client controls Nodetonet offers. A few things worth knowing:

Sticky with an upstream provider

If your token group chains to an upstream residential provider, the sticky binding attaches to whichever upstream credential was selected at session start. That upstream credential is then reused for the full TTL, giving you consistent exit identity through the chain. This is useful when you need the trust of a residential IP but want multi-session stickiness managed at the Nodetonet layer. Read sticky upstream sessions for the configuration details.

TCP/IP fingerprint and sticky sessions

Nodetonet supports TCP/IP fingerprint spoofing to make connections look like real Android devices at the network layer. When combined with sticky sessions you get a double layer of consistency: the same device (same carrier IP range, same CGNAT envelope) and the same network fingerprint across every request in a session. Anti-bot systems that inspect TLS JA3/JA4 fingerprints alongside IP reputation see a coherent mobile identity throughout the session window.

Diagnostic: verifying your sticky session is working

The quickest sanity check is to make two requests with the same session ID and compare the exit IP:

# Run twice with the same session suffix
curl -s -x http://u8x2-session-test99:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
curl -s -x http://u8x2-session-test99:p7q1@sub42.nodetonet.com:48888 https://api.ipify.org
# Both should return the same IP

You can also use our free What is my IP tool in a browser configured to use the sticky-session proxy — the reported IP should remain stable across page reloads within the TTL window. For deeper inspection, the proxy checker reports the exit IP, ASN, and carrier in one call.

Get started

Sticky sessions require no extra signup — they are available to every Nodetonet account as soon as you create a token group with at least one online device. Create a free account to get started, explore the full feature set on the features overview, or read token groups: creating pools to set up the underlying device pool before enabling stickiness.

Frequently asked questions

What is a sticky session in proxy terms?
A sticky session routes all connections that share the same session identifier through the same exit device for a fixed TTL. On Nodetonet you activate it by appending -session-XXXX to your proxy username — no endpoint or protocol changes needed.
How long does a sticky session last?
The default is 600 seconds (10 minutes), configurable per token group from 60 s up to 3,600 s. The timer resets on each connection within the window, and at expiry the device receives a fresh carrier IP while the session binding stays on the same device.
Does the IP stay the same for the entire sticky session?
Not permanently. The session stays pinned to the same physical device, but at each TTL expiry that device's carrier IP is refreshed. The result is a consistent identity across a user journey with periodic IP refresh — not a frozen static IP. For a never-changing IP, use a single-device proxy with rotation disabled.
Can I run multiple sticky sessions at the same time from one pool?
Yes. Each unique session ID gets its own device binding, so you can run many parallel sticky sessions through one rotating pool. Each session lands on a separate device, giving IP diversity across users while keeping each individual session stable. This is the core pattern for managing many users through a shared pool.
What happens if the pinned device goes offline mid-session?
The router automatically re-selects the next available device in the pool and rebinds the session to it. The switch is transparent to your proxy client, and the TTL continues from where it left off. For workloads that need guaranteed failover, read about automatic failover for mobile proxies.
When should I use sticky sessions instead of pure rotation?
Use sticky whenever your workflow is stateful: logins, multi-step forms, cart checkouts, account-authenticated scrapes, or any scenario where an IP change mid-flow would trigger a fraud or bot alert. For independent per-request fetches — price monitoring, bulk scraping, SERP checks — pure rotation is simpler and gives better IP diversity.
Does the sticky session modifier work with SOCKS5 as well as HTTP?
Yes. The -session-XXXX modifier is parsed from the proxy username regardless of the protocol layer. Both HTTP/HTTPS and SOCKS5 connections honour the same sticky routing logic.
Can I combine a sticky session with geo-targeting a specific carrier?
Yes. Append both modifiers in the username field: for example u8x2-country-tr-carrier-turkcell-session-user42 pins your session to a Turkcell device in Turkey. The router first filters the pool to matching devices, then applies the sticky pin within that filtered set. See the geo-targeting feature page for the full modifier syntax.
N

Nodetonet Team

Building Nodetonet — a prepaid proxy + tunneling platform that replaces ngrok, Cloudflared and a residential proxy provider with a single panel.

Related posts