Comment utiliser les proxys résidentiels rotatifs IPRoyal avec Selenium en Python pour le scraping web
Un guide pratique pour intégrer les proxys résidentiels d'IPRoyal avec Selenium WebDriver en Python, incluant l'authentification, la rotation et le dépannage.
Aperçu
Selenium est un outil populaire pour l'automatisation de navigateur, mais le scraping à grande échelle nécessite souvent de faire tourner les adresses IP pour éviter les blocages. Le réseau de proxys résidentiels d'IPRoyal fournit un large pool d'IP avec des options de rotation flexibles. Ce tutoriel vous montre comment connecter Selenium aux proxys résidentiels d'IPRoyal avec Python, gérer l'authentification et faire tourner les IP entre les requêtes.
Comme Selenium ne prend pas nativement en charge l'authentification proxy dans tous les pilotes, nous utiliserons le paquet selenium-wire, qui étend Selenium et gère proprement les identifiants de proxy. Les exemples ci-dessous utilisent Chrome, mais la même approche fonctionne avec les autres navigateurs pris en charge par Selenium.
Prérequis
- Python 3.8 ou plus récent
- Un compte IPRoyal avec des identifiants de proxy résidentiel
- Connaissance de base de Python et Selenium
- Navigateur Chrome et ChromeDriver installés (ou un pilote de navigateur alternatif)
Étape 1 : Récupérer vos identifiants de proxy IPRoyal
Connectez-vous à votre tableau de bord IPRoyal et localisez les détails du point de terminaison du proxy résidentiel. Vous aurez besoin de :
- Hôte proxy (par ex.,
geo.iproyal.comou l'hôte indiqué dans votre tableau de bord) - Numéro de port
- Nom d'utilisateur
- Mot de passe
Les proxys résidentiels IPRoyal proposent généralement à la fois des sessions rotatives et des sessions persistantes (sticky). Pour les sessions rotatives, chaque requête (ou chaque nouvelle session de navigateur) peut utiliser une IP différente. Pour les sessions persistantes, vous pouvez conserver la même IP pendant une période en utilisant un identifiant de session dans le nom d'utilisateur. Vérifiez le format exact dans votre tableau de bord—souvent, vous ajoutez un ID de session au nom d'utilisateur, comme yourusername-session-abc123.
Étape 2 : Installer Selenium et selenium-wire
Installez les paquets requis avec pip :
pip install selenium selenium-wire
Assurez-vous que la version de ChromeDriver correspond à votre version de Chrome installée. Vous pouvez télécharger ChromeDriver depuis la page Chrome for Testing ou utiliser un gestionnaire comme webdriver-manager.
Étape 3 : Configurer Selenium avec l'authentification proxy IPRoyal
Créez un script Python qui configure un pilote Selenium Wire avec vos identifiants de proxy IPRoyal. Remplacez les espaces réservés par vos valeurs réelles.
from seleniumwire import webdriver
# Remplacez par vos détails de proxy IPRoyal
proxy_user = "your_username"
proxy_pass = "your_password"
proxy_host = "your-iproyal-host"
proxy_port = "your_port"
# Construisez l'URL du proxy
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
# Configurez les options de proxy Selenium Wire
proxy_options = {
'proxy': {
'http': proxy_url,
'https': proxy_url,
'no_proxy': 'localhost,127.0.0.1'
}
}
# Lancez Chrome avec Selenium Wire
driver = webdriver.Chrome(seleniumwire_options=proxy_options)
try:
driver.get("https://httpbin.org/ip")
print(driver.find_element("tag name", "body").text)
finally:
driver.quit()
Exécutez le script. Si le proxy fonctionne, vous devriez voir une adresse IP appartenant au réseau d'IPRoyal, et non votre IP réelle.
Étape 4 : Faire tourner les IP entre les requêtes
Il existe deux méthodes courantes pour faire tourner les IP avec les proxys résidentiels IPRoyal :
- Point de terminaison rotatif : utilisez le même hôte et le même port pour chaque requête. Le proxy attribue automatiquement une nouvelle IP à chaque connexion. C'est la méthode la plus simple pour le scraping sans état.
- Sessions persistantes (sticky) avec un ID de session : ajoutez un ID de session unique à votre nom d'utilisateur (par ex.,
yourusername-session-abc123). Toutes les requêtes utilisant cet ID de session utiliseront la même IP jusqu'à ce que la session expire ou que vous changiez l'ID. C'est utile pour les flux à plusieurs étapes, comme se connecter puis extraire des données.
Pour faire tourner les IP manuellement dans Selenium, vous pouvez créer une nouvelle instance de pilote avec un ID de session différent pour chaque tâche de scraping. Voici un exemple qui parcourt une liste d'ID de session :
import time
from seleniumwire import webdriver
base_username = "your_username"
base_password = "your_password"
proxy_host = "your-iproyal-host"
proxy_port = "your_port"
session_ids = ["session1", "session2", "session3"]
for session_id in session_ids:
# Construisez le nom d'utilisateur avec l'ID de session (ajustez la syntaxe selon la doc IPRoyal)
username = f"{base_username}-session-{session_id}"
proxy_url = f"http://{username}:{base_password}@{proxy_host}:{proxy_port}"
proxy_options = {
'proxy': {
'http': proxy_url,
'https': proxy_url,
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Chrome(seleniumwire_options=proxy_options)
try:
driver.get("https://httpbin.org/ip")
print(f"Session {session_id}:", driver.find_element("tag name", "body").text)
finally:
driver.quit()
time.sleep(1)
Si IPRoyal fournit un point de terminaison rotatif qui change d'IP à chaque requête, vous pouvez ignorer la logique d'ID de session et réutiliser les mêmes identifiants. Vérifiez le comportement dans votre tableau de bord.
Étape 5 : Gérer le ciblage géographique et les sessions persistantes
Les proxys résidentiels IPRoyal prennent en charge le ciblage par pays et par ville. Vous pouvez généralement spécifier l'emplacement en ajoutant un code pays au nom d'utilisateur ou en utilisant un point de terminaison dédié. Par exemple, de nombreux fournisseurs utilisent un format de nom d'utilisateur comme yourusername-country-us. Vérifiez la syntaxe exacte dans votre tableau de bord IPRoyal.
Pour maintenir une session persistante pour un scraping à plusieurs étapes (par ex., ajouter au panier, puis passer à la caisse), utilisez un seul ID de session pour toutes les actions et gardez la même instance de pilote ouverte. Changer le pilote ou l'ID de session entraînera une IP différente.
Étape 6 : Vérifier le proxy et gérer les erreurs
Vérifiez toujours que vos requêtes passent par le proxy. Une vérification simple consiste à visiter https://httpbin.org/ip ou https://ipinfo.io/ip et à confirmer que l'IP n'est pas la vôtre. Si vous devez inspecter les en-têtes, Selenium Wire vous permet d'accéder aux objets de requête et de réponse :
for request in driver.requests:
if request.response:
print(request.url, request.response.status_code)
Dépannage
| Problème | Cause probable | Correctif |
|---|---|---|
| 407 Proxy Authentication Required | Nom d'utilisateur/mot de passe incorrect ou caractères spéciaux non encodés URL | Encodez les caractères spéciaux dans le nom d'utilisateur/mot de passe (par ex., @ devient %40). Vérifiez les identifiants dans votre tableau de bord IPRoyal. |
| Délai de connexion expiré | Hôte/port incorrect ou pare-feu bloquant | Vérifiez l'hôte et le port. Essayez un autre port si IPRoyal en propose d'autres. Assurez-vous que votre pare-feu autorise les connexions sortantes. |
| L'IP ne change pas | Utilisation d'un ID de session persistant ou connexion mise en cache | Utilisez le point de terminaison rotatif ou changez l'ID de session. Fermez le pilote et ouvrez-en un nouveau. |
| Erreur WebDriver au lancement | Incompatibilité de version de ChromeDriver | Mettez à jour ChromeDriver pour qu'il corresponde à votre version de Chrome. |
| Erreurs SSL | Le proxy ne gère pas correctement HTTPS | Assurez-vous d'utiliser http:// dans l'URL du proxy même pour les sites HTTPS (le proxy tunnelise HTTPS). |
Résumé
Dans ce tutoriel, vous avez appris à intégrer les proxys résidentiels IPRoyal avec Selenium en Python en utilisant selenium-wire pour l'authentification. Vous avez configuré un proxy unique, mis en œuvre la rotation via des ID de session persistants et vérifié la configuration. N'oubliez pas d'utiliser des points de terminaison rotatifs pour le scraping à gros volume et des sessions persistantes pour les flux à plusieurs étapes. Testez toujours votre connexion proxy avant d'exécuter de grandes tâches, et consultez votre tableau de bord IPRoyal pour le format exact du point de terminaison et les paramètres de session.