Every proxy provider offers two fundamental modes: rotating IPs that change with every request and sticky sessions that maintain the same IP across multiple requests. Choosing the wrong mode is one of the most common reasons scraping projects fail. Rotating when you should be sticky breaks login flows. Staying sticky when you should rotate gets your IP banned. This guide explains exactly when to use each mode and how to configure sticky sessions correctly.
What Is a Sticky Session?
A sticky session (also called session persistence) assigns you a single IP address that persists across multiple requests for a defined period. Instead of getting a new IP on every connection, the proxy gateway remembers your session identifier and routes all your traffic through the same exit node.
Think of it like a reserved parking spot versus a random one. With rotating proxies, you park in a different spot every time you arrive. With a sticky session, you get the same spot for as long as your reservation lasts.
Technically, here is what happens:
- You send a request with a session identifier (e.g.,
session-abc123) appended to your proxy credentials. - The proxy gateway maps that identifier to a specific IP from its pool.
- Every subsequent request using the same identifier routes through the same IP.
- The session expires after a configurable timeout (typically 10-30 minutes of inactivity).
When You Need Sticky Sessions
1. Login and Authentication Flows
This is the most common reason to use sticky sessions. When you log into a website, the server associates your authenticated session with your IP address. If your IP changes mid-session, the server may:
- Invalidate your session cookie
- Trigger a CAPTCHA or security check
- Lock the account for suspicious activity
2. Multi-Step Forms and Checkouts
E-commerce checkout flows typically span 3-5 pages: cart review, shipping address, payment details, and confirmation. Many sites track IP consistency across these steps. An IP change between the cart and payment page often triggers fraud detection systems that decline the transaction.
3. Account Management at Scale
If you manage multiple social media accounts, marketplace seller accounts, or any platform where each account needs a consistent identity, sticky sessions are essential. Each account should be bound to its own session ID, ensuring it always appears from the same IP address. Learn more about session persistence strategies.
4. API Interactions with Session State
Some APIs issue tokens or nonces tied to the requesting IP. Changing IPs mid-interaction invalidates these tokens and forces re-authentication. If you are interacting with APIs that maintain server-side state, use sticky sessions.
5. Price Monitoring with Consistency
When monitoring prices over time, using the same IP for repeated checks on the same product eliminates IP-based price personalization as a variable. This gives you cleaner, more comparable data points.
When You Should NOT Use Sticky Sessions
1. Large-Scale Data Collection
If you are scraping thousands of product pages, search results, or public listings, rotating IPs are superior. Each request gets a fresh IP, distributing your traffic across the pool and making it nearly impossible for the target site to identify a pattern.
2. Search Engine Scraping
Search engines are aggressive about detecting automated traffic from single IPs. Rotating through diverse residential IPs with each request mimics natural search behavior from different users.
3. One-Shot Requests
If each request is independent -- fetching a public page, checking a price, verifying content availability -- there is no reason to maintain a session. Rotating IPs are faster and more resilient because a blocked IP only affects one request.
4. High-Volume Ad Verification
Ad verification requires checking ad placements across many publishers from many locations. Rotating IPs with geo-targeting provide the geographic diversity that sticky sessions cannot.
Sticky Sessions vs Rotating Proxies: Decision Matrix
| Scenario | Recommended Mode | Why |
|---|---|---|
| Logging into websites | Sticky | IP consistency prevents session invalidation |
| Scraping product listings | Rotating | IP diversity avoids detection patterns |
| Multi-step checkout | Sticky | Fraud detection tracks IP across steps |
| SERP scraping | Rotating | Search engines flag single-IP patterns |
| Account management | Sticky | Each account needs a consistent identity |
| Public API calls | Rotating | Independent requests benefit from diversity |
| Price comparison (same product over time) | Sticky | Consistent IP eliminates personalization variables |
| Bulk content downloads | Rotating | High volume needs distributed IPs |
How to Configure Sticky Sessions with Hex Proxies
Hex Proxies uses a username-based session system. Append a session identifier to your proxy username:
Standard rotating (default):
Username: YOUR_USERNAME
Password: YOUR_PASSWORD
Proxy: gate.hexproxies.com:8080
Sticky session:
Username: YOUR_USERNAME-session-mySession123
Password: YOUR_PASSWORD
Proxy: gate.hexproxies.com:8080
Key configuration details
- Session ID: Any alphanumeric string. Use unique IDs for different logical sessions.
- Duration: Sessions persist for up to 30 minutes of inactivity. Any request within the window resets the timer.
- Geo + Sticky: You can combine geo-targeting with sticky sessions:
YOUR_USERNAME-country-us-session-checkout1 - Pool type: Sticky sessions work with both residential and ISP proxies.
Example: Managing 10 accounts simultaneously
import requests
accounts = ["account_1", "account_2", "account_3", "account_4", "account_5",
"account_6", "account_7", "account_8", "account_9", "account_10"]
for account_id in accounts:
proxy_url = f"http://YOUR_USERNAME-session-{account_id}:YOUR_PASSWORD@gate.hexproxies.com:8080"
proxies = {"http": proxy_url, "https": proxy_url}
# Each account gets its own persistent IP
response = requests.get("https://httpbin.org/ip", proxies=proxies)
print(f"{account_id}: {response.json()['origin']}")
Each account ID maps to a unique IP. As long as you reuse the same session ID, the same IP is assigned.
Sticky Session Best Practices
1. Use descriptive session IDs
Instead of random strings, use IDs that help you debug: session-shopify-account3, session-checkout-order789. When something breaks, you can trace which session had the issue.
2. Implement session rotation for long tasks
If a task runs for hours, periodically create a new session ID to get a fresh IP. This prevents the target site from flagging a single IP that has been active for too long:
import time
def get_session_id(base: str, rotation_minutes: int = 30) -> str:
"""Generate a session ID that rotates on a fixed interval."""
bucket = int(time.time() / (rotation_minutes * 60))
return f"{base}-{bucket}"
3. Handle session expiration gracefully
If a session expires (30 minutes of inactivity), the next request with that session ID will receive a new IP. Your code should detect this -- for example, by checking the response for login page redirects -- and re-authenticate when necessary.
4. Do not share session IDs across threads
Each concurrent worker or thread should use its own session ID. Sharing a session ID across workers creates unpredictable routing behavior.
5. Match session duration to task requirements
For a quick login-and-scrape (under 5 minutes), any session duration works. For long-running account management, plan for session refreshes and re-authentication cycles.
Sticky Sessions with ISP Proxies vs Residential Proxies
| Factor | ISP Sticky Sessions | Residential Sticky Sessions |
|---|---|---|
| IP type | Static, dedicated to you | Shared pool, assigned per session |
| Duration | Unlimited (IP is yours) | Up to 30 min inactivity timeout |
| Speed | Sub-50ms latency | 100-300ms typical |
| Best for | Account management, speed-critical flows | Large-scale session-based scraping |
| Pricing | Per IP, monthly | Per GB of traffic |
For more detail on choosing between these proxy types, see our best practices guide for sticky sessions.
Common Sticky Session Mistakes
- Using sticky mode for bulk scraping: This puts all your requests through one IP, which gets banned quickly. Use rotating mode instead.
- Forgetting to include the session parameter: Without the session suffix in your username, Hex Proxies defaults to rotating mode. Double-check your credential string.
- Reusing the same session ID after a ban: If an IP gets blocked, that session ID is still mapped to it. Create a new session ID to get a fresh IP.
- Setting sessions too long for the task: A 30-minute session for a 2-minute checkout flow ties up an IP unnecessarily. Keep sessions scoped to the actual task duration.
Ready to Configure Sticky Sessions?
Whether you need session persistence for login flows, checkout automation, or account management, Hex Proxies makes it simple. Append a session ID to your username and the gateway handles the rest.
Explore proxy plans -- residential proxies from $4.25/GB with sticky session support, or ISP proxies with permanent dedicated IPs and unlimited bandwidth.