Comment automatiser la rotation des proxys avec Python

Comment automatiser la rotation des proxys avec Python

Comprendre la rotation des procurations

Dans le ballet complexe du web scraping et des requêtes automatisées, la rotation de proxy est à la fois une arme et un bouclier. Elle masque votre empreinte numérique, garantissant que les requêtes ne révèlent pas leur origine aux serveurs vigilants. La rotation de proxy utilise une liste de serveurs proxy soigneusement sélectionnés, permettant à chaque requête de sembler provenir d'une source différente – évitant ainsi les blocages, les limitations de débit et la vigilance des systèmes anti-bots.


Stratégies clés de rotation des mandataires

Stratégie Description Cas d'utilisation Complexité
Tournoi à la ronde Parcourt séquentiellement les proxys dans l'ordre grattage général, cibles peu suspectes Faible
Sélection aléatoire Sélectionne aléatoirement un proxy dans le pool pour chaque requête Éviter les schémas détectables Moyen
Choix adaptatif/intelligent Sélectionne les serveurs proxy en fonction de leur état, de leur vitesse ou de leurs antécédents de bannissement. Grattage à grande échelle et haute sensibilité Haut

Préparation de la liste des procurations

Une liste de proxys est essentielle à la rotation des serveurs. Elle peut provenir de fournisseurs payants tels que… Données lumineuses, Oxylabs, ou des agrégateurs gratuits comme Liste de proxy gratuits.

Tableau : Exemples de format de liste de proxy

Format Exemple
IP:Port 51.158.68.68:8811
IP:Port:Utilisateur:Mot de passe 51.158.68.68:8811:nom_utilisateur:mot_de_passe

Stockez vos proxys dans un fichier texte brut (par exemple, proxys.txt) avec un proxy par ligne, une pratique à la fois élégante et pratique.


Implémentation de la rotation de proxy en Python

1. Lecture de la liste des mandataires

def load_proxies(filename): with open(filename, 'r') as f: return [line.strip() for line in f if line.strip()]

2. Rotation par procuration Round Robin

import itertools proxies = load_proxies('proxies.txt') proxy_pool = itertools.cycle(proxies) def get_next_proxy(): return next(proxy_pool)

Chaque appel à obtenir_proxy_suivant() propose le prochain substitut dans un cycle continu et sans fin – un hommage à la grâce ordonnée d'une valse parisienne.

3. Intégration avec Requests

Pour les requêtes HTTP, le demandes La bibliothèque est à la fois robuste et accessible.

import requests def format_proxy(proxy): parts = proxy.split(':') if len(parts) == 2: return {'http': f'http://{proxy}', 'https': f'https://{proxy}'} elif len(parts) == 4: ip, port, user, pwd = parts proxy_auth = f"{user}:{pwd}@{ip}:{port}" return {'http': f'http://{proxy_auth}', 'https': f'https://{proxy_auth}'} else: raise ValueError("Format de proxy invalide") url = "https://httpbin.org/ip" proxy = get_next_proxy() proxies_dict = format_proxy(proxy) response = requests.get(url, proxies=proxies_dict, timeout=10) print(response.json())

Rotation de proxy avec Requests-HTML et Selenium

Certaines pages web, aussi insaisissables que des madeleines proustiennes, nécessitent le rendu de JavaScript. Pour celles-ci, des outils tels que Requêtes-HTML ou Sélénium sont indispensables.

Exemple de requêtes HTML :

from requests_html import HTMLSession session = HTMLSession() proxy = get_next_proxy() proxies_dict = format_proxy(proxy) r = session.get('https://httpbin.org/ip', proxies=proxies_dict) print(r.html.text)

Exemple de sélénium :

Selenium nécessite la configuration d'un proxy au niveau du pilote.

from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, ProxyType def configure_selenium_proxy(proxy): ip, port = proxy.split(':')[:2] selenium_proxy = Proxy() selenium_proxy.proxy_type = ProxyType.MANUAL selenium_proxy.http_proxy = f"{ip}:{port}" selenium_proxy.ssl_proxy = f"{ip}:{port}" return selenium_proxy proxy = get_next_proxy() chrome_options = webdriver.ChromeOptions() selenium_proxy = configure_selenium_proxy(proxy) capabilities = webdriver.DesiredCapabilities.CHROME.copy() selenium_proxy.add_to_capabilities(capabilities) driver = webdriver.Chrome(options=chrome_options, desired_capabilities=capabilities) pilote.get('https://httpbin.org/ip')

Gestion de l'état et du basculement du proxy

Un script élégant s'adapte rapidement aux difficultés. Les proxys peuvent expirer, être mis sur liste noire ou présenter une latence excessive. Il est donc important de surveiller leur état et de supprimer ou de déprioriser ceux qui dysfonctionnent.

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 except Exception: return False healthy_proxies = [p for p in proxies if check_proxy(p)]

Pour des contrôles de santé plus sophistiqués et un basculement automatique, envisagez des bibliothèques telles que : proxys rotatifs scrapy.


Utilisation de bibliothèques tierces

Pour une orchestration plus ambitieuse, les bibliothèques tierces offrent une véritable symphonie de fonctionnalités :

Bibliothèque Caractéristiques Documentation
proxys rotatifs scrapy Gestion des pools de proxys, détection des bannissements https://github.com/TeamHG-Memex/scrapy-rotating-proxies
pool_proxy Collecte, validation et rotation des procurations https://github.com/jhao104/proxy_pool
requêtes-agent-utilisateur-aléatoire Randomisation de l'agent utilisateur et du proxy https://pypi.org/project/requests-random-user-agent/

Bonnes pratiques pour la rotation des procurations

  • Diversité: Utilisez des serveurs proxy provenant de plages d'adresses IP et de localisations diverses.
  • Respect Robots.txt : Respectez les politiques du site web, dans un esprit de civilité numérique.
  • Limitation de débit : Limiter les requêtes pour imiter le comportement humain et échapper à la détection.
  • Enregistrement: Consigner l'utilisation et les échecs des proxys en vue d'améliorations futures.
  • Considérations juridiques : Examinez attentivement le contexte juridique et éthique de vos activités (voir Le guide de l'EFF).

Lectures complémentaires

Que ces outils et pratiques soient votre passeport à travers les multiples boulevards du web, chaque requête escortée par la grâce subtile d'un masque en perpétuelle évolution.

Solange Lefebvre

Solange Lefebvre

Analyste principal en matière de procurations

Solange Lefebvre, une experte des parcours numériques, est à la tête du département analytique de ProxyMist depuis plus d'une décennie. Grâce à son expertise inégalée en matière de sécurité des réseaux et de gestion des serveurs proxy, elle a joué un rôle déterminant dans la conservation et la maintenance de l'une des listes les plus complètes de serveurs proxy SOCKS, HTTP, élite et anonymes au monde. De nationalité française et dotée d'un penchant pour la précision, Solange veille à ce que ProxyMist reste à la pointe des solutions Internet sécurisées.

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 *