GProxy + Python requests — Guía completa de integración 2026
Usa GProxy residential, datacenter o IPv6 proxies con la librería Python requests en 4 líneas de código. Esta guía cubre HTTP/SOCKS5 authentication, session reuse, rotation, error handling, y common pitfalls — con ejemplos para copiar y pegar.
Requisitos previos
- ✓Python 3.7 o posterior
- ✓Librería requests instalada (pip install requests)
- ✓Para SOCKS5: requests[socks] (pip install requests[socks])
- ✓Cuenta de GProxy con credenciales activas (residential, datacenter o IPv6)
Configuración paso a paso
Instalar dependencias
Instala la librería requests. Si planeas usar proxies SOCKS5, instala el extra socks.
pip install requests
pip install requests[socks] # for SOCKS5 support
Obtén tus credenciales de GProxy
Inicia sesión en tu dashboard de GProxy y copia tu host de proxy, puerto, usuario y contraseña de la página del producto correspondiente (Residential / Premium Datacenter / IPv6).
Usar proxy HTTP con autenticación
La forma más sencilla. Pasa un dict de proxies a requests. GProxy utiliza Basic Auth en la URL.
import requests
proxies = {
'http': 'http://USERNAME:PASSWORD@dc.gproxy.net:8080',
'https': 'http://USERNAME:PASSWORD@dc.gproxy.net:8080',
}
r = requests.get('https://api.ipify.org?format=json', proxies=proxies, timeout=15)
print(r.json())
# {'ip': '<your-proxy-egress-ip>'}
Usar proxy SOCKS5
Para SOCKS5, añade el prefijo socks5h:// a la URL (la h significa que la resolución DNS ocurre en el lado del proxy, lo cual es importante para el anonimato).
import requests
proxies = {
'http': 'socks5h://USERNAME:PASSWORD@proxy.gproxy.net:1080',
'https': 'socks5h://USERNAME:PASSWORD@proxy.gproxy.net:1080',
}
r = requests.get('https://api.ipify.org?format=json', proxies=proxies, timeout=15)
print(r.json())
Reutilizar una sesión para múltiples peticiones
Para múltiples peticiones a través del mismo proxy (y para mantener conexiones keep-alive), usa una Session. Esto es drásticamente más rápido que crear una nueva petición cada vez.
import requests
session = requests.Session()
session.proxies = {
'http': 'http://USERNAME:PASSWORD@dc.gproxy.net:8080',
'https': 'http://USERNAME:PASSWORD@dc.gproxy.net:8080',
}
for url in ['https://example.com/page1', 'https://example.com/page2']:
r = session.get(url, timeout=15)
print(r.status_code, len(r.content))
Rotar proxies por petición
Para rotar proxies residenciales o IPv6, cada nueva conexión obtiene una IP fresca del pool. Usa una lista y elige al azar o mediante round-robin.
import random
import requests
PROXIES = [
'http://USERNAME:PASSWORD@rp.gproxy.net:8001',
'http://USERNAME:PASSWORD@rp.gproxy.net:8002',
'http://USERNAME:PASSWORD@rp.gproxy.net:8003',
]
def fetch(url):
proxy_url = random.choice(PROXIES)
return requests.get(url, proxies={'http': proxy_url, 'https': proxy_url}, timeout=15)
for _ in range(5):
r = fetch('https://api.ipify.org?format=json')
print(r.json())
Gestionar errores y reintentos
Los errores de red y los timeouts de proxy ocurren. Envuelve las llamadas en try/except y reintenta con un proxy diferente. urllib3.Retry gestiona los reintentos a nivel HTTP automáticamente.
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=['GET', 'POST'],
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session = requests.Session()
session.mount('http://', adapter)
session.mount('https://', adapter)
session.proxies = {'http': 'http://USERNAME:PASSWORD@dc.gproxy.net:8080',
'https': 'http://USERNAME:PASSWORD@dc.gproxy.net:8080'}
try:
r = session.get('https://example.com', timeout=15)
r.raise_for_status()
except requests.exceptions.ProxyError:
print('Proxy failed — rotate to next')
except requests.exceptions.Timeout:
print('Timeout — increase timeout or change proxy')
except requests.exceptions.RequestException as e:
print(f'Other error: {e}')
Ejemplos de código
import requests
proxies = {'http': 'http://USER:PASS@dc.gproxy.net:8080',
'https': 'http://USER:PASS@dc.gproxy.net:8080'}
print(requests.get('https://api.ipify.org?format=json', proxies=proxies).json())
import httpx
import asyncio
async def fetch_all(urls):
async with httpx.AsyncClient(proxy='http://USER:PASS@dc.gproxy.net:8080') as client:
return await asyncio.gather(*[client.get(u) for u in urls])
results = asyncio.run(fetch_all(['https://example.com/p1', 'https://example.com/p2']))
for r in results:
print(r.status_code)
import requests
session = requests.Session()
session.proxies = {'http': 'http://USER:PASS@dc.gproxy.net:8080',
'https': 'http://USER:PASS@dc.gproxy.net:8080'}
session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept-Language': 'en-US,en;q=0.9',
})
resp = session.get('https://example.com/login')
# Cookies persist across requests automatically
resp = session.post('https://example.com/login', data={'user': 'me', 'pass': 'x'})
¿Por qué combinar Python requests con GProxy?
Python requests es la librería HTTP de Python más instalada — más de 30 mil millones de descargas totales. Añadir proxies de GProxy toma 2 líneas de código y desbloquea cada flujo de trabajo de scraping, monitoreo y automatización que requiera rotación de IP, geo-targeting o bypass de anti-bot. Esta guía es de extremo a extremo: configuración, código, casos de borde y resolución de problemas.
HTTP vs SOCKS5 — ¿cuál usar?
Para el 95% de los casos de uso, HTTP es suficiente y más rápido. SOCKS5 gana cuando necesitas: (a) tráfico UDP (gaming, protocolos personalizados), (b) protocolos que no sean HTTP en su totalidad, o (c) quieres que el DNS sea gestionado por el proxy (usa socks5h:// para eso). GProxy soporta ambos en cada producto — elige según el caso de uso.
Sesiones persistentes (Sticky sessions) explicadas
Por defecto, el residencial rotativo de GProxy rota la IP por solicitud. Algunos flujos de trabajo necesitan mantener la misma IP durante unos minutos (flujos de login, formularios de varios pasos). Para hacer eso, añade un token de sesión a tu nombre de usuario:
USERNAME = 'your_user-session-abc123' # cualquier cadena después de -session- bloquea la IP por ~30 min
Mismo ID de sesión = misma IP. Cambiar el ID = obtener una nueva IP.
Consejos de rendimiento
- Usa
requests.Session. Reutiliza conexiones TCP y es de 5 a 10 veces más rápido para múltiples solicitudes al mismo host. - Establece un timeout razonable. Por defecto no hay timeout — tu script se colgará para siempre si el proxy está lento. Recomendamos 15-30 segundos para residencial.
- No cargues el cuerpo de la respuesta si solo necesitas el código de estado. Usa
stream=Truey cierra la conexión. - Solicitudes en paralelo — usa
concurrent.futures.ThreadPoolExecutorpara 5-50 conexiones concurrentes, oasyncio + httpxpara 100+.
Errores comunes
- Errores de SSL en HTTPS a través de un proxy HTTP. Añade
verify=True(por defecto) — nunca lo establezcas en False en producción. Si obtienes un error de certificado específicamente sobre el proxy, asegúrate de estar usando el hostname correcto. - La contraseña contiene caracteres especiales. Codifica la contraseña en formato URL antes de ponerla en el diccionario de proxies:
urllib.parse.quote(password, safe=''). - requests no sigue las variables de entorno del proxy cuando se pasa proxies={}. Si quieres una configuración impulsada por el entorno, usa
trust_env=Trueen la sesión.
Casos de uso
Web scraping at scale
Combine requests + GProxy residential rotation para realizar scraping de sitios de e-commerce sin bloqueos de IP.
Distribución de solicitudes API
Use un pool de GProxy IPv6 proxies para distribuir las llamadas API y evitar límites de tasa por IP.
Monitoreo de SERP
Rotar a través de residential proxies en diferentes ciudades para rastrear rankings locales de Google.
Inteligencia de precios
Datacenter proxies para crawling de alto volumen en páginas de precios no protegidas.
Capa HTTP para sneaker bot
Use ISP static virgin proxies (GProxy $6.50/IP virgin tier) para los primeros intentos en lanzamientos de sneakers.
Verificaciones de salud en redes sociales
Una sola sesión sticky residential para verificar la entrega de anuncios en cuentas con geo-targeting.
Use Session, no requests.get() en un bucle. Una sola session mantiene las conexiones activas — ahorra 100-500ms por request.
Mezcle sticky y rotating sessions. Use sticky para flujos de varios pasos (login → acción → logout), rotating para extracciones sin estado.
Registre la IP de salida en caso de errores. Añada print(requests.get('https://api.ipify.org', proxies=proxies).text) al inicio de cada scrape para confirmar que la rotación está funcionando.
FAQ
¿Debo usar http:// o https:// en el dict de proxies? +
¿Por qué usar socks5h:// en lugar de socks5://? +
¿Puedo usar el mismo code para proxies residential, IPv6 y datacenter? +
¿Cómo roto los proxies residential? +
Estoy recibiendo 407 Proxy Authentication Required. +
Estoy recibiendo 'Cannot connect to proxy: tunnel connection failed: 502'. +
¿Soporta requests HTTP/2? +
¿Listo para empezar?
Comience con GProxy en minutos — proxies residenciales desde $0.85/GB, IPv6 desde $0.03/proxy, pago por uso.
