v1.10.90-0e025b8
Skip to main content
Back to Hex Proxies

Residential Proxy Rotation Guide

Last updated: April 2026

By Hex Proxies Engineering Team

Optimize your residential proxy rotation strategy with Hex Proxies. Covers per-request rotation, timed rotation, geographic rotation, and scaling patterns.

intermediate20 minutesbest-practices

Prerequisites

  • Hex Proxies residential plan
  • Basic understanding of web scraping or automation

Steps

1

Choose a rotation mode

Use per-request rotation for scale, sticky sessions for stateful workflows, or geographic rotation for geo-testing.

2

Configure the gateway

Use gate.hexproxies.com:8080 with your credentials. Append session or country tags as needed.

3

Test rotation

Send 10 requests and verify each response shows a different origin IP.

4

Set concurrency limits

Start with 5-10 concurrent threads and scale up while monitoring success rates.

5

Add anti-detection measures

Rotate User-Agent headers and add random delays between requests.

6

Monitor metrics

Track success rate, unique IPs per hour, block rate, and latency distribution.

Residential Proxy Rotation Strategies

Effective IP rotation is the foundation of successful large-scale scraping and automation. Hex Proxies provides access to a 10M+ residential IP network through partner agreements, with automatic rotation through the gate.hexproxies.com gateway.

Rotation Modes

Per-Request Rotation (Default)

Every request through gate.hexproxies.com without a session tag automatically uses a different IP:

import requests

proxy = "http://YOUR_USERNAME:YOUR_PASSWORD@gate.hexproxies.com:8080" proxies = {"http": proxy, "https": proxy}

Each request gets a different IP for i in range(10): resp = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=15) print(f"Request {i}: {resp.json()['origin']}") ```

Timed Sticky Sessions

Hold the same IP for a set duration by appending a session ID to the username:

session_proxy = "http://YOUR_USERNAME-session-timer001:YOUR_PASSWORD@gate.hexproxies.com:8080"
session_proxies = {"http": session_proxy, "https": session_proxy}

All requests within the session window use the same IP for page in range(1, 6): resp = requests.get(f"https://example.com/page/{page}", proxies=session_proxies) print(f"Page {page}: {resp.status_code}") ```

Geographic Rotation

Target specific countries or cities to test geo-restricted content or distribute load across regions:

regions = ["us", "gb", "de", "jp", "br"]

for region in regions: regional_proxy = f"http://YOUR_USERNAME-country-{region}:YOUR_PASSWORD@gate.hexproxies.com:8080" resp = requests.get("https://httpbin.org/ip", proxies={"http": regional_proxy, "https": regional_proxy}) print(f"{region}: {resp.json()['origin']}") ```

Rotation Strategy by Use Case

Use CaseStrategySession Type
Product price monitoringPer-requestRotating
Social media scrapingTimed sticky (5-10 min)Sticky
Login + scrape workflowsSticky for login, rotate for scrapingMixed
SEO rank checkingPer-request with geo targetingRotating
Ad verificationGeographic rotationRotating

Scaling Rotation

import concurrent.futures

def scrape_url(url): proxy = "http://YOUR_USERNAME:YOUR_PASSWORD@gate.hexproxies.com:8080" try: resp = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=20) return (url, resp.status_code, len(resp.content)) except requests.RequestException as e: return (url, 0, str(e))

urls = [f"https://example.com/product/{i}" for i in range(100)]

with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor: results = list(executor.map(scrape_url, urls))

success_rate = sum(1 for _, status, _ in results if status == 200) / len(results) print(f"Success rate: {success_rate:.1%}") ```

Anti-Detection Patterns

  • Vary request timing with random delays (1-5 seconds between requests).
  • Rotate User-Agent headers alongside IP rotation.
  • Respect robots.txt and rate limits.
  • Use residential IPs for protected targets, ISP proxies for speed-critical tasks.
  • Monitor success rates and switch strategies if blocks increase.

Monitoring Rotation Quality

Track these metrics to evaluate your rotation strategy:

  • Success rate: Percentage of 200 responses. Target 95%+ for well-configured rotation.
  • Unique IPs per hour: Higher diversity reduces detection risk.
  • Block rate: Percentage of 403/429 responses. Increase rotation speed if this rises.
  • Latency distribution: Identify slow regions and adjust geographic targeting.

Tips

  • Per-request rotation is the default — you do not need to configure anything for automatic IP changes.
  • Sticky sessions maintain the same IP until the session expires or you change the session tag.
  • Pair IP rotation with User-Agent rotation for stronger anti-detection.
  • Start with low concurrency (5-10 threads) and scale up based on success rate metrics.

Ready to Get Started?

Put this guide into practice with Hex Proxies.