Uso de un proxy con Python Requests

Comentarios: 0

En pocas palabras, los proxies son servidores que sirven de capa externa de conexión a los servicios de red. Sirven de intermediarios entre un ordenador y el sitio del que un usuario quiere extraer información. La solicitud del usuario, en lugar de enviarse directamente al sitio en cuestión, se dirige primero al proxy, que a su vez la envía al servidor final. Por lo tanto, la dirección IP del servidor proxy es la que guarda el sitio en lugar de la del usuario.

Entonces, ¿por qué utilizar un proxy?

  • Anonimato:

Por ejemplo, si es necesario recopilar información de un sitio sin temor a restricciones o bloqueos. Un proxy ayuda a enmascarar la dirección IP del usuario real cambiando su verdadera identidad digital.

  • Eludir las restricciones:

Se puede utilizar un proxy de un país concreto en el que no haya restricciones. Esto se debe a que, en determinados países, el acceso a algunos programas y sitios web está limitado o bloqueado.

  • Equilibrio de la carga:

Si se envía un gran número de solicitudes a un sitio concreto, lo más probable es que se cargue el sistema. En consecuencia, existe un gran riesgo de que se bloquee. Utilizar varios proxies al mismo tiempo permite a los usuarios distribuir uniformemente las peticiones al sitio concreto, evitando así el bloqueo.

Configuración e instalación de Python Requests

Requests es la librería para enviar peticiones HTTP usando Python. Facilita el envío de peticiones GET y POST. Usando Python Requests sin proxy se pueden enviar peticiones HTTP, pero no proporciona anonimato ni evita restricciones.

1. Instalación del Requests Biblioteca

Para instalar requests, simplemente introduzca el siguiente comando en el terminal:


pip install requests

2. Verificación de la instalación

Para verificar que la biblioteca requerida está correctamente configurada, es necesario abrir el entorno de desarrollo de Python y ejecutar el comando:


import requests 

print(requests.__version__)

Si todo se ha hecho correctamente, el script devolverá el número de versión.

Cómo utilizar proxy con Python Requests

Una vez instalada la librería requests, podemos empezar a ejecutar peticiones HTTP. Sin embargo, para incorporar un proxy, es necesario realizar ciertas configuraciones en Python.

Examinemos los pasos a seguir para configurar correctamente un proxy para peticiones en Python. Consideraremos las Python Requests con configuraciones de proxies SOCKS por separado.

1. Configuración del servidor proxy

Usar Python para configurar un proxy es muy fácil para los usuarios que utilicen la librería requests. Requiere que la dirección del servidor proxy se pase en un diccionario y luego se utilice al hacer peticiones HTTP.


proxies = {
    "http": "http://your-proxy-ip:port",
    "https": "http://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

2. Autenticación proxy

Cuando se utiliza Python Requests, la autenticación proxy es fácil de configurar. Echemos un vistazo más de cerca a los detalles.


proxies = { 
    "http": "http://username:password@your-proxy-ip:port", 
    "https": "http://username:password@your-proxy-ip:port", 
} 

response = requests.get("http://example.com", proxies=proxies)

Los dos nuevos campos que hay que rellenar son:

  • username – nombre de usuario proxy;
  • password – contraseña de proxy.

3. Uso de proxies SOCKS

Para los usuarios que requieren un mayor nivel de anonimato, o si trabajas con sitios muy restringidos, los proxies HTTP estándar pueden no funcionar. En este caso, los proxies SOCKS pueden ser mejores.

Para habilitar la compatibilidad con el proxy SOCKS, es necesario instalar una biblioteca adicional mediante el comando que se indica a continuación:


pip install requests[socks]

Una vez instalado, Python Requests permite configurar un proxy SOCKS que puede utilizarse como se muestra en el siguiente ejemplo.


import requests

proxies = {
    "http": "socks5h://your-proxy-ip:port",
    "https": "socks5h://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

Si el servidor proxy necesita autenticación, inclúyala como se muestra a continuación.


proxies = {
    "http": "socks5h://username:password@your-proxy-ip:port",
    "https": "socks5h://username:password@your-proxy-ip:port",
}

Gestión de sesiones con proxies en Python Requests

When making many requests through a single proxy, instead of adding it to each request, it becomes much more efficient to use Python Requests sessions with proxy.

Este método de utilizar proxies ayuda a conservar la configuración en todas las sesiones. También simplifica el código, mejora el rendimiento y, lo que es más importante, facilita enormemente la implementación.

1. Uso de Sesiones de Python Requests con Proxies

Es muy fácil crear una sesión, basta con escribir requests.Session().

Considere el siguiente ejemplo:


import requests

# Crear una sesión
session = requests.Session()

session.proxies = {
    "http": "http://username:password@your-proxy-ip:port",
    "https": "http://username:password@your-proxy-ip:port",
}

# Solicitud a través de la sesión
response = session.get("http://example.com")

Todas las Python Requests dentro de esta sesión utilizarán el proxy establecido por defecto sin ninguna configuración adicional.

2. Manejo de múltiples proxies en Python Requests

Cuando estás interactuando activamente con un sitio web, ya sea con fines de scraping o de automatización, utilizar el mismo proxy una y otra vez puede bloquear tu cuenta. Esto se puede controlar rotando los proxies si tienes varios servidores proxy diferentes.

El siguiente ejemplo muestra la implementación de un bucle que rota los proxies para cada interacción con la página web:


import requests
import random

proxies_list = [
    "http://username:password@your-proxy-ip[1]:port",
    "http://username:password@your-proxy-ip[2]:port",
    "http://username:password@your-proxy-ip[3]:port",
]

session = requests.Session()

for _ in range(5):
    proxy = random.choice(proxies_list)  # Elegir un proxy al azar
    session.proxies = {"http": proxy, "https": proxy}

    response = session.get("http://example.com")
    print(f"Used proxy: {proxy}")
    print(response.status_code)

Conclusión

En resumen, he aquí algunas sugerencias que pueden ayudarle a gestionar mejor los proxies:

  • Utilice sesiones para no tener que configurar un proxy con cada solicitud.
  • Utilice proxies anónimos sin registros para una mejor protección.
  • Para evitar que te bloqueen, utiliza varios proxies.

En este artículo, hemos tocado qué son los servidores proxy, cómo usar proxy en Python Requests correctamente, y gestionar proxies a través de sesiones para simplificar el código. El ejemplo también muestra el uso de proxies SOCKS y normales, cómo se maneja la autenticación y la gestión de proxies.

Comentarios:

0 Comentarios