Cómo usar un proxy en Python Requests (HTTP/HTTPS y Session pooling)
Actualizado:
La librería requests de Python acepta proxies autenticados de VinaProxy mediante un diccionario proxies que asigna los esquemas 'http' y 'https' a http://user:pass@ip:port. Asociar dicho diccionario a un requests.Session() persistente reutiliza los sockets TCP subyacentes para un web scraping rápido y ligero.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 ₫
- 5+ IPs35.000 ₫
- 10+ IPs25.000 ₫
- 20+ IPs25.000 ₫
- 50+ IPs25.000 ₫
- 100+ IPs25.000 ₫
- 200+ IPs25.000 ₫
- 500+ IPs25.000 ₫
- 1000+ IPs22.000 ₫
- 2000+ IPs20.000 ₫
- 1 IP40.000 ₫
- 5+ IPs35.000 ₫
- 10+ IPs25.000 ₫
- 20+ IPs25.000 ₫
- 50+ IPs25.000 ₫
- 100+ IPs25.000 ₫
- 200+ IPs25.000 ₫
- 500+ IPs25.000 ₫
- 1000+ IPs22.000 ₫
- 2000+ IPs20.000 ₫
Formato del diccionario proxies y reutilización de Sessions
Invocar requests.get() en cada URL genera una nueva conexión TCP y negociación TLS desde cero. Asignar el proxy a session = requests.Session() mantiene abierto el túnel del proxy entre peticiones consecutivas.
| Parámetro de Requests | Sintaxis recomendada | Propósito técnico |
|---|---|---|
Clave 'http' | 'http://user:pass@ip:port' | Enruta peticiones HTTP convencionales mediante el proxy |
Clave 'https' | 'http://user:pass@ip:port' | Utiliza el esquema http:// para que urllib3 abra un túnel HTTP CONNECT para TLS |
Tupla timeout | timeout=(5, 15) | 5 s de conexión y 15 s de lectura para evitar que los hilos se bloqueen |
| Rotación de pool | itertools.cycle(proxy_list) | Distribuye las peticiones homogéneamente entre sus IP estáticas |
Evitar errores habituales de urllib3 y ProxyError
- Utilice siempre
http://(nohttps://) como esquema en las claves'http'y'https', a menos que el puerto requiera explícitamente TLS-over-TLS - Codifique los caracteres especiales en contraseñas con
urllib.parse.quote(password, safe='') - El error
407 Proxy Authentication Requiredindica que el usuario o la contraseña de la URL no coinciden con sus credenciales de VinaProxy - Funciona exactamente igual con
httpx.Client(proxy='http://user:pass@ip:port')y conaiohttpensession.get(url, proxy=...)
Paso a paso
- 1
Convertir ip:port:user:pass a sintaxis URL
Utilice nuestro conversor de formatos de proxy para transformar su lista de VinaProxy en cadenas
http://user:pass@ip:port. - 2
Definir el diccionario proxies
Declare
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}en su script de Python. - 3
Asociar a una instancia de requests.Session()
Inicialice
s = requests.Session()y ejecutes.proxies.update(proxies)para habilitar el poolKeep-Alive. - 4
Verificar la IP de salida con una petición de prueba
Ejecute
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())para comprobar la IP activa.
Preguntas frecuentes
¿Por qué la clave 'https' utiliza 'http://user:pass@ip:port'?
El prefijo http:// indica a urllib3 cómo conectarse al servidor proxy mediante HTTP CONNECT, mientras que el tráfico de extremo a extremo hacia el sitio web https:// viaja totalmente cifrado por TLS.
¿Cómo roto 25 proxies estáticos entre peticiones en Python?
Cargue sus 25 URL en pool = itertools.cycle(PROXIES) y pase proxies={'http': p, 'https': p} en cada petición aplicando un límite prudente de peticiones por IP.
¿VinaProxy limita el ancho de banda en scripts de scraping con Python?
No. Todos los planes de IPv4 dedicada e ISP estático incluyen tráfico mensual ilimitado.
Cree un pool de proxies sin límite de tráfico para Python
Proxies IPv4 dedicados e ISP estáticos al instante en 7 países.
Comprar proxies para Python