
¿Se ha atascado la descarga de imágenes de Python? Prueba este truco de IP proxy
¿Los hermanos rastreadores se lo han encontrado? Cuando usas la librería requests para descargar imágenes, de repente la IP está baneada, y no puedes coger los datos. Hoy, te enseñaré un comodín - pon una IP proxy en tu script Python, especialmente si usas la libreríaipipgoEl servicio a domicilio ha sido probado para evitar el problema de bloqueo 90%.
¿Cómo se conecta exactamente una IP proxy en el código?
Hablando claro, no es más que añadir un parámetro proxies a la petición requests, para dar una castaña:
solicitudes de importación
Rellene aquí los proxies proporcionados por ipipgo.
proxies = {
http': 'http://用户名:密码@gateway.ipipgo.com:端口', 'https': 'http://用户名:密码@gateway.ipipgo.com:端口'
https': 'http://用户名:密码@gateway.ipipgo.com:端口'
}
response = requests.get('dirección imagen', proxies=proxies, timeout=10)
Guarda el archivo
con open('demo.jpg', 'wb') como f.
f.write(respuesta.contenido)
Nota. Muchos sitios web comprobarán el encabezado de la solicitud, se recomienda añadir User-Agent para disfrazarse de navegador:
cabeceras = {
User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...'
}
response = requests.get(url, headers=headers, proxies=proxies)
¿Por qué recomiendan el proxy de ipipgo?
Después de haber utilizado siete u ocho proveedores de servicios de agencia, este tiene las tres ventajas más tangibles:
1. Los acuerdos están plenamente activos
¡Soporta HTTP/HTTPS/Socks5 tres protocolos principales, especialmente su línea transfronteriza, bajo la velocidad de imagen en el extranjero puede elevarse a 3 MB / s +!
2. Conmutación automática de grupos de IP
Los paquetes residenciales dinámicos vienen con rotación de IP, sin necesidad de escribir su propia lógica de conmutación, especialmente adecuados para escenarios de descarga por lotes.
3. Comparación de los precios de los paquetes
| Tipo de envase | Escenarios aplicables | precio del artículo |
|---|---|---|
| Residencial dinámico (estándar) | Adquisición de imágenes pequeñas y medianas | 7,67 $/GB |
| Viviendas estáticas | Servicios que requieren IP fija | 35RMB/IP |
Guía para evitar el foso (Preguntas frecuentes QA)
P: ¿Se ha instalado correctamente el proxy o ha sido bloqueado?
R: la probabilidad es que la calidad IP no es buena, cambiar ipipgo paquetes residenciales estáticas, su ciclo de supervivencia IP es 2-3 veces más largo que las contrapartes
P: ¿Qué debo hacer si me quedo atascado a mitad de la descarga?
R: añade un mecanismo de reintento en el código, y comprueba el estado de la conexión proxy. el cliente ipipgo tiene monitorización de tráfico en tiempo real, que puede localizar rápidamente el nodo problemático.
P: ¿Y si tengo que gestionar cientos de tareas de descarga al mismo tiempo?
R: ¡Hazlo en varios hilos! Pero tenga cuidado de que el número de hilos no exceda el límite de concurrencias del paquete proxy. Utilice el paquete Enterprise de ipipgo, ¡que soporta hasta 500 concurrencias!
Consejos avanzados: Cambio inteligente de grupos de proxy
Cambio automático de proxies cuando falla una descarga, esta plantilla de script puede copiarse directamente de los deberes:
from itertools import ciclo
Lista de proxies de la API ipipgo
lista_proxy = [
'http://ip1:port',
'http://ip2:port', ...
... Preparar al menos 10 IPs
]
proxy_pool = cycle(proxy_list)
reintento = 3
for _ in range(retry): proxy = next(proxy_pool)
proxy = siguiente(proxy_pool)
intente.
response = requests.get(url, proxies={'http': proxy}, timeout=15)
if response.status_code == 200:: response.status_code
if response.status_code == 200: break
except Exception as e: print(f"{proxy}
print(f"{proxy} colgado, siguiente...")
¡Por último, no utilice proxies gratis! Especialmente la siguiente imagen de esta operación que consume tráfico, proxy de pago barato son más fiables que libre. ipipgo nuevos usuarios tienen 5 yuanes paquete de experiencia, probarlo usted mismo para saber dónde la brecha.

