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 if the rate limit is per-IP. Per-request rotation spreads traffic across the pool. But if the target limits by session or fingerprint, you also need to clear cookies and vary your request profile.
The Retry-After header tells you exactly how many seconds to wait before the rate limit resets. Always respect it -- retrying before the window expires wastes bandwidth and may escalate to a harder block.
No. A 429 is a temporary rate limit, not a permanent block. Slow down, wait for the reset window, and your next request will succeed.
KnoxProxy has no gateway-side rate limit on your total throughput. The 429 comes from the target server. Each target has its own tolerance -- start low and scale up.
KnoxProxy comes pre-configured to avoid the most common errors. Start a free trial and fix 429 for good.