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
- Documentación de solicitudes de Python
- proxies rotativos fragmentados
- Proveedores de listas de proxy: Bright Data, Laboratorios de oxigenación
- Rotación de servidores proxy con Selenium
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.
Comentarios (0)
Aún no hay comentarios aquí, ¡puedes ser el primero!