SeleniumBase est conçu comme un wrapper pour exécuter des instances Selenium dans un environnement de test. Cela dit, c’est bien plus qu’un simple wrapper. SeleniumBase nous permet d’exécuter Selenium à l’aide d’un Proxy authentifié.
Problèmes inhérents au Proxy avec Selenium
Selenium ne prend pas très bien en charge les Proxys. Bien que vous puissiez passer un argument --proxy-server dans Selenium, les Proxys authentifiés ne sont pas pris en charge. Mais il y a pire. Pendant des années, SeleniumWire était la solution incontournable pour utiliser des Proxys avec Selenium. L’intégration était incroyablement facile. Malheureusement, SeleniumWire a été abandonné il y a plus d’un an et n’a reçu aucune mise à jour depuis plus de deux ans.

Pour commencer
Pour commencer, nous devons installer SeleniumBase et écrire un cas de test. Le cas de test est ce qui contrôle réellement Selenium et exécute notre instance webdriver pour nous.
Installation
pip install seleniumbase
Écriture d’un cas de test
Voici un cas de test simple. Le code ci-dessous envoie une requête à l’API IPinfo. Une fois que nous avons reçu notre réponse JSON, nous l’analysons et affichons son contenu dans la console.
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
#aller sur le site
self.driver.get("https://ipinfo.io/json")
#charger la réponse json
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#parcourir le dictionnaire et imprimer son contenu
for k,v in location_info.items():
print(f"{k}: {v}")
Exécution du test
Pour exécuter le code, nous devons lancer le test. Au lieu d’utiliser python nom_de_votre_script.py, nous allons utiliser pytest.
Sans Proxy
Si vous souhaitez exécuter votre script de test sans Proxy, vous pouvez utiliser la commande ci-dessous.
pytest proxy_test.py -s
Vous recevrez une réponse similaire à celle-ci.
=================================================== début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 23.28.108.255
nom d'hôte : d28-23-255-108.dim.wideopenwest.com
ville : Westland
région : Michigan
pays : États-Unis
localisation : 42.3242,-83.4002
org : AS12083 WideOpenWest Finance LLC
code postal : 48185
fuseau horaire : America/Detroit
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 1,01 s ====================================================
Configuration du Proxy
Pour utiliser un Proxy, il suffit d’utiliser le drapeau --proxy suivi de l’URL de notre Proxy. Regardez le format ci-dessous.
--proxy=votre_url_proxy:votre_port_proxy
Proxy gratuit
Voici un exemple d’utilisation d’un Proxy gratuit. L’adresse IP est 155.54.239.64 et nous communiquons avec lui sur le port 80.
--Proxy=155.54.239.64:80
Proxy authentifié
Les proxies authentifiés sont gérés de la même manière. Avec un proxy authentifié, il vous suffit d’inclure votre nom d’utilisateur et votre mot de passe dans l’URL.
Proxy=<VOTRE_NOM_D'UTILISATEUR>:<VOTRE_MOT_DE_PASSE>@<URL_DU_PROXY>:<PORT_DU_PROXY>
Meilleurs types et fournisseurs de proxies authentifiés
Lorsque vous utilisez des proxys authentifiés avec Selenium, les meilleures options sont les Proxys résidentiels, les Proxys de centre de données et les Proxys ISP, chacun offrant différents niveaux d’anonymat et de fiabilité. Les proxys résidentiels offrent les taux de réussite les plus élevés en utilisant les adresses IP réelles des utilisateurs, ce qui les rend idéaux pour contourner la détection des bots. Les proxys de centre de données sont plus rapides et plus rentables, mais plus faciles à détecter. Les proxys ISP combinent les avantages des deux, offrant à la fois vitesse et niveaux de confiance élevés.
Fournisseurs recommandés :
- ciblage géographique
- Proxy rotatif
Pour le scraping SeleniumBase, les Proxys résidentiels de Bright Data sont l’option la plus fiable, garantissant des taux de réussite élevés et un minimum de blocages.
Utilisation d’un Proxy
L’exemple ci-dessous est configuré pour fonctionner avec l’un de nos Proxys ici chez Bright Data. Veillez à remplacer le nom d’utilisateur, le nom de la zone et le mot de passe par les vôtres.
pytest proxy_test.py --proxy=brd-customer-<VOTRE-NOM-D'UTILISATEUR>-zone-<VOTRE-NOM-DE-ZONE>:<VOTRE-MOT-DE-PASSE>@brd.superproxy.io:33335 -s
Lorsque nous l’exécutons, nous obtenons le résultat suivant. Si vous regardez attentivement, vous verrez que notre emplacement a changé.
=================================================== début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 144.202.4.246
nom d'hôte : 144-202-4-246.lum-int.io
ville : Piscataway
région : New Jersey
pays : États-Unis
emplacement : 40.4993,-74.3990
org : AS20473 The Constant Company, LLC
code postal : 08854
fuseau horaire : America/New_York
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 3,25 s ====================================================
Contrôlez votre emplacement
Avec nos Proxys, vous pouvez même choisir votre emplacement. Pour ce faire, utilisez le drapeau du pays. Chaque pays dispose d’un code à deux lettres que vous pouvez transmettre au Proxy.
pytest proxy_test.py --proxy=brd-customer-<VOTRE-NOM-D'UTILISATEUR>-zone-<VOTRE-NOM-DE-ZONE>:<VOTRE-MOT-DE-PASSE>[email protected]:33335 -s
Lorsque vous utilisez es (Espagne) comme code pays, vous êtes redirigé vers un Proxy en Espagne. Vous pouvez le vérifier dans la sortie ci-dessous.
=================================================== début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 176.119.14.158
ville : Paracuellos de Jarama
région : Madrid
pays : ES
emplacement : 40.5035,-3.5278
org : AS203020 HostRoyale Technologies Pvt Ltd
code postal : 28860
fuseau horaire : Europe/Madrid
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 3,98 s ====================================================
Vous pouvez consulter nos documents sur la géolocalisation ici.
Proxy rotatif
Avec seulement les bases de Python, vous pouvez créer un système de Proxy assez performant. Dans le code ci-dessous, nous utilisons un ensemble de codes de pays, mais ceux-ci peuvent facilement être remplacés par des adresses IP Proxy réelles. countries contient notre liste de codes de pays. Nous les parcourons ensuite et exécutons notre test de Proxy en utilisant les quatre codes de pays.
us: États-Unises: Espagneil: Israëlgb: Grande-Bretagne
import subprocess
#liste des codes pays
countries = [
"us",
"es",
"il",
"gb",
]
#parcourir les pays et créer une commande shell pour chacun d'entre eux
for country in countries:
command = f"pytest proxy_test.py --proxy=brd-customer-<VOTRE-NOM-D'UTILISATEUR>-<VOTRE-NOM-DE-ZONE>-country-{country}:[email protected]:33335 -s"
#exécuter la commande shell
subprocess.run(command, shell=True)
Vous pouvez exécuter cela comme un fichier Python normal.
python rotate_proxies.py
Lorsque vous exécutez le code, vous devriez obtenir un résultat similaire à celui-ci.
(Linux utilise --headless par défaut. Pour le remplacer, utilisez --headed / --gui. Pour le mode Xvfb, utilisez --xvfb. Vous pouvez également masquer ces informations en utilisant --headless / --headless2 / --uc.)
=================================================== début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 164.90.142.33
ville : Clifton
région : New Jersey
pays : États-Unis
localisation : 40.8344,-74.1377
org : AS14061 DigitalOcean, LLC
code postal : 07014
fuseau horaire : America/New_York
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 3,84 s ====================================================
(Linux utilise --headless par défaut. Pour le remplacer, utilisez --headed / --gui. Pour le mode Xvfb, utilisez --xvfb. Vous pouvez également masquer ces informations à l'aide de --headless / --headless2 / --uc.)
=================================================== Début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 5.180.9.15
ville : Madrid
région : Madrid
pays : ES
emplacement : 40.4066,-3.6724
org : AS203020 HostRoyale Technologies Pvt Ltd
code postal : 28007
fuseau horaire : Europe/Madrid
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 3,60 s ====================================================
(Linux utilise --headless par défaut. Pour le remplacer, utilisez --headed / --gui. Pour le mode Xvfb, utilisez --xvfb. Vous pouvez également masquer ces informations à l'aide de --headless / --headless2 / --uc.)
=================================================== Début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 64.79.233.151
ville : Tel Aviv
région : Tel Aviv
pays : IL
emplacement : 32.0809,34.7806
org : AS9009 M247 Europe SRL
fuseau horaire : Asia/Jerusalem
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 3,36 s ====================================================
(Linux utilise --headless par défaut. Pour le remplacer, utilisez --headed / --gui. Pour le mode Xvfb, utilisez --xvfb. Vous pouvez également masquer ces informations à l'aide de --headless / --headless2 / --uc.)
=================================================== Début de la session de test ===================================================
plateforme linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
répertoire racine : /home/nultinator/clients/bright-data/seleniumbase-Proxies
plugins : html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
1 élément collecté
proxy_test.py ip : 185.37.3.107
ville : Londres
région : Angleterre
pays : GB
localisation : 51.5085,-0.1257
org : AS9009 M247 Europe SRL
code postal : E1W
fuseau horaire : Europe/Londres
readme : https://ipinfo.io/missingauth.
==================================================== 1 réussi en 2,90 s ====================================================
Comme vous pouvez le constater, avec très peu de code, nous contrôlons des Proxies aux États-Unis, en Espagne, en Israël et en Grande-Bretagne.
Conclusion
Lors du scraping web, SeleniumBase ouvre des possibilités dans Selenium que beaucoup de gens trouvent impossibles. Tout au long de ce guide, vous avez appris à configurer des proxys, à contrôler votre géolocalisation et même à utiliser des proxys rotatifs. Ces outils vous aideront à contourner la plupart des mécanismes de blocage qui se dressent sur votre chemin.
Libérez tout le potentiel du scraping basé sur Selenium grâce aux services Proxy de pointe de Bright Data. Commencez votre essai gratuit dès aujourd’hui et découvrez une collecte de données fluide et fiable à grande échelle !