Como usar proxy no Python Requests (HTTP/HTTPS e pool de sessões)
Atualizado:
A biblioteca requests do Python aceita proxies autenticados da VinaProxy por meio de um dicionário proxies mapeando tanto 'http' quanto 'https' para http://user:pass@ip:port. Vincular esse dicionário a um requests.Session() persistente reutiliza os sockets TCP subjacentes para um scraping rápido e de baixo consumo de recursos.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
- 1 IP₫ 40.000
- 5+ IPs₫ 35.000
- 10+ IPs₫ 25.000
- 20+ IPs₫ 25.000
- 50+ IPs₫ 25.000
- 100+ IPs₫ 25.000
- 200+ IPs₫ 25.000
- 500+ IPs₫ 25.000
- 1000+ IPs₫ 22.000
- 2000+ IPs₫ 20.000
Formatando o dicionário proxies e reutilizando Sessions
Chamar requests.get() em cada URL individual cria uma nova conexão TCP e negociação TLS a cada requisição. Vincular seu proxy a session = requests.Session() mantém o túnel do proxy ativo entre requisições consecutivas.
| Parâmetro do Requests | Sintaxe recomendada | Objetivo técnico |
|---|---|---|
Chave 'http' | 'http://user:pass@ip:port' | Encaminha requisições HTTP comuns pelo proxy |
Chave 'https' | 'http://user:pass@ip:port' | Usa o esquema http:// para que o urllib3 inicie um túnel HTTP CONNECT para TLS |
Tupla timeout | timeout=(5, 15) | Timeout de 5 s para conexão e 15 s para leitura para evitar bloqueio de threads |
| Rotação do pool | itertools.cycle(proxy_list) | Distribui as requisições uniformemente pelo pool de IPs estáticos |
Evitando armadilhas comuns com urllib3 e ProxyError
- Sempre use
http://(e nãohttps://) como esquema da URL do proxy para as chaves'http'e'https', a menos que a porta exija TLS-over-TLS explicitamente - Codifique caracteres especiais em senhas usando
urllib.parse.quote(password, safe='') - O erro
407 Proxy Authentication Requiredsignifica que o usuário ou senha fornecidos na URL não correspondem aos dados do seu painel - Funciona de forma idêntica no
httpx.Client(proxy='http://user:pass@ip:port')e noaiohttpviasession.get(url, proxy=...)
Passo a passo
- 1
Converter ip:port:user:pass para formato URL
Use nosso conversor de formatos de proxy para transformar sua lista da VinaProxy em strings
http://user:pass@ip:port. - 2
Definir o dicionário proxies
Declare
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}no seu script Python. - 3
Vincular a uma instância de requests.Session()
Inicialize
s = requests.Session()e executes.proxies.update(proxies)para ativar o reaproveitamentoKeep-Alive. - 4
Verificar o IP de saída com uma requisição de teste
Execute
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())para confirmar o IP ativo.
Perguntas frequentes
Por que a chave 'https' usa 'http://user:pass@ip:port'?
O prefixo http:// informa ao urllib3 como se conectar ao próprio servidor proxy via HTTP CONNECT, enquanto o tráfego de ponta a ponta para o site https:// de destino permanece totalmente criptografado com TLS.
Como rotacionar 25 proxies estáticos entre requisições em Python?
Carregue suas 25 URLs em pool = itertools.cycle(PROXIES) e passe proxies={'http': p, 'https': p} em cada requisição com uma taxa de limite moderada por IP.
A VinaProxy cobra por tráfego em scripts de scraping com Python?
Não. Todos os planos de IPv4 dedicado e ISP estático contam com tráfego mensal ilimitado.
Crie um pool de proxies sem limite de tráfego para Python
Proxies IPv4 dedicados e ISP estáticos imediatos em 7 países.
Comprar proxies para Python