Ir al contenido

GProxy + Python requests — Guía completa de integración 2026

TL;DR

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.

Idioma: Python Versión: 2.31+

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

1

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
2

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).

3

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>'}
4

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())
5

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))
6

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())
7

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

Inicio rápido — 4 líneas · python
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())
Async con httpx (alternativa) · python
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)
Headers personalizados + cookies · python
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=True y cierra la conexión.
  • Solicitudes en paralelo — usa concurrent.futures.ThreadPoolExecutor para 5-50 conexiones concurrentes, o asyncio + httpx para 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=True en 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.

Consejos profesionales

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? +
El esquema es el protocolo del proxy, no el sitio de destino. Use 'http://' para proxies HTTP (funciona tanto para sitios de destino HTTP como HTTPS). Use 'socks5://' o 'socks5h://' para proxies SOCKS5.
¿Por qué usar socks5h:// en lugar de socks5://? +
socks5h envía las consultas DNS a través del proxy (anónimo). socks5 resuelve el DNS localmente y filtra su servidor DNS real. Para anonimato, use siempre socks5h.
¿Puedo usar el mismo code para proxies residential, IPv6 y datacenter? +
Sí. Lo único que cambia es la URL del proxy (diferentes hostnames/puertos). Residential e IPv6 usan rp.gproxy.net; datacenter usa dc.gproxy.net. El formato de Auth es idéntico.
¿Cómo roto los proxies residential? +
Dos opciones: (1) Enviar cada solicitud a través de una conexión nueva — GProxy rotating residential le da una nueva IP por solicitud. (2) Usar sticky sessions añadiendo un ID de sesión a su username (USER-session-XXX). Sticky le permite mantener la misma IP hasta por 30 minutos.
Estoy recibiendo 407 Proxy Authentication Required. +
Credenciales incorrectas o URL del proxy incorrecta. Verifique en su dashboard el string exacto USERNAME:PASSWORD@host:port. Tenga en cuenta que los caracteres especiales en las contraseñas deben estar URL-encoded.
Estoy recibiendo 'Cannot connect to proxy: tunnel connection failed: 502'. +
O bien su suscripción se ha agotado (verifique el saldo en el dashboard) o está intentando acceder a un destino bloqueado. Intente primero con una URL de destino diferente para aislar el problema.
¿Soporta requests HTTP/2? +
No, requests es solo HTTP/1.1. Para HTTP/2, use httpx (que funciona con el mismo formato de URL de proxy) — vea el snippet alternativo arriba.

¿Listo para empezar?

Comience con GProxy en minutos — proxies residenciales desde $0.85/GB, IPv6 desde $0.03/proxy, pago por uso.

Otras integraciones

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.