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 en utilisant un proxy authentifié.
Problèmes inhérents aux proxies avec Selenium
Selenium n’a pas un très bon support des proxies. Bien que vous puissiez passer un argument --proxy-server dans Selenium, il n’y a pas de support pour les proxies authentifiés. Et ça empire. Pendant des années, SeleniumWire était l’option de référence pour utiliser des proxies avec Selenium. L’intégration était incroyablement facile. Malheureusement, SeleniumWire a été déprécié 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 de webdriver pour nous.
Installation
pip install seleniumbase
Rédaction d’un cas de test
Voici un cas de test simple. Le code ci-dessous effectue une requête vers l’API IPinfo. Une fois que nous recevons 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):
#go to the site
self.driver.get("https://ipinfo.io/json")
#load the json response
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#iterate through the dict and print its contents
for k,v in location_info.items():
print(f"{k}: {v}")
Lancement du test
Pour exécuter réellement le code, nous devons lancer le test. Au lieu d’utiliser python name_of_your_script.py, nous allons en fait 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.
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 23.28.108.255
hostname: d28-23-255-108.dim.wideopenwest.com
city: Westland
region: Michigan
country: US
loc: 42.3242,-83.4002
org: AS12083 WideOpenWest Finance LLC
postal: 48185
timezone: America/Detroit
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 1.01s ====================================================
Configuration du proxy
Pour utiliser un proxy, nous devons simplement utiliser le drapeau --proxy suivi de l’url de notre proxy. Regardez le format ci-dessous.
--proxy=your_proxy_url:your_proxy_port
Proxy gratuit
Voici un exemple utilisant un proxy gratuit. L’adresse IP est 155.54.239.64 et nous communiquons avec elle 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é, vous devez simplement inclure votre nom d’utilisateur et votre mot de passe dans l’url.
proxy=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>
Meilleurs types de proxies authentifiés et fournisseurs
Lors de l’utilisation de proxies 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 de vraies IP d’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 vitesse et niveaux de confiance élevés.
Fournisseurs recommandés :
- ciblage géographique
- Proxies rotatifs
Pour le scraping avec SeleniumBase, les proxys résidentiels de Bright Data sont l’option la plus fiable, garantissant des taux de réussite élevés et un nombre minimal de blocages.
Exécution avec un proxy
L’exemple ci-dessous est configuré pour s’exécuter avec l’un de nos proxies ici chez Bright Data. Assurez-vous de 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-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -s
Lorsque nous l’exécutons, nous obtenons la sortie suivante. Si vous regardez attentivement, vous verrez que notre emplacement a changé.
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
city: Piscataway
region: New Jersey
country: US
loc: 40.4993,-74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.25s ====================================================
Contrôler votre emplacement
Avec nos proxies, vous pouvez même choisir votre emplacement. Vous pouvez le faire en utilisant le drapeau country. Chaque pays possède un code pays à deux lettres que vous pouvez transmettre au proxy.
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>[email protected]:33335 -s
Lorsque vous utilisez es (Espagne) comme code pays, vous êtes acheminé via un proxy en Espagne. Vous pouvez le vérifier dans la sortie ci-dessous.
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 176.119.14.158
city: Paracuellos de Jarama
region: Madrid
country: ES
loc: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28860
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.98s ====================================================
Vous pouvez consulter notre documentation sur la géolocalisation ici.
Proxies rotatifs
Avec seulement les bases de Python, vous pouvez créer un très bon système de proxy. Dans le code ci-dessous, nous utilisons un ensemble de codes pays, mais ceux-ci peuvent facilement être remplacés par de véritables IP de proxy. countries contient notre liste de codes pays. Nous parcourons ensuite cette liste et exécutons notre test de proxy en utilisant les quatre codes pays.
us: États-Unises: Espagneil: Israëlgb: Grande-Bretagne
import subprocess
#list of country codes
countries = [
"us",
"es",
"il",
"gb",
]
#iterate through the countries and make a shell command for each one
for country in countries:
command = f"pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-<YOUR-ZONE-NAME>-country-{country}:[email protected]:33335 -s"
#run the shell command
subprocess.run(command, shell=True)
Vous pouvez l’exécuter comme un fichier Python ordinaire.
python rotate_proxies.py
Lorsque vous exécutez le code, vous devriez recevoir une sortie similaire à celle-ci.
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 164.90.142.33
city: Clifton
region: New Jersey
country: US
loc: 40.8344,-74.1377
org: AS14061 DigitalOcean, LLC
postal: 07014
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.84s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 5.180.9.15
city: Madrid
region: Madrid
country: ES
loc: 40.4066,-3.6724
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28007
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.60s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 64.79.233.151
city: Tel Aviv
region: Tel Aviv
country: IL
loc: 32.0809,34.7806
org: AS9009 M247 Europe SRL
timezone: Asia/Jerusalem
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.36s ====================================================
(Linux uses --headless by default. To override, use --headed / --gui. For Xvfb mode instead, use --xvfb. Or you can hide this info by using --headless / --headless2 / --uc.)
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /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
collected 1 item
proxy_test.py ip: 185.37.3.107
city: London
region: England
country: GB
loc: 51.5085,-0.1257
org: AS9009 M247 Europe SRL
postal: E1W
timezone: Europe/London
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 2.90s ====================================================
Comme vous pouvez le voir, avec une très petite quantité de code, nous contrôlons des proxies aux États-Unis, en Espagne, en Israël et en Grande-Bretagne.
Conclusion
Lors du scraping du web, SeleniumBase ouvre des capacités dans Selenium que beaucoup de gens trouvent impossibles. Tout au long de ce guide, vous avez appris à configurer des proxies, à contrôler votre géolocalisation, et même à faire tourner des proxies. Ces outils vous aideront à contourner la plupart des mécanismes de blocage que vous rencontrerez.
Exploitez tout le potentiel du scraping basé sur Selenium avec les services de proxy leaders du secteur de Bright Data. Commencez dès aujourd’hui et bénéficiez d’une collecte de données fluide et fiable à grande échelle !