The right proxy rotation policy follows the unit of work. A multi-step workflow that depends on cookies, a cart or a stable locale normally needs one network identity for the full sequence. A set of independent public pages can often use a fresh eligible route for each task. Confusing these models creates failed logins, inconsistent localization and misleading benchmark results.

This guide explains sticky sessions and rotating sessions without assuming a provider-specific credential format. It focuses on authorized localization testing, ad verification, market research and public-web data collection.
What a sticky proxy session means
A sticky session asks the proxy service to keep a logical session on the same exit identity for a bounded period or until the session ends. The application may send several requests through that route while maintaining one cookie jar, locale and account state.
“Sticky” does not mean permanent. The exit can still become unavailable, the provider can enforce a maximum duration, or routing conditions can change. Production code must detect an unexpected identity change and decide whether to restart the workflow rather than silently joining two identities.
What rotating means
A rotating policy allows a new eligible exit to be assigned when a new task, connection or session is created. Rotation can occur per request, per connection or according to provider rules. Do not assume every request receives a globally unique IP; verify the behavior with the exact product and configuration.
Rotation is most useful when tasks are independent. Each unit should carry its own timeout, result record and retry limit. Cookies or authorization state from one identity should not leak into another.
Decision matrix
| Workflow | Preferred starting policy | Reason |
|---|---|---|
| Login, cart or multi-page form | Sticky | Application state and network identity stay aligned. |
| Regional storefront QA | Sticky per region | Locale, currency and subsequent API calls remain comparable. |
| Independent public product pages | Rotate per task | Each page can be measured separately without shared state. |
| Ad-verification journey | Sticky for the journey | Landing steps and redirects should represent one viewer. |
| Large catalog freshness checks | Controlled rotation | Independent items can be distributed while respecting limits. |
| Authenticated account operations | Stable approved identity | Unexpected changes can trigger security controls and invalidate results. |
Model session state explicitly
const session = {
key: process.env.PROXY_SESSION_KEY,
gateway: process.env.PROXY_SERVER,
region: process.env.PROXY_REGION,
startedAt: Date.now(),
maxDurationMs: 10 * 60 * 1000,
cookieJarId: crypto.randomUUID()
};
// Keep one cookie jar and one proxy session together.
// Create a new object for an independent rotating task.
The session key, gateway and credentials belong in protected runtime secrets. The object stored in logs should use a one-way hash of the session key, never the secret itself. A worker should know when the session started, its intended region, the associated cookie jar and the maximum allowed duration.
Five tests to run before scaling
1. Stability inside one session
Send a short sequence through the same session and confirm the observed exit, country, ASN and application locale remain consistent. Record both network identity and the business outcome.
2. Separation between sessions
Create several independent sessions and measure how often their exit identities differ. The objective is not an unrealistic promise of uniqueness; it is evidence that the configured rotation policy behaves as documented.
3. Cookie continuity
Use one isolated browser context or cookie jar per sticky session. Confirm a harmless preference or authorized test session persists across steps. RFC 6265 explains how Cookie and Set-Cookie allow servers to maintain state over otherwise stateless HTTP.
4. Region consistency
Check IP-derived region, page language, currency, timezone-sensitive content and downstream API behavior. An IP in the expected country is insufficient if the page uses an old cookie or account preference from another region.
5. Expiry and recovery
Allow the session to reach its configured boundary or simulate an unavailable exit. Verify that the workflow stops cleanly, creates a new session and restarts only from a safe checkpoint. Never continue a checkout or signed-in flow across an unexplained identity change.
Retries must preserve the intended policy
For a sticky workflow, a transient retry should normally keep the same session key and cookie jar. If that identity is no longer available, restart the complete logical journey with fresh state. For an independent rotating task, a retry may use a new session, but it must be recorded as a new attempt so success rates are not inflated.
Do not retry deterministic 401, 403 or validation failures as if they were network errors. For 407, verify proxy credentials and product configuration. For 429, reduce concurrency and respect the destination's retry guidance.
Concurrency and rate control
Concurrency should be limited per destination, region and logical session. Running many workers through one sticky identity can produce unrealistic behavior and contention. Assign one active journey, or a carefully bounded number of compatible requests, to each session.
Use a queue with explicit task IDs. A worker acquires a session, completes or fails the unit, records evidence and releases it. This makes cost, retry rate and usable-result rate measurable.
Metrics that reveal the correct choice
- usable-result rate by policy and region;
- session completion rate;
- unexpected identity-change rate;
- p50 and p95 time per completed unit;
- challenge, 407, 429 and timeout rates;
- retries per usable result;
- cost per completed business outcome;
- locale and currency accuracy.
A higher raw request success rate is not automatically better. A rotating test that loads pages but breaks the cart has failed its business objective. A sticky test that preserves state but produces low geographic coverage may be wrong for independent collection.
Common failure patterns
- Cookies follow a new exit: application state and network identity were not isolated together.
- Exit changes mid-journey: session duration expired or the provider could not preserve the route.
- Every worker shares one identity: session keys were reused accidentally.
- Rotation appears ineffective: connections were pooled or the same session identifier was reused.
- Locale is inconsistent: IP region, browser locale, timezone, cookies and account settings disagree.
- Metrics look excellent but orders fail: monitoring counted HTTP responses rather than completed business outcomes.
Production checklist
- Define the unit of work before choosing rotation.
- Keep proxy session and cookie jar in the same isolation boundary.
- Set a maximum session duration and a safe restart point.
- Hash identifiers and redact credentials in logs.
- Limit concurrency per destination and region.
- Separate network retries from application failures.
- Measure completed outcomes, not only status codes.
- Use only authorized targets and respect terms and rate limits.
Choose the appropriate 98IP product
Workloads that need controlled identity changes can evaluate 98IP rotating residential proxies. When the business requirement is a longer-lived regional identity, compare 98IP static residential proxies. Test with representative journeys before increasing volume.
98IP provides the proxy services referenced above, and this guide is published by the 98IP team. Proxy access does not override authorization, privacy obligations, destination terms or technical rate limits.
FAQ
Does sticky mean the IP can never change?
No. Treat stickiness as a bounded service behavior and design safe recovery for exit loss or expiry.
Should every request use a new IP?
Only if requests are truly independent and the provider's rotation behavior supports that design. Stateful journeys usually should not.
Can I reuse cookies after rotating?
Technically a client can, but doing so can create inconsistent identity and privacy signals. Isolate or deliberately transfer state only when the authorized test requires it.
Research note
Session-state behavior was checked against RFC 6265 and the Playwright BrowserContext, Isolation and APIRequestContext documentation, consulted 16 August 2026. Source names and dates appear as plain text under 98IP's zero-external-link policy.
Related Recommendations
- How to set up a computer to access the Internet with dynamic IP? What is the use of dynamic proxy IP?
- Sticky vs Rotating Proxy Sessions: A Practical Selection and Testing Guide
- Playwright Proxy Configuration Guide: Authentication, Isolation and Debugging
- What are the functions of the http proxy IP tool? How to set the proxy IP address for mobile phone software?
- Python Rotating Proxy Guide: Sessions, Retries and Troubleshooting
- How to set up the Firefox proxy server? Just these few steps are easy to get done
- How to turn off global proxy settings
- How to set up proxy IP in Edge Browser: Detailed Tutorial
- Apple mobile phone set up static IP tutorial, what is the role of long-term IP agents?
- How to set up an HTTP proxy server on iPhone or iPad