Cómo usar HTTPX con proxies sin rastreo: Una guía completa
Advanced Data Extraction Specialist
Hoy, vamos a aprender cómo usar proxies con HTTPX. Un proxy se sitúa entre tu scraper y el sitio que intentas raspar. Tu scraper hace una solicitud al servidor proxy para el sitio objetivo. El proxy luego recupera el sitio objetivo y se lo devuelve a tu scraper.
Cómo usar proxies no autenticados
En resumen, todas nuestras solicitudes van a un proxy_url. A continuación, un ejemplo usando un proxy no autenticado. Esto significa que no estamos usando un nombre de usuario o contraseña.
python
import httpx
proxy_url = "http://localhost:8030"
with httpx.Client(proxy=proxy_url) as client:
ip_info = client.get("https://geo.brdtest.com/mygeo.json")
print(ip_info.text)
Cómo usar proxies autenticados
Cuando un proxy requiere un nombre de usuario y contraseña, se llama "proxy autenticado". Estas credenciales se utilizan para autenticar tu cuenta y darte una conexión al proxy.
Con autenticación, nuestro proxy_url se ve así: http://<username>:<password>@<proxy_url>:<port_number>. En el ejemplo siguiente, usamos tanto nuestra zona como nuestro nombre de usuario para crear la parte del usuario de la cadena de autenticación.
Estamos usando los proxies residenciales de Scrapeless para nuestra conexión base.
python
import httpx
username = "your-username"
zone = "your-zone-name"
password = "your-password"
proxy_url = f"http://scrapeless-customer-{username}-zone-{zone}:{password}@scrapeless.proxy.io:33335"
ip_info = httpx.get("https://geo.brdtest.com/mygeo.json", proxy=proxy_url)
print(ip_info.text)
El código anterior es bastante simple. Esta es la base para cualquier tipo de proxy que quieras configurar.
- Primero, creamos nuestras variables de configuración:
nombre de usuario,zonaycontraseña. - Usamos esas para crear nuestro
proxy_url:f"http://scrapeless-customer-{username}-zone-{zone}:{password}@scrapeless.proxy.io:33335". - Hacemos una solicitud a la API para obtener información general sobre nuestra conexión proxy.
Tu respuesta debería parecerse a esto:
json
{"country":"US","asn":{"asnum":20473,"org_name":"AS-VULTR"},"geo":{"city":"","region":"","region_name":"","postal_code":"","latitude":37.751,"longitude":-97.822,"tz":"America/Chicago"}}
Cómo usar proxies rotativos
Cuando usamos proxies rotativos, creamos una lista de proxies y elegimos entre ellos al azar. En el código a continuación, creamos una lista de países. Cuando hacemos una solicitud, usamos random.choice() para usar un país aleatorio de la lista. Nuestro proxy_url se formatea para ajustarse al país.
El ejemplo a continuación crea una pequeña lista de proxies rotativos.
python
import httpx
import asyncio
import random
countries = ["us", "gb", "au", "ca"]
username = "your-username"
proxy_url = "scrapeless.proxy.io:33335"
datacenter_zone = "your-zone"
datacenter_pass = "your-password"
for random_proxy in countries:
print("----------info de conexión-------------")
datacenter_proxy = f"http://scrapeless-customer-{username}-zone-{datacenter_zone}-country-{random.choice(countries)}:{datacenter_pass}@{proxy_url}"
ip_info = httpx.get("https://geo.brdtest.com/mygeo.json", proxy=datacenter_proxy)
print(ip_info.text)
Este ejemplo realmente no es tan diferente del primero. Aquí están las diferencias clave:
- Creamos un array de países:
["us", "gb", "au", "ca"]. - En lugar de hacer una sola solicitud, hacemos múltiples. Cada vez que creamos una nueva solicitud, usamos
random.choice(countries)para elegir un país aleatorio cada vez que creamos nuestroproxy_url.
Cómo crear una conexión proxy de respaldo
En los ejemplos anteriores, hemos utilizado solo proxies de centro de datos y gratuitos. Los proxies gratuitos no son muy confiables. Los proxies de centro de datos tienden a ser bloqueados con sitios más difíciles.
En este ejemplo, creamos una función llamada safe_get(). Cuando llamamos a esta función, primero intentamos obtener la URL usando una conexión de centro de datos. Cuando esto falla, recurrimos a nuestra conexión residencial.
python
import httpx
from bs4 import BeautifulSoup
import asyncio
country = "us"
username = "your-username"
proxy_url = "scrapeless.proxy.io:33335"
datacenter_zone = "datacenter_proxy1"
datacenter_pass = "datacenter-password"
residential_zone = "residential_proxy1"
residential_pass = "residential-password"
cert_path = "/home/path/to/scrapeless_proxy_ca/New SSL certificate - MUST BE USED WITH PORT 33335/Scrapeless SSL certificate (port 33335).crt"
datacenter_proxy = f"http://scrapeless-customer-{username}-zone-{datacenter_zone}-country-{country}:{datacenter_pass}@{proxy_url}"
residential_proxy = f"http://scrapeless-customer-{username}-zone-{residential_zone}-country-{country}:{residential_pass}@{proxy_url}"
async def safe_get(url: str):
async with httpx.AsyncClient(proxy=datacenter_proxy) as client:
print("intentando con el centro de datos")
response = await client.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, "html.parser")
if not soup.select_one("form[action='/errors/validateCaptcha']"):
print("respuesta exitosa")
python
# código aquí
return response
print("respuesta fallida")
async with httpx.AsyncClient(proxy=residential_proxy, verify=cert_path) as client:
print("intentando con residencial")
response = await client.get(url)
print("respuesta exitosa")
return response
async def main():
url = "https://www.amazon.com"
response = await safe_get(url)
with open("out.html", "w") as file:
file.write(response.text)
asyncio.run(main())
Este ejemplo es un poco más complicado que los otros que hemos tratado en este artículo.
- Ahora tenemos dos conjuntos de variables de configuración, uno para nuestra conexión de centro de datos y otro para nuestra conexión residencial.
- Esta vez, usamos una sesión
AsyncClient()para introducir algunas de las funcionalidades más avanzadas de HTTPX. - Primero, intentamos realizar nuestra solicitud con el
datacenter_proxy. - Si no logramos obtener una respuesta adecuada, reintentamos la solicitud usando nuestro
residential_proxy. También note la banderaverifyen el código. Al utilizar los proxies residenciales de Scrapeless, necesita descargar y usar su certificado SSL. - Una vez que tenemos una respuesta sólida, escribimos la página en un archivo HTML. Podemos abrir esta página en nuestro navegador y ver lo que el proxy realmente accedió y nos envió de vuelta.
Si pruebas el código anterior, tu salida y el archivo HTML resultante deberían verse mucho como esto:
intentando con centro de datos
respuesta fallida
intentando con residencial
respuesta exitosa
Cómo Ayudan los Proxies de Scrapeless
Como probablemente hayas notado a lo largo de este artículo, Scrapeless ofrece una solución integral de proxy diseñada para las necesidades modernas de recolección de datos. Con más de 90 millones de IPs residenciales que abarcan más de 195 países, tasas de éxito de hasta el 99.98% y soporte para una amplia gama de casos de uso que incluyen raspado web, investigación de mercado, monitoreo de precios, seguimiento de SEO, verificación de anuncios y protección de marca, Scrapeless es ideal tanto para flujos de trabajo de datos empresariales como profesionales.
Proxies Residenciales
Con más de 90 millones de IPs residenciales reales en más de 195 países, los Proxies Residenciales de Scrapeless son ideales para raspado, inteligencia de mercado, seguimiento de precios y más.
Características Clave:
- Rotación automática de proxy
- Tasa de éxito promedio del 99.98%
- Geo-segmentación precisa (país/ciudad)
- Protocolos HTTP/HTTPS/SOCKS5
- <0.5s tiempo de respuesta
- Excelente velocidad y estabilidad
- Solo $1.80/GB
Proxies IPv6
Proxies dedicados de alta velocidad diseñados para tareas de raspado de gran peso.
Características:
- Soporte HTTP(S) y SOCKS5
- Rotación automática de proxy IPv6
- Alta anonimidad con IPs dedicadas
- Más de 50 millones de IPs IPv6 premium
- Cumplimiento con CCPA y GDPR
- Facturación por GB
Proxies de Centro de Datos
IPs de centro de datos de alto rendimiento optimizadas para automatización a gran escala, raspado a granel y alta concurrencia.
Características:
- 99.99% de tiempo de actividad
- Tiempo de respuesta extremadamente rápido
- Sesiones estables de larga duración
- Acceso a API e integración fácil
- Alta banda ancha, baja latencia
- Soporta HTTP/HTTPS/SOCKS5
Proxies ISP Estáticos
Ideales para operaciones de cuentas de comercio electrónico (eBay, PayPal, Amazon), consistencia de identidad a largo plazo y bajo riesgo de bloqueo.
Características:
- IPs residenciales reales
- 99.99% de tiempo de actividad
- Altas tasas de aceptación y bajo riesgo de prohibición
- Segmentación geográfica
- Protocolos HTTP/HTTPS/SOCKS5
Conclusión
Cuando combinas HTTPX con proxies Scrapeless obtienes una forma privada, eficiente y confiable de raspar la web. Si deseas rotar proxies, es tan simple como usar la biblioteca random incorporada de Python. Con una combinación de proxies de centro de datos y residenciales, puedes construir una conexión redundante que supera la mayoría de los sistemas de bloqueo.
Como has aprendido, Scrapeless proporciona el paquete completo para tus proyectos de raspado web. Con más de 90 millones de IPs, tasas de éxito del 99.98% y cobertura en más de 195 países, Scrapeless es la opción ideal para manejar todas tus necesidades de recolección de datos, desde raspado web e investigación de mercado hasta monitoreo de precios, seguimiento de SEO, verificación de anuncios y protección de marca.
¡Comienza tu prueba gratuita con los proxies de Scrapeless hoy!
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.



