Skip to content
Intermediate / 7 min read

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.

SOCKS5 HTTP(S) Scraping Web

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.com ou 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 :

  1. 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.
  2. 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.