Integrações · Iniciante

Como usar proxies em Python com requests, httpx e aiohttp

Três linhas de configuração por biblioteca e, em seguida, a mesma sintaxe de nome de usuário em todos os lugares: país, cidade e sessão residem na URL do proxy, de modo que um gateway atenda a cada trabalho.

3 minutos de leitura 6 seções Revisto Equipa editorial Proxy Cyber

O URL do proxy#

Cada biblioteca HTTP Python usa um proxy como URL. Com o Proxy Cyber, o URL carrega suas credenciais e o parâmetros de segmentação no nome de usuário; o nome do host é o gateway e a porta escolhe o protocolo.

URLs proxy
# Rotating: a new United States household on every new connection
http://USER-cc-us:PASS@res.proxy-cyber.com:9000

# Sticky: one Berlin household held for 30 minutes under the id "job42"
http://USER-cc-de-city-berlin-sid-job42-ttl-30m:PASS@res.proxy-cyber.com:9000

# SOCKS5 with remote DNS (socks5h), same parameters
socks5h://USER-cc-us:PASS@res.proxy-cyber.com:9001

solicitações#

Reutilizar ligações e atribuir IPs são mecanismos diferentes. A sessão do cliente mantém sockets; o gateway atribuído determina a rotação e as sessões persistentes. Utilize os parâmetros fornecidos com o serviço e verifique a saída com vários pedidos. Fechar um socket ou enviar Connection: close não garante outro IP.

solicitações
import requests

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
proxies = {"http": PROXY, "https": PROXY}

# One request, one exit
r = requests.get("https://api.ipify.org", proxies=proxies, timeout=30)
print(r.text)

# A sticky flow: same exit for every request of this session
sticky = "http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000"
s = requests.Session()
s.proxies = {"http": sticky, "https": sticky}
s.get("https://example.com/product/1", timeout=30)
s.post("https://example.com/cart", json={"id": 1}, timeout=30)

httpx#

httpx leva um único proxy= argumento (versões mais antigas: proxies=). Ele suporta HTTP/2 para o destino através do túnel CONNECT e funciona da mesma maneira em código assíncrono.

httpx
import httpx

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

with httpx.Client(proxy=PROXY, timeout=30) as client:
    print(client.get("https://api.ipify.org").text)

# async, one sticky exit per task
import asyncio

async def fetch(sid: str, url: str) -> str:
    proxy = f"http://USER-cc-us-sid-{sid}-ttl-10m:PASS@res.proxy-cyber.com:9000"
    async with httpx.AsyncClient(proxy=proxy, timeout=30) as client:
        return (await client.get(url)).text

asyncio.run(fetch("task1", "https://api.ipify.org"))

aiohttp#

aiohttp pega o proxy por solicitação ou por sessão e fala proxies HTTP nativamente; SOCKS5 precisa do aiohttp-socks conector.

aiohttp
import aiohttp, asyncio

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.ipify.org", proxy=PROXY, timeout=aiohttp.ClientTimeout(total=30)) as r:
            print(await r.text())

asyncio.run(main())

Rotação, keep-alive e novas tentativas#

  • Uma nova ligação TCP é uma ligação de transporte, não uma prova de mudança de saída. O percurso depende do modo de rotação configurado no gateway.
  • Atribua um identificador de sessão diferente a cada fluxo independente quando o gateway o permitir. Confirme a duração e os parâmetros geográficos nos dados de ligação. Um dispositivo residencial pode desligar-se antes do prazo pedido; uma sessão persistente não garante o mesmo IP durante dias. Para um endereço fixo, compare produtos estáticos dedicados.
  • Identifique a causa antes de repetir. Um 403 pode resultar de uma regra de acesso que não se resolve mudando de IP. Perante um 429, respeite Retry-After e reduza a frequência; use pausas progressivas e limites para falhas temporárias de rede ou servidor. Evite duplicar operações que alteram dados.
  • Defina tempos limite para o tipo de saída: 15 s de conexão e 45 s de leitura para residencial, mais para celular.

Economizando gigabytes#

O tráfego residencial é cobrado por GB em ambos os sentidos. Peça respostas compactadas (Accept-Encoding: gzip, br está ativado por padrão nessas bibliotecas), prefira terminais JSON a HTML e nunca baixe imagens, fontes ou mídia, a menos que sejam os dados. Uma página de 350 KB é barata; uma página de 4 MB com ativos não é.

Perguntas que as pessoas fazem#

Por que continuo recebendo o mesmo IP nas solicitações?

Um IP repetido pode resultar do conjunto de ligações, de uma sessão persistente ou das saídas disponíveis. Confirme o modo atribuído e teste vários pedidos com registo da hora. requests.Session gere ligações e cookies; não escolhe o IP de saída.

Preciso de um proxy diferente para sites HTTPS?

Não. O mesmo URL do proxy http:// lida com destinos HTTPS por meio de um túnel CONNECT; O TLS é executado de ponta a ponta entre o seu código e o site.

Posso usar o mesmo código para proxies móveis?

Sim: substitua res.proxy-cyber.com por mob.proxy-cyber.com. Portas, credenciais e parâmetros são idênticos.

Sua conta

Gerencie seus proxies em uma conta

Compare redes, faça pedidos e acompanhe seu saldo e solicitações de suporte em um painel. Nossa equipe analisa os pagamentos e fornece detalhes de conexão após a entrega.

Criar conta