Getting 429? Here’s why it happens and the exact fix.
You are seeing 429 because the target server rate-limited your requests. The fix: reduce concurrency, add delays between requests, and enable per-request IP rotation.
Configure your proxy to assign a new IP on every request. This distributes your traffic across the entire pool.
Limit parallel connections to 10-20 per target domain. Use a semaphore or connection pool to enforce the limit.
Insert 1-3 seconds of random delay between requests to the same domain. This mimics human browsing patterns.
If the 429 response includes a Retry-After header, wait at least that many seconds before retrying.
import requests
import time
import random
from concurrent.futures import ThreadPoolExecutor
proxy = "http://USER:PASS@gw.knoxproxy.com:7000"
urls = [f"https://target.example/page/{i}" for i in range(1000)]
def fetch(url):
time.sleep(random.uniform(1, 3)) # polite delay
r = requests.get(url, proxies={"https": proxy}, headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/125.0.0.0 Safari/537.36"
})
if r.status_code == 429:
retry_after = int(r.headers.get("Retry-After", 5))
time.sleep(retry_after)
return fetch(url) # retry once
return r
# 15 concurrent workers -- polite pacing
with ThreadPoolExecutor(max_workers=15) as pool:
results = list(pool.map(fetch, urls))Test your setup with our proxy checker, then contact support if 429 still won’t clear.
A 429 Too Many Requests response means the target server detected too many requests from your IP or session within a time window. This is rate limiting, not blocking. The server is telling you to slow down. With proxies, 429 typically means your rotation is not fast enough or your concurrency is too aggressive for the target.
Enable per-request rotation. Each request gets a fresh IP, spreading your traffic across the proxy pool.
Throttle concurrency to 10-20 parallel requests per domain. Add 1-3 second random delays between requests.
Clear cookies between requests. Rotate User-Agent strings. Do not reuse session state across different IPs.
If 429 persists at very low request rates (under 1 request per second), the target may be tracking you by session fingerprint rather than IP. Contact KnoxProxy support for fingerprint-management guidance.
More IPs help when the rate limit is enforced per-IP. Per-request rotation spreads traffic across the entire pool so no single address crosses the threshold. But if the target limits by session or fingerprint instead, you also need to clear cookies, vary your User-Agent, and reduce concurrency.
The Retry-After header tells you exactly how many seconds to wait before the target's rate limit resets and normal requests can resume. Always respect it -- retrying before the window expires wastes bandwidth, adds load to an already-limited endpoint, and may escalate a soft rate limit into a harder, longer-lasting block.
No. A 429 is a temporary rate limit, not a permanent block on your account or IP. Slow down, respect any Retry-After header, wait for the reset window to pass, and your very next request through a fresh IP will typically succeed without issue.
KnoxProxy places no gateway-side rate limit on your total throughput -- you can send as many requests as your plan allows. The 429 response comes from the target server, not KnoxProxy. Each target has its own tolerance for request volume, so start low, monitor your error rate, and scale up gradually.
KnoxProxy comes pre-configured to avoid the most common errors. Get started and fix 429 for good.