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:
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:
- Cuentas de cheques listas públicas de proxy
- Extraer proxies de sitios como ProxyScrape
- Encontrar proxies mediante búsquedas idiotas de Google
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.