Cómo utilizar un servidor proxy con el módulo de solicitudes de Python - Guía definitiva
Ștefan Răcila el 20 Abr 2023

Introducción
El web scraping es una potente herramienta que permite extraer información valiosa de los sitios web. Sin embargo, también puede suponer una carga para los servidores de los sitios web que estás raspando, razón por la cual muchos sitios web bloquean las direcciones IP que hacen demasiadas peticiones. Para evitarlo, puedes utilizar proxies para realizar las peticiones. En este artículo, te mostraré cómo usar Python con proxies y cómo rotar las IPs de los proxies para evitar que te bloqueen.
Puesta en marcha
Antes de empezar, necesitarás tener los siguientes requisitos previos:
✅ Python instalado
✅ Cierta experiencia con Python.
✅ Biblioteca de peticiones Python también instalada.
✅ Una lista de IPs y puertos proxy.
Para instalar Python, deberá descargar el instalador de Python del sitio web oficial de Python: https://www.python.org/downloads/
Puedes elegir la última versión de Python 3. Se recomienda utilizar la última versión de Python para disponer de las últimas funciones y actualizaciones de seguridad.
Una vez completada la descarga, ejecuta el instalador y sigue las instrucciones para instalar Python en tu ordenador. Durante el proceso de instalación, asegúrate de marcar la opción para añadir Python al PATH de tu sistema, lo que te permitirá ejecutar Python desde la línea de comandos.
Una vez finalizada la instalación, puede comprobar que Python está instalado correctamente abriendo un símbolo del sistema o un terminal y ejecutando el comando `python --version`. Esto debería mostrar la versión de Python que ha instalado.
Puede comprobar si el paquete `python-requests` está instalado abriendo el terminal y ejecutando el siguiente comando:
$ pip freeze
`pip` es un gestor de paquetes que debería venir incluido con las nuevas versiones de Python. Si por alguna razón necesitas instalar `pip` por separado, puedes seguir las instrucciones de esta guía.
`pip freeze` mostrará todos los paquetes de Python instalados y sus versiones. Comprueba si el módulo `requests` está presente en esa lista. Si no, instálalo ejecutando el siguiente comando:
$ pip install peticiones
Configuración de los proxies
En esta sección explicaré cómo configurar proxies con `python-requests`. Para empezar, necesitamos un proxy que funcione y la URL a la que queremos enviar la petición.
Uso básico
import requests
proxies = {
'http': 'http://proxy_ip:proxy_port',
'https': 'http://secure_proxy_ip:proxy_port',
}
res = requests.get('https://httpbin.org/get', proxies=proxies)
Si no dispone de ningún proxy privado que pueda utilizar para probar este código, puede encontrar un proxy público gratuito en la lista de freeproxylists.net. Tenga en cuenta que los proxies de ese sitio no son para su uso en cualquier entorno de producción y pueden no ser fiables.
El diccionario `proxies` debe tener la estructura exacta que se muestra en el ejemplo de código. Usted proporciona un proxy a utilizar para conexiones HTTP y un proxy a utilizar para conexiones HTTPS. Los proxies pueden ser diferentes o no. Puede utilizar el mismo proxy para varios protocolos.
Observe también que he utilizado el esquema HTTP en la URL del proxy para ambas conexiones. No todos los proxies tienen un certificado SSL. La conexión al proxy se hará usando HTTP en ambos casos.
Para autenticarse en un proxy puede utilizar esta sintaxis:
http://user:pass@working-proxy:port
Variables de entorno
Si no tiene previsto utilizar varios conjuntos de proxies, puede exportarlos como variables de entorno.
Así se exportan las variables de entorno en el shell de Linux
$ export HTTP_PROXY='http://proxy_ip:proxy_port'
$ export HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
Para comprobar el entorno basta con ejecutar
$ env
Así se exportan las variables de entorno en PowerShell
>_ $Env:HTTP_PROXY='http://proxy_ip:proxy_port'
>_ $Env:HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
Para comprobar el entorno basta con ejecutar
>Get-ChildItem -Path Env:
Así se exportan las variables de entorno en el símbolo del sistema
\> set HTTP_PROXY='http://proxy_ip:proxy_port'
\> set HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
Para comprobar el entorno basta con ejecutar
\> Establecer
De esta forma no necesitas definir ningún proxy en tu código. Basta con hacer la petición y funcionará.
¿Cómo leer la respuesta?
Puedes leer tus datos de muchas maneras, pero en la mayoría de los casos querrás leerlos como texto plano o como una cadena codificada en JSON.
Texto sin formato:
response = requests.get(url)
text_resp = response.text
JSON, para respuestas con formato JSON el paquete requests proporciona un método incorporado.
response = requests.get(url)
json_resp = response.json()
Sesiones Proxy
También es posible que desee extraer datos de sitios web que utilizan sesiones. En este caso, necesitas crear un objeto de sesión. Primero crea una variable llamada `session` y asígnala al método `Session()` de la petición. Ahora tienes que asignar los proxies al atributo `.proxies` de la sesión. Luego envías tu petición usando el objeto `session` ya creado. Esta vez sólo tienes que pasar la URL como argumento.
import requests
session = requests.Session()
session.proxies = {
'http': 'http://proxy_ip:proxy_port',
'https': 'http://secure_proxy_ip:proxy_port',
}
res = session.get('https://httpbin.org/get')
Asegúrese de sustituir `proxy_ip` y `proxy_port` por la IP y el puerto reales de su proxy.
Cómo rotar las IP proxy
Para evitar ser bloqueado por sitios web, es importante rotar tus IPs proxy. Una forma de hacerlo es crear una lista de IPs y puertos proxy y seleccionar proxies al azar mientras haces peticiones.
He aquí un ejemplo:
def proxy_request(url, **kwargs):
while True:
try:
proxy = random.randint(0, len(ip_addresses) - 1)
proxies = {
'http': ip_addresses(proxy),
'https': ip_addresses(proxy)
}
response = requests.get(url, proxies=proxies, timeout=5, **kwargs)
print(f"Currently using proxy: { proxy['http'] }")
break
except:
print("Error encoutered, changing the proxy...")
return response
print(proxy_request('https://httpbin.org/get'))
Contratar a un profesional
Aunque manejar tus propios proxies se puede hacer usando Python, es un proceso que consume mucho tiempo y puede llevar mucho tiempo y dinero conseguir un buen conjunto de proxies. Para ahorrar tiempo y dinero, puedes utilizar una herramienta profesional de scraping. WebScrapingAPI tiene capacidades integradas de gestión y rotación de proxies. Disponemos de un conjunto de proxies verificados y de alta calidad, que son más fiables y pueden ahorrarle tiempo y dinero a largo plazo.
También tenemos un modo proxy que puedes probar gratis. Para obtener una clave de API gratuita sólo tienes que crear una cuenta y comenzar la prueba de WebScrapingAPI. Este es un ejemplo de código sobre cómo utilizar nuestro modo proxy:
import requests
def get_params(object):
params = ''
for key,value in object.items():
if list(object).index(key) < len(object) - 1:
params += f"{key}={value}."
else:
params += f"{key}={value}"
return params
API_KEY = '<YOUR_API_KEY>'
TARGET_URL = 'http://httpbin.org/get'
PARAMETERS = {
"proxy_type":"datacenter",
"device":"desktop"
}
PROXY = {
"http": f"http://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:80",
"https": f"https://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:8000"
}
response = requests.get(
url=TARGET_URL,
proxies=PROXY,
verify=False
)
print(response.text)
Tenga en cuenta que si desea conectarse al modo proxy a través de https, su código debe estar configurado para no verificar los certificados SSL. En este caso, sería `verify=False` ya que estás trabajando con Python Requests.
Para llevar
El uso de proxies es una forma efectiva de evitar ser bloqueado mientras se hace web scraping. Al rotar las IP de los proxies y utilizar un grupo de proxies, puedes reducir las posibilidades de que te bloqueen y aumentar las probabilidades de éxito. Sin embargo, gestionar tus propios proxies puede ser una molestia y puede llevarte mucho tiempo y dinero conseguir un buen conjunto de proxies.
Al suscribirse a un servicio proxy premium, como WebScrapingAPI, obtendrá acceso a diversas funciones, como la rotación de IP y la posibilidad de alternar entre proxies de centro de datos y proxies residenciales.
Esperamos que este artículo te haya dado una mejor comprensión de cómo utilizar un proxy con HttpClient y cómo puede ayudarte con tus necesidades de scraping. Regístrate en nuestra prueba gratuita de 14 días para probar nuestro servicio y conocer todas sus características y funcionalidades.
Noticias y actualidad
Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

Explore las complejidades del scraping de datos de productos de Amazon con nuestra guía en profundidad. Desde las mejores prácticas y herramientas como Amazon Scraper API hasta las consideraciones legales, aprenda a superar los desafíos, eludir los CAPTCHA y extraer información valiosa de forma eficiente.


Sumérjase en el papel transformador de los datos financieros en la toma de decisiones empresariales. Comprender los datos financieros tradicionales y la importancia emergente de los datos alternativos.


Empiece con WebScrapingAPI, la solución definitiva para el web scraping. Recopile datos en tiempo real, evite los sistemas anti-bot y disfrute de soporte profesional.
