The Short Answer: Persist Only What the Job Requires#
Use a static proxy when a system you control needs a known source IP for an allowlist, audit trail, or long-lived connection. Use a sticky session when several permitted requests must keep one exit for a short workflow. Use rotation when requests are independent and the source permits distributed regional sampling.
The choice is not a contest between "stable" and "anonymous." It is a state-design decision. Rotation does not create permission, increase a quota, erase cookies, or guarantee a unique exit. Static does not automatically mean dedicated, trusted, fast, or permanently available.
| User requirement | Start with | State that must persist | Reject the design when |
|---|---|---|---|
| Approved endpoint allowlists one source | Static address | Source IP and audit identity | Failover can silently replace the IP or allocation is unclear |
| Short public flow needs temporary continuity | Sticky session | Client cookies plus one exit mapping | The flow exceeds the supported window or crosses a restricted boundary |
| Each permitted observation stands alone | Rotating pool | Only the source-wide budget and task record | The plan depends on rotating around a block, challenge, or quota |
| Official API, feed, export, or preview exists | Official method first | Documented API credentials and quotas | A proxy would duplicate a supported, safer access path |
Separate Persistence, Allocation, Network Origin, and Protocol#
Several proxy properties are often compressed into one marketing label. Treat them as separate axes:
- Static versus rotating describes whether the exit address is expected to remain stable or can be reassigned.
- Sticky describes a time- or session-bound mapping inside a rotating pool.
- Dedicated versus shared describes allocation: one customer or multiple customers can use the resource.
- Residential, mobile, ISP, and datacenter describe the network source and operational model, not session duration.
- HTTP and SOCKS5 describe the client-to-proxy protocol, not whether the exit rotates.
A static address can be shared. A dedicated address can be replaced after failure. A sticky residential exit remains part of a rotating pool even while the mapping holds. An HTTP or SOCKS5 gateway can expose either a static address or pool logic behind the same endpoint.
| Property | Example values | Why it changes the design |
|---|---|---|
| Exit persistence | Per request, per connection, 15-minute sticky, static until replacement | Determines whether consecutive requests should observe one source |
| Allocation | Shared, dedicated, exclusive port, unspecified | Affects contention, reputation variance, and ownership assumptions |
| Network origin | Datacenter, ISP, residential, mobile | Affects supply, route, latency, pricing, and consent questions |
| Client protocol | HTTP forward, HTTP CONNECT, SOCKS5 | Affects client support, DNS choice, authentication, and transport capability |
| Billing unit | GB, IP-month, port, request, committed tier | Determines the correct cost formula |
For the protocol decision itself, use the HTTP-versus-SOCKS5 wire-level guide. Session mode and proxy protocol are adjacent choices, not substitutes.
A Proxy Session Does Not Own Your Application State#
A sticky proxy session usually maps a provider-specific session identifier to an exit address. It does not store a browser's cookies, an API token, a shopping cart, a database transaction, or the destination's account state.
The current HTTP cookie standard, RFC 10025, published in July 2026, describes an origin sending Set-Cookie and a user agent returning matching cookies later. That state belongs to the user agent and origin interaction. Changing the exit does not clear it; keeping the exit does not preserve it if the client discards the cookie jar.
| State | Typical owner | What a proxy-mode change does |
|---|---|---|
| Cookies and browser storage | Browser or HTTP client | Normally nothing; the client still sends state according to its rules |
| Authorization token | Client and destination | Does not revoke, refresh, or authorize the token |
| Sticky session identifier | Client configuration and proxy gateway | Selects a mapping according to provider policy |
| Source-IP allowlist | Destination owner | A changed exit can break access even when client credentials remain valid |
| Quota or rate counter | Destination or intermediary | May use account, cookie, IP, resource, or several signals; rotation does not reset permission |
Design rule: carry application state explicitly in the approved client, and treat the exit address as one network input. Never rely on IP rotation to impersonate separate users or evade a destination control.
How Rotation Actually Appears in a Request Sequence#
A rotating gateway chooses an exit according to its pool, targeting, health, allocation, connection, and session rules. "Per-request rotation" is therefore an instruction or service behavior, not proof that every response came from a unique address. This one-address-many-exits packaging is what providers sell as backconnect; the backconnect gateway guide demonstrates per-request rotation and credential-pinned sticky sessions on a loopback pool you can run yourself.
Persistent HTTP connections can carry more than one request. RFC 9112 defines HTTP/1.1 connection persistence, while HTTP/2 and HTTP/3 can multiplex requests. A provider might bind selection to a connection, a gateway request, a session credential, or another implementation boundary. If uniqueness or continuity matters, verify the observed exit and timestamps; do not infer them from the product name.
| Field | Purpose | Privacy boundary |
|---|---|---|
| Logical task ID | Groups requests that are allowed to share state | Use a random internal ID, not a customer name or credential |
| Proxy session ID hash | Confirms which configuration requested continuity | Never log the raw username, password, or complete proxy URL |
| Observed exit IP and ASN | Tests persistence and network classification | Restrict retention and access; an IP can be personal data in some contexts |
| Connection-reuse flag | Separates gateway selection from a reused transport | Record a boolean or connection ID, not packet contents |
| Status and failure phase | Distinguishes proxy auth, connect, TLS, destination, and timeout failures | Do not capture response bodies containing private data |
Use the proxy checker for a point-in-time liveness and exit observation, then reproduce the result in the exact client that will run the workload.
Three Safe Production Patterns#
Pattern 1: independent regional observations. Give each permitted public observation its own task ID. Enforce one request budget across the entire pool, preserve the destination's published rate limits, and store the observed region and exit with the result. Rotation is useful for sampling; it is not a reason to increase volume.
Pattern 2: short stateful quality-assurance flow. Keep one client cookie jar and one sticky session identifier for the approved steps. Set the proxy window slightly longer than the measured p95 flow time, but shorter than the provider maximum and operational need. Databay supports sticky residential sessions for up to 120 minutes. If the flow can exceed the window, split it only at a valid application boundary or choose an approved static source.
Pattern 3: allowlisted service you control. Use a static address, verify whether it is dedicated, and document replacement and failover. Test the primary and any preapproved secondary address before deployment. Monitor the public exit separately from the gateway hostname so a replacement cannot silently break the allowlist.
| Pattern | Keep stable | Measure | Stop condition |
|---|---|---|---|
| Independent sampling | Source-wide budget and test definition | Coverage, success rate, exit distribution, duplicate results | 403, 429 without an approved wait, challenge, or unclear source permission |
| Short stateful QA | Client state, session token, region, approved account context | Flow duration, session expiry, exit changes, step failures | Authentication boundary, challenge, account restriction, or session expiry mid-step |
| Allowlisted service | Source address, destination policy, client identity | Exit drift, connect/TLS latency, replacement events | Unapproved failover address or unexplained route change |
Retry the Failure You Understand, Not the Identity#
A retry policy belongs to the logical task, not to each exit. Otherwise a rotating pool can multiply a small retry count into an uncontrolled request burst.
RFC 9110 defines safe methods and warns that a proxy must not automatically retry non-idempotent requests. RFC 6585 defines 429 Too Many Requests and allows a Retry-After field; the 429 error guide covers how to read and honor it. The source can count by resource, server, credentials, cookie, or other criteria, so a new exit is not evidence that the limit no longer applies.
| Signal | Action | Exit behavior |
|---|---|---|
Proxy 407 | Stop and fix proxy credentials or account policy | Do not rotate; another exit cannot repair gateway authentication |
| Connect failure before any destination response | For a replay-safe task, retry at most the documented limit with backoff and jitter | Use the configured session policy; record whether the exit changed |
502, 503, or 504 | Classify the failing hop, honor Retry-After when supplied, then use a small capped retry budget | Do not assume rotation is the remedy |
429 | Honor Retry-After and the source-wide quota; stop if no approved retry window exists | Never rotate to bypass the limit |
401, 403, challenge, or account restriction | Stop and review authorization, official access paths, and destination support guidance | Never change exits to continue |
| Unsafe or non-idempotent request with an ambiguous outcome | Do not automatically replay; reconcile application state first | Keep the incident auditable |
// Policy outline for understood, replay-safe work only
const delayMs = Math.min(capMs, baseMs * 2 ** attempt) + randomJitterMs;
if (response.status === 429 && response.headers.has("retry-after")) {
waitUntilApproved(response.headers.get("retry-after"));
} else if ([502, 503, 504].includes(response.status) && attempt < maxAttempts) {
await sleep(delayMs);
} else {
stopAndClassify(response.status);
}If the intermediary emits Proxy-Status, RFC 9209 defines structured error details such as DNS, connection, and timeout failures. Treat that field as diagnostic evidence, not as a guarantee that every intermediary reports it.
Compare Cost With the Same Monthly Workload#
Static and rotating services often use different billing units. Comparing a per-IP sticker price with a per-GB price without estimating workload produces a meaningless winner.
The calculator above uses decimal gigabytes: traffic GB = monthly requests × average round-trip KB ÷ 1,000,000. The rotating estimate is traffic GB × quoted $/GB. The static address estimate is IP count × quoted $/IP/month. When both rates are present, the simple break-even volume is static address cost ÷ rotating $/GB.
That is only a normalization step. Add uploads, headers, failed responses, bounded retries, plan minimums, targeting fees, traffic included with static addresses, overage, concurrency limits, commitment term, taxes, replacement policy, and support. A cheaper line item can be the wrong design if it cannot preserve the required state or introduces unaudited failover.
| Input | How to obtain it | Common omission |
|---|---|---|
| Monthly request count | Production forecast plus a separately bounded retry allowance | Multiplying retries independently for every exit |
| Round-trip bytes | Measure request headers/body and response headers/body on representative traffic | Counting only downloaded payload |
| Required address count | Allowlist and approved redundancy design | Adding addresses to evade source controls |
| Usable success rate | Controlled pilot using the real client and destination you own or may test | Comparing latency only among successes |
| Operational cost | Monitoring, replacement, support, incident handling | Treating pool management as free |
Verify current product terms on the residential pricing page; the calculator intentionally does not embed a competitor price or pretend that one billing model covers every plan.
Validate the Session Design Before Production#
Run the smallest controlled test that can falsify the design. Use a destination you own or have explicit permission to test, and keep credentials outside source code and logs.
- Pin the client and proxy configuration. Record library, browser, or cURL version; proxy protocol; gateway; targeting; session mode; timeout; and connection-reuse policy.
- Measure the direct baseline. For an authorized destination, record DNS, connect, TLS, first-byte, total time, status, and response identity without the proxy.
- Run six requests in the intended pattern. Log a redacted task ID, timestamps, observed exit, country estimate, ASN, status, and failure phase.
- Test the boundary deliberately. For sticky mode, wait past the configured window using a non-sensitive endpoint. For static mode, use the provider's documented replacement test or support process; do not force an outage.
- Test one safe transient retry. Use a controlled synthetic
503or connection failure. Confirm the total task retry budget, delay, and exit behavior. - Test every stop condition. A synthetic
403,429, or challenge must halt the workflow rather than trigger rotation. - Reconcile cost from measured bytes. Replace estimates in the lab with the pilot's complete round-trip volume and quoted plan terms.
Evidence boundary: a six-request lab can verify one client, configuration, time window, and endpoint. It cannot prove future pool availability, destination acceptance, legal compliance, operator logging, or a universal performance advantage.
Questions to Ask Before Buying or Deploying#
Request written answers when session continuity is operationally important:
- Does rotation occur per request, per new connection, on time expiry, on failure, or through a session token?
- Is the exit shared or dedicated, and is the gateway itself static even when exits rotate?
- What is the minimum, default, and maximum sticky duration? Does activity extend it?
- What happens when an exit disappears during a sticky session?
- Can static failover change the address? How is replacement announced and audited?
- Are bandwidth, uploads, failed responses, and retries billed?
- Which locations and network classifications are actually available for this plan?
- What logs are retained, for how long, and who can access them?
- Which uses are prohibited by the provider and the destination?
- Which error fields or support traces distinguish gateway, DNS, connect, TLS, and upstream failures?
Avoid vendors that promise "undetectable" traffic, guaranteed access, unlimited rotation around controls, or certainty about how a destination will classify an address. Those claims collapse network routing, reputation, client behavior, account state, and destination policy into something a proxy cannot guarantee.
Continue From the Question You Actually Have#
Use the next resource that matches the unresolved part of the design:
| If you still need to know... | Next resource | Why |
|---|---|---|
| Which connections a proxy changes | Trace a proxy request path | Separates client, proxy, DNS, destination, and reverse-proxy roles |
| How to configure the real client | Choose a tested integration guide | Client behavior determines credentials, DNS, pooling, and errors |
| Whether one endpoint is alive and what exit it presents | Run the proxy checker | Produces a point-in-time liveness, latency, protocol, and exit observation |
| Which managed network fits the approved workload | Compare proxy network types | Reviews residential, mobile, datacenter, and flexible options after the state requirement is known |
After deployment, verify the application path independently with What Is My IP and client logs. A product setting is an intention; the observed route is the evidence.



