Back to blog
ProxiesAug 25, 20267 min read

How Rotation Intervals Actually Affect Detection: 1 Request vs 1 Session vs Timed

Per-request, timed, and session-based rotation solve different problems, not the same problem three ways. Picking the wrong one — or rotating on a rigid, predictable schedule regardless of which mode you pick — is often the actual cause of a "the proxy isn't working" complaint.

SimplyNode Team
Engineering & Support · SimplyNode
Glowing lime and electric-blue rotating arrows stacked at different angles float above a dark reflective surface, suggesting cycles at varying speeds.

Rotation Timing Matters

TL;DR

Rotating proxies don't have one setting — a gateway can swap the IP on every single request, hold it for a fixed time window, or hold it for the length of a logical session you define. Each mode fits a different task, and the mistake that undermines all three is the same: rotating on a fixed, predictable schedule creates a pattern that's just as detectable as never rotating at all.

The three rotation modes

Per-request rotation. A fresh IP on every single request, no exceptions. This fits stateless, high-volume work — independent search queries, isolated page checks, anything where each request stands alone and doesn't need to look connected to the last one.

Timed rotation. The IP holds for a fixed window — say, five or ten minutes — then swaps regardless of how many requests happened in that window. This suits tasks that need a few minutes of continuity without holding one identity indefinitely: browsing simulations, moderate-volume monitoring where some short-term consistency helps but a full session isn't required.

Session-based rotation. You define the trigger — typically a session ID you generate yourself, tied to a logical task rather than a clock. The IP holds for exactly as long as that task takes, however long that turns out to be, and releases when the task completes. This is what a multi-step login, checkout, or paginated data pull actually needs: continuity matched to the task's real duration, not an arbitrary timer.

The mistake that undoes all three

Here's the part that gets missed even by teams who pick the right mode: rotating on a rigid, predictable schedule is itself a signal. If a target site logs requests and notices a new IP arriving every exactly five requests, or every exactly sixty seconds, that lockstep pattern reads as automated regardless of how clean each individual IP is. Real users don't rotate on a timer — they hold one connection per session and vary between sessions, with irregular timing throughout.

The fix isn't complicated, but it does mean adding deliberate randomness rather than a clean fixed interval: vary the rotation window (a range like 4-12 minutes instead of a flat 5), vary request timing within a session (irregular pauses instead of a fixed delay), and let session-based rotation trigger on task completion rather than a clock at all wherever the task allows it.

Matching rotation mode to task

python

import hashlib

# Per-request: independent keyword searches, one IP per request, no session parameter
proxy_per_request = "http://login:country-us@ip.simplynode.io:9003"

# Timed: a browsing simulation that should hold identity for a bounded window
proxy_timed = "http://login:country-us-session-{}-ttl-600@ip.simplynode.io:9003".format(
    hashlib.md5(b"timed-window-01").hexdigest()[:8]
)

# Session-based: a multi-step checkout flow, TTL sized to the task, not a round number
task_id = "checkout-flow-user-04821"
session_id = hashlib.md5(task_id.encode()).hexdigest()[:8]
proxy_session = f"http://login:country-us-session-{session_id}-ttl-900@ip.simplynode.io:9003"

The TTL in a session-based setup should reflect how long the actual task takes, not a convenient round number picked in advance — a checkout flow that usually takes four minutes doesn't need a fifteen-minute session held open for no reason, and a research task that occasionally runs long shouldn't get cut off by a TTL sized for the average case.

Common mistakes

Using per-request rotation for a multi-step flow. Switching IPs mid-login or mid-checkout makes a single continuous action look like several different visitors abandoning and restarting it.

Using session-based rotation for high-volume independent requests. Holding one IP across thousands of unrelated search queries defeats the point of having a large pool — it also puts unnecessary sustained load on a single IP that per-request rotation would have spread out.

Fixed, round-number intervals. A rotation that happens every exactly N minutes or every exactly N requests is a pattern a detection system can learn just as easily as it learns a static IP.

Sizing TTL to convenience instead of the task. A session that expires before a slow but legitimate task finishes causes exactly the kind of mid-task IP switch that both per-request and timed rotation are meant to avoid for session-based work.

FAQ

When should I use per-request rotation instead of timed rotation? Per-request rotation fits independent, stateless requests — separate searches or page checks that don't need to look connected to each other. Timed rotation fits tasks that benefit from a few minutes of continuity without needing a full defined session.

Why did my rotation strategy still get flagged even though I was rotating IPs? Rotating on a fixed, predictable schedule — the same interval or request count every time — creates a detectable pattern on its own, independent of how clean the IPs themselves are. Adding variability to the rotation timing addresses this directly.

How long should a session-based rotation TTL be? Long enough to cover the actual task, including its slower-than-average cases, rather than a round number picked for convenience. A TTL that's too short causes mid-task IP switches; one that's unnecessarily long holds a single IP under sustained use for no benefit.

Can I mix rotation modes within the same workflow? Yes, and it's often the right approach — per-request rotation for independent lookups feeding into a task, then a session-based hold for the specific multi-step action that needs continuity.

SimplyNode Team
Aug 25, 2026
SN
SimplyNode Team
Engineering & Support · SimplyNode

The team behind the SimplyNode network - residential and mobile proxies, 8M+ ethically-sourced IPs, a 99.3% success rate. We write about the practical infrastructure work behind reliable scraping.

All articles by SimplyNode Team