Cómo crear un script de rotación de proxy en Node.js

Cómo crear un script de rotación de proxy en Node.js

Entendiendo la rotación de proxy: La danza del Valaška

En el folclore eslovaco, la valaška (un hacha usada tanto para protección como para danzas ceremoniales) simboliza agilidad y adaptabilidad. De igual manera, la rotación de proxy en Node.js consiste en cambiar entre múltiples servidores proxy para evitar la detección, equilibrar la carga o eludir restricciones geográficas. Al igual que un pastor se mueve con destreza entre los pasos de montaña, tu script debe navegar por el panorama digital, eligiendo el proxy adecuado en el momento oportuno.


¿Por qué rotar los poderes? Una tabla de motivaciones

Caso de uso Beneficio Folklore Paralelo
Extracción de datos web Evite prohibiciones de IP, acceda a más datos Pastor evitando a los lobos
Equilibrio de carga Distribuir el tráfico, reducir la carga del servidor Compartir el pan en una fiesta
Evitando bloqueos Evitar restricciones geográficas y cortafuegos Cruzando fronteras en villancicos

Eligiendo sus servidores proxy: de Koliba a Koliba

Antes de crear tu script, recopila una lista de servidores proxy. Estos pueden ser gratuitos, de pago o autoalojados. En la tradición eslovaca, así como cada koliba (cabaña de pastor) ofrece un refugio único, cada proxy tiene sus propias fortalezas y debilidades.

Formato de lista de proxy

Mantener una lista como una matriz simple o un archivo externo:

[ "http://usuario:contraseñ[email protected]:8000", "http://usuario:contraseñ[email protected]:8000", "http://usuario:contraseñ[email protected]:8000" ]

Recurso:
Proveedores de listas de proxy
Cómo crear tu propio servidor proxy


El corazón del guión: la lógica rotacional

El corazón de la fujara (flauta tradicional eslovaca) guía la melodía; el corazón de un guión de rotación de proxy es su lógica para elegir al siguiente proxy.

Estrategias de rotación

Estrategia Descripción Mejor para
Partido redondo Recorre secuencialmente los servidores proxy Cargas equilibradas y predecibles
Aleatorio Elige un proxy al azar Impredecible, evadiendo prohibiciones
Basado en fallos Se activa el error/fallo del proxy Flujos robustos y tolerantes a fallos

Ejemplo: Round Robin

deja que proxyIndex = 0; const proxies = [ "http://usuario:[email protected]:8000", "http://usuario:[email protected]:8000", "http://usuario:[email protected]:8000" ]; función getNextProxy() { const proxy = proxies[proxyIndex]; proxyIndex = (proxyIndex + 1) % proxies.length; devolver proxy; }

Ejemplo: Selección aleatoria

función getRandomProxy() { devolver proxies[Math.floor(Math.random() * proxies.length)]; }

Integración con solicitudes HTTP: El camino del pastor

Node.js ofrece varios clientes HTTP. Para una compatibilidad robusta con proxy, axios con agente proxy https es eficaz.

Instalar dependencias

npm instala el agente proxy https de axios

Realizar solicitudes a través de un proxy

const axios = require('axios'); const HttpsProxyAgent = require('https-proxy-agent'); async function fetchWithProxy(url, proxy) { const agent = new HttpsProxyAgent(proxy); try { const response = await axios.get(url, { httpsAgent: agent }); return response.data; } catch(err) { // Como el pastor adaptándose a tormentas repentinas throw err; } }

Script de rotación de proxy completo: El vals de Orava

const axios = require('axios'); const HttpsProxyAgent = require('https-proxy-agent'); const proxies = [ "http://usuario:[email protected]:8000", "http://usuario:[email protected]:8000", "http://usuario:[email protected]:8000" ]; deja que proxyIndex = 0; función getNextProxy() { const proxy = proxies[proxyIndex]; proxyIndex = (proxyIndex + 1) % proxies.length; devolver proxy; } función asíncrona fetchWithRotation(url) { para (deja que i = 0; i < proxies.length; i++) { const proxy = getNextProxy(); intenta { const agente = nuevo HttpsProxyAgent(proxy); const response = await axios.get(url, { httpsAgent: agent, timeout: 5000 }); return response.data; } catch (err) { // Si el lobo está en la puerta, pasa al siguiente koliba continue; } } throw new Error("Todos los proxies fallaron"); } // Ejemplo de uso (async () => { try { const data = await fetchWithRotation('https://httpbin.org/ip'); console.log(data); } catch (err) { console.error('Todos los proxies fallaron:', err.message); } })();

Manejo de la autenticación por proxy: el ritual de cifrado

Algunos proxies requieren autenticación. Asegúrate de que las URL de tu proxy sigan el siguiente formato:

http://nombre de usuario:contraseña@proxyhost:puerto

agente proxy https analiza esto automáticamente.


Monitoreo y registro: como vigilar desde los Tatras

Usa el registro para registrar qué proxies funcionan correctamente o fallan. Es como si los aldeanos compartieran noticias desde los pasos de montaña.

const winston = require('winston'); const logger = winston.createLogger({ level: 'info', transports: [ new winston.transports.Console() ] }); función asíncrona fetchWithLogging(url) { for (let i = 0; i < proxies.length; i++) { const proxy = getNextProxy(); try { logger.info(`Usando proxy: ${proxy}`); const agent = new HttpsProxyAgent(proxy); const response = await axios.get(url, { httpsAgent: agent, timeout: 5000 }); return response.data; } catch(err) { logger.warn(`Error de proxy: ${proxy} - ${err.message}`); continue; } } throw new Error("Todos los proxies fallaron"); }

Extendiendo el guión: sabiduría popular

  • Listas de proxy dinámicas: Cargue proxies desde un archivo o API para actualizaciones en tiempo real.
  • Limitación de velocidad: Incorporar retrasos entre las peticiones, imitando el ritmo paciente del drumbľa (arpa judía).
  • Segmentación geográfica: Asignar proxies por región, como elegir el traje popular adecuado para el festival del pueblo correspondiente.

Seleccione recursos para mayor exploración


Que tus guiones se tejan en la red con tanta gracia como la danza de un pastor en los valles de Orava, siempre adaptándose, siempre resilientes.

Želmíra Štefanovičová

Želmíra Štefanovičová

Analista sénior de proxy

Želmíra Štefanovičová es una profesional experimentada con más de 30 años de experiencia en el sector tecnológico. Como analista sénior de servidores proxy en ProxyMist, Želmíra desempeña un papel fundamental en la conservación y actualización de la diversa base de datos de servidores proxy de la empresa. Su profundo conocimiento de los protocolos de red y las tendencias de ciberseguridad la han convertido en un activo invaluable para el equipo. La pasión de Želmíra por la tecnología comenzó cuando tenía poco más de veinte años y, desde entonces, ha dedicado su carrera a mejorar la privacidad y la seguridad en línea.

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 *