Cómo automatizar la rotación de proxy con Python

Cómo automatizar la rotación de proxy con Python

Entendiendo la rotación de proxy

En la delicada combinación del web scraping y las solicitudes automatizadas, la rotación de proxy es a la vez un escudo y una espada. Ofusca tu huella digital, garantizando que las solicitudes no revelen su origen a servidores vigilantes. La rotación de proxy recorre una lista seleccionada de servidores proxy, lo que permite que cada solicitud parezca provenir de una fuente diferente, evadiendo prohibiciones, límites de velocidad y la mirada amenazante de los mecanismos antibots.


Estrategias clave de rotación de proxy

Estrategia Descripción Caso de uso Complejidad
Partido redondo Recorre secuencialmente los servidores proxy en orden Raspado general, objetivos de baja sospecha Bajo
Selección aleatoria Selecciona aleatoriamente un proxy del grupo para cada solicitud Evitar patrones detectables Medio
Elección adaptativa/inteligente Selecciona proxies en función de la salud, la velocidad o el historial de prohibiciones. Raspado a gran escala y de alta sensibilidad Alto

Preparación de la lista de apoderados

Una lista de proxy es el elemento vital de la rotación. Puede obtenerse de proveedores de pago como Datos brillantes, Laboratorios de oxigenación, o agregadores gratuitos como Lista de proxy gratuita.

Tabla: Ejemplos de formato de lista de proxy

Formato Ejemplo
IP:Puerto 51.158.68.68:8811
IP:Puerto:Usuario:Contraseña 51.158.68.68:8811:nombre de usuario:contraseña

Guarde sus proxies en un archivo de texto sin formato (por ejemplo, proxies.txt) con un proxy por línea, una práctica a la vez elegante y práctica.


Implementación de la rotación de proxy en Python

1. Lectura de la lista de proxy

def load_proxies(filename): con open(filename, 'r') como f: return [line.strip() para línea en f si line.strip()]

2. Rotación de proxy round robin

importar itertools proxies = cargar_proxies('proxies.txt') proxy_pool = itertools.cycle(proxies) def obtener_siguiente_proxy(): devolver siguiente(proxy_pool)

Cada llamada a obtener_siguiente_proxy() ofrece el siguiente proxy en un ciclo continuo e interminable: un homenaje a la gracia ordenada de un vals parisino.

3. Integración con solicitudes

Para las solicitudes HTTP, el solicitudes La biblioteca es sólida y accesible.

importar solicitudes def format_proxy(proxy): partes = proxy.split(':') si len(partes) == 2: devolver {'http': f'http://{proxy}', 'https': f'https://{proxy}'} elif len(partes) == 4: ip, puerto, usuario, contraseña = partes proxy_auth = f"{usuario}:{contraseña}@{ip}:{puerto}" devolver {'http': f'http://{proxy_auth}', 'https': f'https://{proxy_auth}'} de lo contrario: generar ValueError("Formato de proxy no válido") url = "https://httpbin.org/ip" proxy = get_next_proxy() proxies_dict = format_proxy(proxy) respuesta = solicitudes.get(url, proxies=proxies_dict, tiempo de espera=10) imprimir(respuesta.json())

Rotación de proxy con solicitudes: HTML y Selenium

Algunas páginas web, tan esquivas como las magdalenas proustianas, requieren renderizar JavaScript. Para ello, se utilizan herramientas como Solicitudes-HTML o Selenio son indispensables.

Ejemplo de solicitudes HTML:

desde solicitudes_html importar HTMLSession sesión = HTMLSession() proxy = obtener_siguiente_proxy() proxies_dict = formato_proxy(proxy) r = sesión.get('https://httpbin.org/ip', proxies=proxies_dict) imprimir(r.html.texto)

Ejemplo de selenio:

Selenium requiere configuración de proxy a nivel del controlador.

de selenium importar webdriver de selenium.webdriver.common.proxy importar Proxy, ProxyType def configure_selenium_proxy(proxy): ip, puerto = proxy.split(':')[:2] selenium_proxy = Proxy() selenium_proxy.proxy_type = ProxyType.MANUAL selenium_proxy.http_proxy = f"{ip}:{puerto}" selenium_proxy.ssl_proxy = f"{ip}:{puerto}" return selenium_proxy proxy = get_next_proxy() chrome_options = webdriver.ChromeOptions() selenium_proxy = configure_selenium_proxy(proxy) capacidades = webdriver.DesiredCapabilities.CHROME.copy() selenium_proxy.add_to_capabilities(capacidades) driver = webdriver.Chrome(opciones=chrome_options, capacidades_deseadas=capacidades) driver.get('https://httpbin.org/ip')

Administración del estado del proxy y la conmutación por error

Un script elegante se adapta rápidamente a la adversidad. Los proxies pueden expirar, quedar en la lista negra o languidecer en latencia. Por lo tanto, monitoree su estado y elimine o despriorice aquellos que fallen.

def check_proxy(proxy): try: proxies_dict = format_proxy(proxy) resp = requests.get('https://httpbin.org/ip', proxies=proxies_dict, timeout=5) return resp.status_code == 200 excepto Excepción: return False healthy_proxies = [p para p en proxies si check_proxy(p)]

Para realizar comprobaciones de estado más sofisticadas y conmutación por error automática, considere bibliotecas como proxies rotativos fragmentados.


Uso de bibliotecas de terceros

Para una orquestación más completa, las bibliotecas de terceros ofrecen una sinfonía de características:

Biblioteca Características Documentación
proxies rotativos fragmentados Gestión de grupos de servidores proxy, detección de prohibiciones https://github.com/TeamHG-Memex/scrapy-rotating-proxies
grupo de proxy Recopilación, validación y rotación de proxy https://github.com/jhao104/proxy_pool
solicitudes-agente-de-usuario-aleatorio Aleatorización de agente de usuario y proxy https://pypi.org/project/requests-random-user-agent/

Prácticas recomendadas para la rotación de servidores proxy

  • Diversidad: Utilice servidores proxy desde distintos rangos de IP y ubicaciones.
  • Respete Robots.txt: Honrar las políticas del sitio web, en el espíritu de la civilidad digital.
  • Limitación de velocidad: Limita las solicitudes para imitar el comportamiento humano y evadir la detección.
  • Explotación florestal: Registre el uso del proxy y las fallas para mejorarlo en el futuro.
  • Consideraciones legales: Examine el panorama legal y ético de sus actividades (ver Guía de la EFF).

Lectura adicional

Deje que estas herramientas y prácticas sean su pasaporte a través de los múltiples bulevares de la red, con cada solicitud escoltada por la gracia sutil de una máscara en constante cambio.

Solange Lefebvre

Solange Lefebvre

Analista sénior de proxy

Solange Lefebvre, una experta en vías digitales, ha estado al frente del departamento analítico de ProxyMist durante más de una década. Con su experiencia incomparable en seguridad de redes y administración de servidores proxy, ha sido fundamental en la selección y el mantenimiento de una de las listas más completas de servidores proxy SOCKS, HTTP, elite y anónimos del mundo. Solange, ciudadana francesa con una inclinación por la precisión, garantiza que ProxyMist se mantenga a la vanguardia de las soluciones seguras de Internet.

Comentarios (0)

Aún no hay comentarios aquí, ¡puedes ser el primero!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *