Proxy rotatif Selenium : faire tourner les IP dans Selenium WebDriver (guide pour débutants)
Un guide adapté aux débutants sur la rotation de proxys dans Selenium WebDriver. Configurez une liste de proxys, gérez l'authentification, vérifiez les changements d'IP et sachez quand une passerelle WireGuard dédiée de NordLayer est le choix le plus judicieux.
Vue d'ensemble
Selenium WebDriver ne fait pas tourner les proxys de lui-même. Lorsque vous scrapez ou testez à grande échelle, une seule adresse IP atteint rapidement des limites de débit, des blocages géographiques ou des CAPTCHAs. Ce tutoriel vous montre comment attribuer un proxy à Selenium, effectuer une rotation dans une liste de proxys, vérifier que l'adresse IP a réellement changé, et décider quand une passerelle WireGuard dédiée (comme NordLayer) est plus adaptée qu'un pool de proxys rotatifs.
Pourquoi faire tourner les proxys dans Selenium ?
- Éviter les limites de débit basées sur l'IP et les bannissements temporaires.
- Accéder à du contenu disponible uniquement dans certaines régions.
- Tester le comportement de votre site ou application depuis différents emplacements.
- Répartir les requêtes pour qu'une seule IP ne ressemble pas à un bot.
Stratégies de rotation
Choisissez une stratégie en fonction du nombre de requêtes dont vous avez besoin et de la durée de vie de chaque session.
- Rotation basée sur une liste — parcourez une liste fixe de proxys. Simple et gratuit, mais chaque proxy est réutilisé.
- Rotation aléatoire — choisissez un proxy aléatoire pour chaque session. Réduit les schémas prévisibles.
- Round-robin — utilisez les proxys dans l'ordre. Bon pour une répartition uniforme.
- Session persistante (sticky) — conservez le même proxy pour un flux de connexion ou de paiement, puis changez.
- Passerelle rotative — un point de terminaison unique qui fait tourner les IP pour vous côté fournisseur. Moins de code, mais moins de contrôle.
Pour de nombreux petits projets, une sélection aléatoire dans une liste suffit. Pour le scraping en production, envisagez un service de proxys rotatifs géré ou une passerelle WireGuard dédiée pour un accès stable et non rotatif.
Prérequis
- Python 3.8 ou plus récent.
- Google Chrome ou Mozilla Firefox installé.
- Une liste de proxys (HTTP, HTTPS ou SOCKS5) ou un abonnement à des proxys rotatifs.
- Connaissance de base de l'exécution de scripts Python.
Étapes
-
Installez Selenium et un gestionnaire WebDriver.
Installez Selenium et un utilitaire qui télécharge automatiquement le bon pilote de navigateur.
pip install selenium webdriver-manager -
Préparez votre liste de proxys.
Créez une liste de proxys en Python. Utilisez le schéma complet pour que Selenium sache comment se connecter.
PROXIES = [ 'http://user:[email protected]:8080', 'http://proxy2.example.com:8080', 'socks5://proxy3.example.com:1080', ]Si vos proxys nécessitent un nom d'utilisateur et un mot de passe, consultez l'étape 4 avant de continuer.
-
Configurez un seul proxy dans Selenium (Chrome).
Transmettez le proxy à Chrome avec l'argument
--proxy-server.from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service proxy = 'http://proxy2.example.com:8080' options = Options() options.add_argument(f'--proxy-server={proxy}') options.add_argument('--headless=new') driver = webdriver.Chrome( service=Service(ChromeDriverManager().install()), options=options ) driver.get('https://api.ipify.org?format=json') print(driver.page_source) driver.quit()Chrome n'accepte pas les identifiants dans la chaîne
--proxy-server. Si votre proxy nécessite une authentification, utilisez la liste blanche d'IP ou passez à Firefox (étape 4). -
Gérez l'authentification du proxy.
Les profils Firefox peuvent envoyer des identifiants de proxy. C'est utile pour des configurations adaptées aux débutants, sans bibliothèques supplémentaires.
from selenium import webdriver from selenium.webdriver.firefox.options import Options proxy_host = 'proxy2.example.com' proxy_port = 8080 options = Options() options.set_preference('network.proxy.type', 1) options.set_preference('network.proxy.http', proxy_host) options.set_preference('network.proxy.http_port', proxy_port) options.set_preference('network.proxy.ssl', proxy_host) options.set_preference('network.proxy.ssl_port', proxy_port) driver = webdriver.Firefox(options=options) driver.get('https://api.ipify.org?format=json') print(driver.page_source) driver.quit()Pour SOCKS5 avec authentification, la voie la plus simple pour un débutant est de demander à votre fournisseur de proxy un accès avec liste blanche d'IP. Ainsi, vous n'intégrez jamais de mot de passe dans votre script.
-
Faites tourner les proxys à chaque session.
Créez un nouveau WebDriver avec un proxy choisi aléatoirement pour chaque URL ou tâche. Quittez toujours le pilote lorsque vous avez terminé.
import random from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service PROXIES = [ 'http://proxy1.example.com:8080', 'http://proxy2.example.com:8080', 'socks5://proxy3.example.com:1080', ] def get_driver(): proxy = random.choice(PROXIES) options = Options() options.add_argument(f'--proxy-server={proxy}') options.add_argument('--headless=new') return webdriver.Chrome( service=Service(ChromeDriverManager().install()), options=options ) urls = [ 'https://example.com/page-1', 'https://example.com/page-2', ] for url in urls: driver = get_driver() try: driver.get(url) print(driver.title) finally: driver.quit()Ce modèle est facile à lire, mais démarrer un nouveau navigateur pour chaque requête est lent. Pour des tâches plus importantes, exécutez plusieurs pilotes en parallèle ou utilisez un point de terminaison de passerelle rotative. Si vous avez besoin d'une IP stable et non rotative pour des connexions ou des panneaux d'administration, passez à l'étape 7.
-
Vérifiez que l'adresse IP a changé.
Ne présumez jamais que le proxy a fonctionné. Vérifiez l'IP de sortie avant de scraper.
import json from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--proxy-server=http://proxy2.example.com:8080') options.add_argument('--headless=new') driver = webdriver.Chrome(options=options) driver.get('https://api.ipify.org?format=json') body = driver.find_element('tag name', 'body').text ip_info = json.loads(body) print(ip_info['ip']) driver.quit()Si l'IP affichée correspond à votre IP réelle, le proxy n'est pas utilisé. Vérifiez le format et l'authentification du proxy.
-
Choisissez entre des proxys rotatifs et une passerelle WireGuard dédiée.
Les proxys rotatifs sont idéaux pour des requêtes anonymes et à haut volume. Mais certaines tâches nécessitent l'inverse : une IP stable, de qualité professionnelle, qui reste la même pour chaque requête.
Utilisez une passerelle WireGuard dédiée, comme NordLayer, lorsque vous avez besoin de :
- Une IP de sortie cohérente pour les membres de l'équipe ou les tâches automatisées.
- Des tunnels chiffrés au lieu de paramètres de proxy par application.
- Une intégration rapide pour une petite équipe, sans maintenir de listes de proxys.
- Un chemin réseau distinct pour les outils internes, les sites de préproduction ou le suivi de position depuis une seule région.
NordLayer fournit des tunnels VPN WireGuard de qualité professionnelle avec des passerelles dédiées et une facturation mensuelle forfaitaire. Ce n'est pas un pool de proxys rotatifs, donc utilisez-le pour les sessions qui doivent rester sur une seule IP. Utilisez des proxys rotatifs lorsque chaque requête doit provenir d'une adresse différente.
Dépannage
| Symptôme | Cause probable | Correction |
|---|---|---|
| Connexion au proxy refusée | Hôte, port ou schéma incorrect | Vérifiez que la chaîne du proxy inclut http:// ou socks5:// |
| 407 Proxy Authentication Required | Identifiants manquants | Utilisez la liste blanche d'IP ou un profil Firefox avec authentification |
| Session WebDriver non créée | Incompatibilité de version navigateur/pilote | Mettez à jour Selenium et webdriver-manager |
| Les requêtes affichent encore votre IP réelle | Proxy non appliqué | Confirmez que --proxy-server est défini avant driver.get() |
| CAPTCHA ou page de blocage | Trop de requêtes ou proxy signalé | Ralentissez, faites une rotation plus prudente ou utilisez des IP résidentielles/ISP |
| Le proxy SOCKS5 échoue dans Chrome | Chrome ne prend pas en charge l'authentification proxy pour SOCKS5 dans l'argument | Utilisez Firefox ou un tunnel d'entreprise authentifié comme NordLayer |
Résumé
- Selenium ne fait pas tourner les proxys automatiquement ; vous en attribuez un par session de navigateur.
- Pour les débutants, commencez avec une petite liste de proxys, une sélection aléatoire et un nouveau pilote par tâche.
- Les profils Firefox gèrent plus facilement l'authentification proxy que Chrome.
- Vérifiez toujours l'IP de sortie avec un service comme ipify avant de faire confiance au proxy.
- Les proxys rotatifs sont idéaux pour le scraping distribué et anonyme.
- Une passerelle WireGuard dédiée comme NordLayer est préférable lorsque vous avez besoin d'une IP stable, chiffrée et de qualité professionnelle pour des équipes et des sessions de longue durée.