Ir al contenido

La guía completa para usar proxies con solicitudes de Python

Si está escribiendo raspadores o rastreadores de Python, la configuración del soporte de proxy debería ocupar un lugar destacado en su lista. Los servidores proxy le permiten enrutar sus solicitudes a través de servidores intermediarios, ocultando su ubicación real. Esto abre muchas posibilidades, como rastrear sitios a escala sin ser bloqueado o acceder a contenido restringido a ciertas regiones.

En esta guía completa, cubriré todo lo que necesita saber para usar proxies con el módulo de solicitudes de Python. Explicaré por qué los servidores proxy son útiles, cómo funcionan, dónde conseguirlos, las mejores prácticas de autenticación y seguridad, y cómo implementar la rotación de servidores proxy. ¡Síguenos y te convertiré en un proxy profesional!

Por qué los proxies son esenciales para los scrapers de Python

Primero veamos por qué los servidores proxy son tan importantes para los raspadores de Python:

Evite bloquearse al raspar

La razón número uno para usar proxies con solicitudes de Python es evitar prohibiciones de IP. Muchos sitios cuentan con protecciones para bloquear scrapers y bots. Pueden permitir una cierta cantidad de solicitudes por minuto desde una IP determinada antes de incluirla en la lista negra.

Al extraer datos de un grupo rotativo de servidores proxy, parecerás muchos usuarios diferentes. A los sitios les resultará más difícil detectarlo y bloquearlo en comparación con raspar desde una única IP residencial.

Para darle una idea de la escala, un sitio puede permitir entre 60 y 100 solicitudes por minuto por IP antes de activar una prohibición. Incluso con solo un puñado de proxies, puedes multiplicar fácilmente por diez tu capacidad de scraping. Los proxy permiten la escalabilidad.

Acceder a contenido restringido geográficamente

Otro beneficio de los proxies es poder acceder a contenido limitado a determinadas regiones. Por ejemplo, el servicio de transmisión de vídeo BBC iPlayer sólo está disponible para residentes del Reino Unido. Al enrutar su tráfico a través de un proxy del Reino Unido, puede ver el sitio como si estuviera en Londres.

Otros ejemplos destacados incluyen Hulu (solo EE. UU.), Channel 4 (Reino Unido) y NHK World (Japón). Los servidores proxy le brindan opciones para acceder a contenido restringido por región desde cualquier lugar.

Anonimato y seguridad

Ocultar su dirección IP real también mejora la privacidad durante el scraping. Los sitios no podrán rastrear fácilmente las solicitudes hasta su ubicación o identidad.

Los actores de amenazas también pueden aprovechar los servidores proxy para enmascarar ataques, pero eso está más allá del alcance aquí. Nos centraremos en los aspectos positivos de mejorar la privacidad y el anonimato para el web scraping.

Rascadores de pitón a escala

Los servidores proxy le permiten realizar muchas más solicitudes paralelas ya que no está limitado por la capacidad de una única IP residencial.

En lugar de alcanzar los límites de subprocesos o bloquearse con una sola IP, puede enrutar solicitudes a través de múltiples servidores proxy para multiplicar las solicitudes por minuto que puede realizar.

Si cada proxy permite 60 solicitudes/min, 4 proxy le darían capacidad para 240 solicitudes/min. 10 proxies escalan a 600 solicitudes/min. Los proxies son esenciales para crear scrapers distribuidos de gran volumen en Python.

Ahora que sabes por qué los proxies son útiles, profundicemos en los detalles de cómo funcionan...

Cómo funcionan los proxies: anonimizar sus solicitudes

Los proxies actúan como intermediarios para las solicitudes entre usted y el servidor de destino:

Cómo funcionan los representantes

En lugar de conectarse directamente desde su IP al sitio de destino, sus solicitudes se enrutan primero a través del servidor proxy. Esto enmascara su IP real del destino.

Esto funciona configurando sus solicitudes HTTP para usar la dirección IP del proxy en lugar de la suya propia. Más adelante cubriremos exactamente cómo configurar esto en Python.

Algunas notas clave sobre cómo funcionan los proxies:

  • El proxy tiene su propia IP única de la que parece provenir el tráfico. Esto oculta tu IP real, reemplazándola con la del proxy.

  • Los representantes se pueden encadenar para lograr un anonimato adicional. Puede enrutar el tráfico a través de múltiples servidores proxy para ofuscar aún más los orígenes.

  • Protocolos proxy como HTTP y SOCKS manejar el tráfico que pasa. Esto se configura en la capa de aplicación para solicitudes.

Ahora que comprende cómo funcionan los proxies a un nivel fundamental, repasemos los diferentes tipos de proxies disponibles.

HTTP frente a SOCKS Proxies

Los dos protocolos proxy principales son HTTP y SOCKS. Comparémoslos:

Proxies HTTP

Los proxies HTTP son el tipo más común que encontrarás. Algunos atributos clave:

  • Sólo funciona para tráfico HTTP/HTTPS (no TCP/UDP de nivel inferior)
  • Simple de configurar – compatible con la mayoría de bibliotecas y herramientas
  • Normalmente se utiliza para raspado web y acceso web general.

Los servidores proxy HTTP básicamente interceptan las solicitudes HTTP realizadas por el cliente y las reenvían al destino. Están limitados únicamente al tráfico HTTP.

SOCKS Proxies

SOCKS es un protocolo proxy con más funciones que opera en capas de red inferiores.

Algunas caracteristicas:

  • Funciona para cualquier tráfico TCP, incluidos HTTP, HTTPS, FTP, etc.
  • Se agregaron funciones de autenticación y seguridad. como autenticación de nombre de usuario/contraseña.
  • Normalmente se utiliza para acceso total a la red y anonimato.

Mientras que los servidores proxy HTTP sólo funcionan a nivel de aplicación, SOCKS se encuentra más abajo en la capa de red/transporte. Esto permite SOCKS para representar prácticamente cualquier tráfico TCP.

¿Cuál debería usar?

Para la mayoría de los casos de uso de web scraping, un proxy HTTP está bien. Es más sencillo de configurar y solo le importa dirigir sus solicitudes HTTP a través de servidores proxy.

Si necesita enrutamiento de acceso completo a la red para tráfico de nivel inferior más allá de HTTP, utilice SOCKS preferiblemente. SOCKS También es mejor si prioriza la seguridad adicional y necesita autenticación.

Para nuestros usos centrados en web scrapers de Python, los servidores proxy HTTP son perfectamente adecuados. Ahora veamos dónde obtener servidores proxy.

Dónde conseguir proxies para web scraping

Existen algunos métodos principales para adquirir servidores proxy para usar con solicitudes de Python:

1. Compre proxy de un proveedor de proxy

La forma más sencilla es comprar proxies a través de un servicio de proxy. Algunos de los principales proveedores incluyen:

  • Datos brillantes – Mi proveedor favorito en general con IP residenciales de alta calidad en todo el mundo. Conexiones rápidas y tiempo de actividad confiable.

  • Oxylabs – Proxies de centros de datos disponibles para todas las regiones para admitir grandes volúmenes. Precios asequibles.

  • Geosurf – Se especializa en servidores proxy residenciales para países específicos para acceder a contenido restringido geográficamente.

Espere pagar entre $ 1 y $ 5 por proxy mensualmente, según la calidad y la ubicación del proveedor. Las API del servicio de proxy facilitan la carga de listas de servidores proxy nuevos para integrarlos en su código.

2. Encuentre servidores proxy disponibles públicamente

También puede encontrar servidores proxy públicos disponibles de forma gratuita en línea. Ojo que estos son de menor calidad ya que son compartidos. Los servidores proxy públicos tienen un uso elevado y, a menudo, se desconectan.

Lugares útiles para encontrar proxies públicos:

No recomiendo confiar únicamente en servidores proxy públicos, pero pueden complementar los pagos en caso de necesidad. Espere menores tiempos de actividad y velocidades.

3. Implemente sus propios servidores proxy

También puede crear sus propios servidores proxy privados implementando servidores proxy en infraestructuras como IP residenciales rotadas, instancias en la nube o VPN.

Esto le da control pero requiere más esfuerzo para configurar y mantener servidores proxy. Por lo general, para simplificar, subcontrataría el aprovisionamiento de proxy a un proveedor.

En resumen, recomiendo comprar servidores proxy de un proveedor acreditado como BrightData, a menos que el presupuesto sea muy limitado. La confiabilidad y la calidad pesan más que lidiar con proxys públicos complicados.

A continuación, profundicemos en el código para ver cómo configurar solicitudes de Python usando servidores proxy...

Configuración de un proxy: ejemplos de solicitudes de Python

Las solicitudes de Python facilitan la dirección de su tráfico a través de servidores proxy.

Usted especifica proxies creando un proxies dictado que asigna esquemas de URL a URL proxy:

proxies = {
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}

Luego, pase este dictado de proxy cuando realice solicitudes:

response = requests.get(‘https://example.com‘, proxies=proxies)

Esto enrutará todas las solicitudes HTTP y HTTPS a través de los servidores proxy especificados.

También puede configurar servidores proxy globalmente para todas las solicitudes o por solicitud. Veamos ejemplos de diferentes configuraciones de proxy con solicitudes de Python.

Proxy global para todas las solicitudes

Para aplicar un proxy globalmente a todas las solicitudes realizadas a través de la sesión de solicitudes, configure el dictado de proxy en el nivel de sesión:

import requests

session = requests.Session() 

proxies = {
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘  
}

session.proxies = proxies

response = session.get(‘https://example.com‘) 
# Uses HTTP proxy http://10.10.1.10:3128

También puedes hacer esto configurando las variables de entorno. HTTP_PROXY y HTTPS_PROXY antes de ejecutar su script.

Proxy por solicitud

Para usar un proxy solo para una solicitud específica, pase el dictado de proxy como parámetro solo para esa llamada:

import requests 

response = requests.get(‘https://example.com‘) # no proxy

proxied_response = requests.get(‘https://example.com‘, proxies={
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}) # uses proxy

Esto anula el proxy global solo para esta solicitud.

Proxy para dominio específico

Para enviar tráfico proxy solo para ciertos dominios, especifique el dominio en su dictado de proxy:

proxies = {
   ‘http://scrape-site.com‘: ‘http://10.10.1.10:3128‘,
   ‘https://api.example.com‘: ‘http://10.10.1.10:1080‘, 
}

requests.get(‘http://scrape-site.com/‘, proxies=proxies) # uses proxy
requests.get(‘http://no-proxy-domain.com‘, proxies=proxies) # no proxy

Esto permite un control granular sobre qué sitios usan proxies y qué sitios no.

Ahora que sabe cómo aplicar proxies, analicemos cómo autenticarse con proxies...

Autenticación con servidores proxy

Muchos servidores proxy requerirán autenticación para usarlos. Esto implica pasar credenciales de nombre de usuario/contraseña en las URL de su proxy.

A continuación se muestra un ejemplo de URL de proxy HTTP con autenticación:

http://myusername:[email protected]:8080

Es bastante simple, pero hay una consideración adicional si su nombre de usuario o contraseña contiene caracteres especiales.

Muchos personajes especiales como @ y : no son válidos en la sintaxis básica de URL. Para manejar estos casos, necesitamos Codificación de URL las credenciales con el urllib biblioteca:

from urllib.parse import quote

username = ‘[email protected]‘
password = ‘pass#123‘

proxy_url = f‘http://{quote(username)}:{quote(password)}@123.45.6.7:8080‘

Esto codificará correctamente esos valores para que puedan pasarse en la URL.

Ahora sus credenciales pueden contener caracteres especiales y podrá autenticarse exitosamente.

Una vez resuelto esto, pasemos a analizar los poderes rotativos...

Rotación de poderes para evitar prohibiciones

Al rastrear sitios web, querrá rotar sus solicitudes entre varias IP de proxy. Esto evita que los sitios te prohíban por realizar demasiadas solicitudes desde una sola IP.

Aquí hay una forma de implementar la rotación de proxy en Python:

import requests 
from random import choice

proxy_list = [
  ‘http://123.45.6.7:8080‘,
  ‘http://98.76.54.3.2:8080‘,
  ‘http://103.47.99.2:8080‘  
]

for _ in range(10):

  proxy = choice(proxy_list)

  response = requests.get(‘https://example.com‘, proxies={
      ‘http‘: proxy,
      ‘https‘: proxy
  })

  # Do something with response...

Mantenemos una lista de URL de proxy. Antes de cada solicitud, elegimos aleatoriamente un proxy usando Python. random.choice(). Esto rota los poderes con cada solicitud.

Puede cargar su lista de servidores proxy desde un archivo, API de proxy, base de datos u otra fuente. Actualícelo periódicamente para incluir nuevos proxies a medida que los antiguos se estropeen.

Lo ideal es utilizar al menos más de 10 servidores proxy y cambiarlos al menos cada 100 solicitudes para estar seguro. Mientras más, mejor.

Asegúrese de implementar una rotación de proxy similar en sus scrapers de producción para permanecer fuera del radar.

Reflexiones finales sobre proxies con solicitudes de Python

Y ahí lo tiene: ¡una guía completa para usar proxies con el módulo de solicitudes de Python!

Cubrimos la importancia de los servidores proxy para los web scrapers de Python, cómo funcionan internamente, dónde obtener servidores proxy, cómo configurar solicitudes para usar servidores proxy, autenticación y patrones de rotación de servidores proxy.

Los servidores proxy son cruciales para rastrear sitios con éxito a escala y evitar prohibiciones de propiedad intelectual. ¡Con las técnicas descritas aquí, puedes aprovechar los proxies como un profesional!

Para un uso de proxy aún más avanzado, consulte la solicita documentación. ¡Ahora adelante y usa tus nuevos poderes proxy para siempre! Déjame saber si tienes alguna otra pregunta sobre proxy.

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *