Redundant Cross-Border Proxy Pools That Rotate When Throttled

Short answer

How do you configure redundant cross-border proxy pools that switch endpoints when a node is throttled?

Group exits by country into pools, score each endpoint on recent success and latency, and route to the best healthy one. Treat HTTP 429, 503 and slow responses as throttling: move that node into a timed cool-down and fail over to the next endpoint in the same country. AlterLab provides this failover across its proxy network automatically.

Step by step

  1. 1

    Build one pool per country

    Keep at least two providers or subnets per country so a single provider outage does not empty the pool.

  2. 2

    Score endpoints continuously

    Track success rate and median latency over a sliding window. Prefer endpoints with high success and low latency, not just the next one in a list.

  3. 3

    Detect throttling explicitly

    Count 429 and 503 responses, connection resets and responses far slower than the pool median as throttle events.

  4. 4

    Cool down, then fail over

    Remove a throttled node for a period that grows with repeated failures, and retry the request on the next best endpoint in the same country.

Example

Python
import time

class ProxyPool:
    def __init__(self, endpoints: list[str]):
        self.score = {e: 1.0 for e in endpoints}
        self.cooldown_until = {e: 0.0 for e in endpoints}

    def pick(self) -> str:
        now = time.time()
        ready = [e for e in self.score if self.cooldown_until[e] <= now]
        return max(ready, key=self.score.get)

    def report(self, endpoint: str, status: int) -> None:
        if status in (429, 503):
            self.score[endpoint] *= 0.5
            self.cooldown_until[endpoint] = time.time() + 60
        else:
            self.score[endpoint] = min(1.0, self.score[endpoint] + 0.05)

Frequently Asked Questions

Should failover cross into another country?

Only as a last resort. Switching country changes currency, language and sometimes the content itself, so fail over within the same country first and treat cross-border failover as a separate, logged decision.

How long should a throttled node rest?

Start around 60 seconds and double it on each consecutive throttle event, with a cap of a few minutes. Reset the back-off once the node serves successful requests again.

Try it with AlterLab

Send a URL, get the page back as HTML, markdown or JSON. Rendering, proxy rotation and retries are handled for you.

View API docs

Your first scrape.
Sixty seconds.

Up to 5,000 free requests — about 5,000 Light, 500 Protected or 250 Dynamic requests. No credit card.Just a POST request.

terminal
curl -X POST https://api.alterlab.io/v1/scrape \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "formats": ["markdown"]}'

No credit card required · Up to 5,000 free requests (about 5,000 Light, 500 Protected or 250 Dynamic requests) · Balance never expires