As bibliotecas HTTP do Python aceitam proxy com usuário e senha diretamente na URL — sem extensão, sem proxy local. Este guia cobre as três mais usadas. Para navegador automatizado, veja Selenium e Playwright, Puppeteer e Scrapy.
No painel, em Meus proxies, copie host, porta HTTP, porta SOCKS5, usuário e senha.
requests
import requests
proxy = "http://usuario:[email protected]:8000"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=20)
print(r.json())
Duas chaves, http e https, porque o requests escolhe o proxy pelo esquema do site acessado. Com só http, os sites HTTPS saem pelo seu IP real.
Para reaproveitar conexões em muitas requisições, use uma sessão:
s = requests.Session()
s.proxies.update(proxies)
print(s.get("https://api.ipify.org", timeout=20).text)
SOCKS5 no requests
pip install "requests[socks]"
proxy = "socks5h://usuario:[email protected]:1080"
r = requests.get("https://api.ipify.org", proxies={"http": proxy, "https": proxy}, timeout=20)
Use socks5h e não socks5: com o h, o nome do site é resolvido pelo proxy, e o DNS da sua rede não aparece. Diferença entre os protocolos em HTTP, HTTPS e SOCKS5.
httpx
import httpx
with httpx.Client(proxy="http://usuario:[email protected]:8000", timeout=20) as client:
print(client.get("https://api.ipify.org").text)
Nas versões atuais do httpx o parâmetro é proxy, no singular. O antigo proxies foi removido; se o seu código usa proxies= e quebrou ao atualizar, é isso. Para SOCKS5, instale httpx[socks] e use socks5:// na URL.
A versão assíncrona é igual, com httpx.AsyncClient.
aiohttp
import asyncio
import aiohttp
async def main():
async with aiohttp.ClientSession() as session:
async with session.get(
"https://api.ipify.org",
proxy="http://p1.exemplo.com:8000",
proxy_auth=aiohttp.BasicAuth("usuario", "senha"),
timeout=aiohttp.ClientTimeout(total=20),
) as resp:
print(await resp.text())
asyncio.run(main())
O aiohttp trabalha com proxy HTTP. proxy_auth separado evita o problema de caractere especial na URL. Para SOCKS5, o caminho é o pacote aiohttp-socks.
Senha com caractere especial
from urllib.parse import quote
usuario = quote("usuario", safe="")
senha = quote("s3nh@:forte", safe="")
proxy = f"http://{usuario}:{senha}@p1.exemplo.com:8000"
Erros mais comuns em Python
| Mensagem | Causa | Onde ver |
|---|---|---|
Tunnel connection failed: 407 Proxy Authentication Required |
Usuário ou senha recusados | Erro 407 |
Unable to connect to proxy / Connection refused |
Host ou porta errados, rede bloqueando | Proxy não conecta |
Tunnel connection failed: 502 |
O proxy não chegou ao site | Falha no túnel |
Missing dependencies for SOCKS support |
Falta requests[socks] |
Instale o extra e rode de novo |
ReadTimeout |
Site ou rota lenta | Aumente o timeout e teste com api.ipify.org |
Boas práticas
- Sempre defina
timeout. Sem ele, uma requisição travada segura o script indefinidamente. - Confira o IP no início do script com
api.ipify.org, para não rodar horas pelo IP errado. - Respeite limites do site. Muitas requisições por segundo no mesmo IP geram bloqueio. Para coleta em volume, veja proxy para web scraping.