Como rotacionar proxies em Python (requests e aiohttp)
A rotação é a diferença entre um scraper que tem um IP banido e um que distribui a carga entre muitos. Aqui está um rotador funcional para solicitações síncronas e assíncronas aiohttp, com verificações de saúde e aposentadoria automática de saídas inativas.
O que a rotação realmente resolve
Sites limitam e banem por IP. Se cada solicitação vem de um único endereço, você atinge o limite rapidamente e um único banimento para todo o trabalho. Rotação distribui as solicitações por um pool de saídas, de modo que a carga por IP permaneça abaixo do limite e uma saída morta ou bloqueada custa apenas uma nova tentativa, não a execução. Dois designs cobrem quase tudo: round-robin (ciclo pelo pool em ordem, previsível e uniforme) e random (escolher por solicitação, simples e sem estado).
The pool itself can come from two places. You can list several s4m endpoints and ports and rotate across them, or, for quick low-stakes tests, pull live entries from the free public proxy list — filtered by country, protocol and anonymity, though those third-party proxies are use-at-your-own-risk and die often. Production rotation should lean on authenticated datacenter proxies from s4m (SOCKS5 on 1080, HTTP on 3128, USER:PASS), which stay up and are metered so scaling the pool is cheap. This builds directly on scraping with requests.
Um rotador para requisições e aiohttp
Um pool que faz round-robin, tenta novamente em caso de falha e desativa saídas que continuam falhando. Versões síncronas e assíncronas. Substitua USER:PASS.
import asyncio, itertools, random
import requests, aiohttp
from aiohttp_socks import ProxyConnector # pip install aiohttp-socks
USER, PASS, HOST = "USER", "PASS", "proxy.s4m.online"
POOL = [
f"socks5h://{USER}:{PASS}@{HOST}:1080",
f"http://{USER}:{PASS}@{HOST}:3128",
# add more endpoints/ports here to widen the pool
]
# ---------- Synchronous: requests + round-robin + retirement ----------
class Rotator:
def __init__(self, pool):
self.alive = list(pool)
self.fails = {p: 0 for p in pool}
self._cycle = itertools.cycle(self.alive)
def pick(self):
return next(self._cycle)
def retire(self, proxy):
self.fails[proxy] += 1
if self.fails[proxy] >= 3 and proxy in self.alive:
self.alive.remove(proxy)
self._cycle = itertools.cycle(self.alive or POOL)
def get(url, rot, retries=4):
for _ in range(retries):
proxy = rot.pick()
try:
r = requests.get(url, proxies={"http": proxy, "https": proxy},
timeout=(5, 20))
r.raise_for_status()
return r
except requests.RequestException:
rot.retire(proxy)
raise SystemExit("pool exhausted")
rot = Rotator(POOL)
print(get("https://api.ipify.org", rot).text)
# ---------- Async: aiohttp, one connector per proxy ----------
async def fetch(url, proxy):
connector = ProxyConnector.from_url(proxy)
async with aiohttp.ClientSession(connector=connector) as s:
async with s.get(url, timeout=aiohttp.ClientTimeout(total=25)) as r:
return await r.text()
async def main():
tasks = [fetch("https://api.ipify.org", random.choice(POOL))
for _ in range(5)]
for ip in await asyncio.gather(*tasks, return_exceptions=True):
print(ip)
asyncio.run(main())Escolhas de design que importam
Os controles que decidem se a rotação ajuda ou apenas adiciona churn.
Round-robin vs aleatório
Round-robin distribui a carga de forma uniforme e é fácil de entender; aleatório é sem estado e simples. Ambos superam uma saída fixa única — escolha round-robin quando a distribuição uniforme importa.
Remover saídas inativas
Conte falhas consecutivas por proxy e descarte uma saída após algumas tentativas, para que o pool se auto-repare em vez de tentar um corpo para sempre.
Verificação de saúde antes do uso
Periodicamente acesse um endpoint de eco de IP através de cada proxy e mantenha apenas os que respondem. Essencial quando o pool inclui entradas de lista livre voláteis.
Afaste-se, não corra
A rotação não é uma licença para inundar. Adicione atrasos por host e retrocesso exponencial para que você permaneça dentro dos limites em vez de lutar contra eles em muitos IPs.
Sessões fixas e limites honestos
A rotação nem sempre é o que você deseja. Alguns fluxos — um login, um carrinho, um formulário de múltiplas etapas — precisam do mesmo IP durante toda a sessão, ou o site vê um usuário se teletransportando entre endereços e bloqueia. Isso é uma sessão fixa: rotacione entre trabalhos, mantenha-se fixo dentro de um. Quando um fluxo de trabalho precisa de um endereço garantido e estável, adicione um IP pessoal dedicado em vez de rotacionar.
Seja honesto sobre o teto. Proxies s4m são datacenter, então rotacioná-los ajuda com limites de taxa e até mesmo carga, mas não disfarçará IPs de datacenter de um sistema anti-bot que bloqueia toda a faixa. A rotação também não faz nada sobre impressões digitais de navegador ou padrões de solicitação. Use isso como uma camada: combine com cabeçalhos realistas, diminuição de velocidade e respeito pelas regras de cada site. Para as partes assíncronas, você precisará de aiohttp-socks para suporte a SOCKS5; valide saídas com as ferramentas e automatize o manuseio de credenciais através da API.
Perguntas, respondidas
Como faço para rotacionar proxies com solicitações?
Mantenha uma lista de URLs de proxy e escolha uma por solicitação — round-robin ou aleatório — passando-a como argumento de proxies. Aposente uma saída após algumas falhas consecutivas para que o pool se auto-repare. O exemplo acima mostra um rotator completo.
Como faço para rotacionar proxies com aiohttp?
aiohttp define o proxy por solicitação para HTTP, mas para SOCKS5 você constrói um ProxyConnector (do aiohttp-socks) por proxy e cria uma sessão com ele. Distribua tarefas pelo pool com asyncio.gather.
Quando eu NÃO devo rotacionar proxies?
Quando um fluxo de trabalho precisa de uma identidade consistente — logins, carrinhos, formulários de múltiplas etapas. Mudar de IP no meio da sessão parece suspeito e é bloqueado. Use uma sessão fixa ou um IP dedicado para esses fluxos.
Os proxies de datacenter rotativos evitarão todos os bloqueios?
Não. A rotação distribui a carga e evita limites de taxa por IP, mas faixas de datacenter ainda podem ser sinalizadas em massa por sistemas anti-bot agressivos, e a rotação não altera sua impressão digital ou comportamento do navegador.
Rotacione entre saídas reais
Amplie seu pool com proxies SOCKS5 e HTTP de datacenter autenticados em proxy.s4m.online, medidos para que a escalabilidade seja barata. Adicione um IP dedicado para as etapas de sessão fixa.
As pessoas encontraram esta página pesquisando por
- como rotacionar proxies em Python (requests e aiohttp)
- melhor proxy para scraping 2026
- proxy para scraping preço
- proxy para scraping
- o que é proxy http
- o que são proxies ISP (residenciais estáticos)
- kill switch de VPN no Windows
- socks5 proxy explicado
- é lista de proxies gratuitos seguro
- HTTP 407 autenticação de proxy necessária
- lista de proxies gratuitos sem registro
- autenticação de proxy
Frases de busca reais que esta página responde — os links abrem a página que as cobre em profundidade.