Volver al blog

Cómo Rotar Proxies en Python

Michael Lee
Michael Lee

Expert Network Defense Engineer

23-Sep-2025

Introducción
Rotar proxies en Python asegura un scraping web y automatización estables y fiables. Usar una sola IP puede llevar a bloqueos y límites de tasa. Esta guía cubre 10 métodos prácticos para rotar proxies de manera efectiva. Para una solución más rápida y simple, considera usar Scrapeless, que maneja la rotación de proxies automáticamente.


1. Usando una Lista de Proxies Manualmente

Conclusión: Cambiar proxies manualmente desde una lista ayuda a evitar la detección.

Pasos:

  1. Prepara una lista de proxies (proxies = ["http://ip:puerto", ...]).
  2. Usa random.choice(proxies) para seleccionar un proxy para cada solicitud.
  3. Pasa el proxy a requests o httpx:
python Copy
import requests, random

proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
print(response.text)

Aplicación: Scraping a pequeña escala o probar múltiples endpoints sin bloqueos.


2. Usando Rotación de Proxies con Requests Session

Conclusión: Un objeto de sesión permite un uso consistente de proxies a través de múltiples solicitudes.

Pasos:

  1. Crea un requests.Session().
  2. Asigna un proxy de tu lista para cada sesión.
python Copy
import requests, random

session = requests.Session()
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
session.proxies.update({"http": random.choice(proxies), "https": random.choice(proxies)})
response = session.get("https://example.com")
print(response.status_code)

Aplicación: Al scrapear páginas que requieren sesiones persistentes.


3. Usando Bibliotecas de Proxies de Terceros

Conclusión: Bibliotecas como requests-ip-rotator simplifican la rotación de proxies.

Pasos:

python Copy
# Ejemplo con requests-ip-rotator
from requests_ip_rotator import ApiGatewaySession
session = ApiGatewaySession("https://example.com")
response = session.get("https://example.com")
print(response.text)

Aplicación: Mejor para APIs o solicitudes frecuentes que requieren rotación de IP.


4. Rotando Proxies Usando Tor

Conclusión: Tor proporciona rotación de proxies gratuita a través de circuitos.

Pasos:

  1. Instala Tor (sudo apt install tor) y la biblioteca de Python stem.
  2. Conéctate a través del proxy SOCKS de Tor (127.0.0.1:9050).
  3. Cambia la IP con comandos de Tor.
python Copy
import requests

proxies = {"http": "socks5h://127.0.0.1:9050", "https": "socks5h://127.0.0.1:9050"}
response = requests.get("https://example.com", proxies=proxies)
print(response.text)

Aplicación: Scraping de datos anónimos sin pagar por proxies.


5. Usando Proveedores de Proxies Rotativos

Conclusión: Los proveedores de pago aseguran alta fiabilidad y velocidad.

Pasos:

  1. Suscríbete a un servicio como Luminati, ScraperAPI o Scrapeless.
  2. Usa sus endpoints con autenticación.
  3. Rote automáticamente proxies para cada solicitud.
python Copy
import requests

api_key = "TU_API_KEY"
url = f"http://proxyprovider.com?api_key={api_key}&url=https://example.com"
response = requests.get(url)
print(response.text)

Aplicación: Proyectos de scraping a gran escala con un tiempo de inactividad mínimo.


6. Rotación de Proxies en Selenium

Conclusión: La automatización web requiere rotación de proxies para prevenir bloqueos de IP.

Pasos:

python Copy
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import random

proxies = ["111.111.111.111:8080", "222.222.222.222:8080"]
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={random.choice(proxies)}')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")

Aplicación: Navegación automatizada y pruebas con múltiples IPs.


7. Rotando Proxies en Scrapy

Conclusión: Scrapy admite middleware para la rotación de proxies.

Pasos:

  1. Habilita HttpProxyMiddleware.
  2. Define una lista de proxies en settings.py.
  3. Usa el middleware para rotar por solicitud.
python Copy
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
}
PROXY_LIST = ['http://111.111.111.111:8080', 'http://222.222.222.222:8080']

Aplicación: Scraping a gran escala con spiders de Scrapy.


8. Usando Rotación de Proxies Asíncrona con httpx

Conclusión: Las bibliotecas asíncronas permiten solicitudes concurrentes con múltiples proxies.

python Copy
import httpx, asyncio, random

proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]

async def fetch(url):
    proxy = random.choice(proxies)
    async with httpx.AsyncClient(proxies={"http": proxy, "https": proxy}) as client:
        response = await client.get(url)
        print(response.status_code)

asyncio.run(fetch("https://example.com"))

Aplicación: Scraping a alta velocidad para múltiples URLs.


9. Rotación Automática de Proxies con Scrapeless

Conclusión: Scrapeless maneja la rotación de proxies automáticamente, simplificando el desarrollo.

Beneficios:

  • No gestión manual de listas de proxies.
  • Integrado con scripts de scraping en Python
  • Soporta alta concurrencia y fiabilidad

Aplicación: Ideal tanto para principiantes como para profesionales que buscan eficiencia.


10. Proxies Rotativos con Variables de Entorno

Conclusión: Cambiar dinámicamente la configuración del proxy utilizando variables de entorno.

Pasos:

  1. Almacena proxies en un archivo .env.
  2. Carga y selecciona aleatoriamente proxies en los scripts.
python Copy
import os, random
from dotenv import load_dotenv
import requests

load_dotenv()
proxies = os.getenv("PROXIES").split(",")
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})

Aplicación: Útil para tuberías de scraping configurables.


Resumen de Comparación

Método Facilidad de Uso Costo Escalabilidad Mejor Caso de Uso
Lista Manual Fácil Gratis Bajo Proyectos pequeños
Sesión de Requests Fácil Gratis Medio Sesiones persistentes
Bibliotecas de Proxy Medio Gratis/Pago Medio Llamadas a API
Tor Medio Gratis Bajo Scraping anónimo
Proveedores Pagados Fácil Pagado Alto Scraping a gran escala
Selenium Medio Gratis/Pago Medio Tareas de automatización
Scrapy Medio Gratis Alto Grandes proyectos de spider
Async httpx Difícil Gratis Alto Alta concurrencia
Scrapeless Muy Fácil Pagado Alto Solución todo en uno
Variables de Entorno Medio Gratis Medio Tubos configurables

Claves a Destacar

  • Rotar proxies es esencial para prevenir bloqueos y mantener la estabilidad del scraping.
  • Python soporta muchos métodos, desde listas manuales hasta soluciones asíncronas y de pago.
  • Scrapeless ofrece el método de rotación más fácil y fiable.

Preguntas Frecuentes

P1: ¿Por qué debería rotar proxies en Python?
Para evitar bloqueos de IP, límites de tasa y asegurar un scraping fiable.

P2: ¿Puedo usar proxies gratuitos para rotación?
Sí, pero la fiabilidad y la velocidad pueden ser bajas. Se recomiendan servicios pagos para proyectos grandes.

P3: ¿Scrapeless requiere codificación?
Se requiere codificación mínima; se integra sin problemas con scripts de Python.

P4: ¿Puedo rotar proxies en Selenium?
Sí, configurando las opciones del navegador con diferentes servidores proxy.

P5: ¿Con qué frecuencia debería rotar proxies?
Depende del volumen de solicitudes y las políticas del sitio web objetivo.


Solución Recomendada

Para una experiencia sin complicaciones, prueba Scrapeless para manejar automáticamente la rotación de proxies y concentrarte en la recolección de datos en lugar de la gestión manual.


Referencias

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar