Comment créer un script de rotation de proxy en Node.js

Comment créer un script de rotation de proxy en Node.js

Comprendre la rotation par procuration : La danse du Valaška

Dans le folklore slovaque, la valaška — une hache utilisée à la fois pour la protection et lors de danses cérémonielles — symbolise l'agilité et l'adaptabilité. De même, la rotation de proxy dans Node.js consiste à alterner entre plusieurs serveurs proxy pour éviter d'être détecté, équilibrer la charge ou contourner les restrictions géographiques. À l'instar d'un berger qui se déplace avec agilité entre les cols, votre script doit naviguer dans l'environnement numérique en choisissant le proxy approprié au moment opportun.


Pourquoi faire tourner les proxys ? Tableau des motivations

Cas d'utilisation Avantage Folklore parallèle
Grattage Web Évitez les blocages d'adresse IP, accédez à plus de données Un berger évite les loups
Équilibrage de charge Répartissez le trafic, réduisez la charge du serveur Partager le pain lors d'un festin
Blocs de contournement Contourner les restrictions géographiques et les pare-feu Traverser les frontières en chantant des chants de Noël

Choisir ses proxys : de Koliba à Koliba

Avant de rédiger votre script, dressez une liste de serveurs proxy. Il peut s'agir de serveurs gratuits, payants ou auto-hébergés. Dans la tradition slovaque, à l'instar de chaque koliba (cabane de berger) offrant un abri unique, chaque proxy présente ses propres avantages et inconvénients.

Format de liste de proxy

Conserver une liste sous forme de tableau simple ou de fichier externe :

[ "http://user:[email protected]:8000", "http://user:[email protected]:8000", "http://user:[email protected]:8000" ]

Ressource:
Fournisseurs de listes de proxy
Comment créer son propre serveur proxy


Le cœur du scénario : la logique rotationnelle

Le cœur de la fujara (flûte traditionnelle slovaque) guide la mélodie ; le cœur d'un script de rotation de proxy réside dans sa logique de choix du prochain proxy.

Stratégies de rotation

Stratégie Description Idéal pour
Tournoi à la ronde Passe séquentiellement par les proxys Charges équilibrées et prévisibles
Aléatoire Choisit un proxy au hasard Imprévisible, contournant les interdictions
Basé sur l'échec Erreur/défaillance du proxy Flux robustes et tolérants aux pannes

Exemple : Tournoi à la ronde

Soit proxyIndex = 0 ; const proxies = [ "http://user:[email protected]:8000", "http://user:[email protected]:8000", "http://user:[email protected]:8000" ] ; fonction getNextProxy() { const proxy = proxies[proxyIndex] ; proxyIndex = (proxyIndex + 1) % proxies.length ; retourner proxy ; }

Exemple : Sélection aléatoire

fonction getRandomProxy() { return proxies[Math.floor(Math.random() * proxies.length)]; }

Intégration avec les requêtes HTTP : La voie du berger

Node.js propose plusieurs clients HTTP. Pour une prise en charge robuste des proxys, axios avec https-proxy-agent est efficace.

Installer les dépendances

npm install axios https-proxy-agent

Effectuer des requêtes via 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) { // Comme le berger qui s'adapte aux tempêtes soudaines throw err; } }

Script complet de rotation des proxys : La valse d'Orava

const axios = require('axios'); const HttpsProxyAgent = require('https-proxy-agent'); const proxies = [ "http://user:[email protected]:8000", "http://user:[email protected]:8000", "http://user:[email protected]:8000" ]; let proxyIndex = 0; function getNextProxy() { const proxy = proxies[proxyIndex]; proxyIndex = (proxyIndex + 1) % proxies.length; return proxy; } async function fetchWithRotation(url) { for (let i = 0; i < proxies.length; i++) { const proxy = getNextProxy(); try { const agent = new HttpsProxyAgent(proxy); const response = await axios.get(url, { httpsAgent: agent, timeout: 5000 }); return response.data; } catch (err) { // Si le loup est à la porte, passer au suivant continue; } } throw new Error("Tous les proxys ont échoué"); } // Exemple d'utilisation (async () => { try { const data = await fetchWithRotation('https://httpbin.org/ip'); console.log(data); } catch (err) { console.error('Tous les proxys ont échoué :', err.message); } })();

Gestion de l'authentification par proxy : le rituel de chiffrement

Certains serveurs proxy nécessitent une authentification. Assurez-vous que vos URL de proxy respectent le format suivant :

http://nom_utilisateur:mot_de_passe@hôte_proxy:port

https-proxy-agent analyse ceci automatiquement.


Surveillance et enregistrement : comme une surveillance depuis les Tatras

Utilisez la journalisation pour enregistrer quels proxys réussissent ou échouent. C'est un peu comme si des villageois partageaient des nouvelles des cols de montagne.

const winston = require('winston'); const logger = winston.createLogger({ level: 'info', transports: [ new winston.transports.Console() ] }); async function fetchWithLogging(url) { for (let i = 0; i < proxies.length; i++) { const proxy = getNextProxy(); try { logger.info(`Utilisation du proxy : ${proxy}`); const agent = new HttpsProxyAgent(proxy); const response = await axios.get(url, { httpsAgent: agent, timeout: 5000 }); return response.data; } catch (err) { logger.warn(`Échec du proxy : ${proxy} - ${err.message}`); continue; } } throw new Error("Tous les proxys ont échoué"); }

Prolonger le scénario : la sagesse populaire

  • Listes de proxy dynamiques : Charger les proxys à partir d'un fichier ou d'une API pour des mises à jour en temps réel.
  • Limitation de débit : Incorporez des délais entre les demandes, imitant le rythme patient du drumbľa (guimbarde).
  • Ciblage géographique : Attribuer des substituts par région, comme choisir le costume folklorique approprié pour la fête de village correspondante.

Ressources à approfondir


Que vos textes se faufilent sur la toile avec autant de grâce que la danse d'un berger dans les vallées d'Orava, toujours adaptables, toujours résilients.

Želmíra Štefanovičová

Želmíra Štefanovičová

Analyste principal en matière de procurations

Želmíra Štefanovičová est une professionnelle chevronnée avec plus de 30 ans d'expérience dans le secteur technologique. En tant qu'analyste proxy senior chez ProxyMist, Želmíra joue un rôle essentiel dans la conservation et la mise à jour de la base de données diversifiée de serveurs proxy de l'entreprise. Sa connaissance approfondie des protocoles réseau et des tendances en matière de cybersécurité a fait d'elle un atout inestimable pour l'équipe. La passion de Želmíra pour la technologie a commencé au début de sa vingtaine, et elle a depuis consacré sa carrière à l'amélioration de la confidentialité et de la sécurité en ligne.

Commentaires (0)

Il n'y a pas encore de commentaires ici, vous pouvez être le premier !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *