SeleniumBase wurde als Wrapper zum Ausführen von Selenium-Instanzen in einer Testumgebung entwickelt. Dennoch ist es weit mehr als nur ein Wrapper. SeleniumBase ermöglicht es uns, Selenium mit einem authentifizierten Proxy auszuführen.
Grundlegende Proxy-Probleme mit Selenium
Selenium bietet keine gute Proxy-Unterstützung. Zwar kann man ein --proxy-server Argument an Selenium übergeben, jedoch gibt es keine Unterstützung für authentifizierte Proxys. Es kommt noch schlimmer. Jahrelang war SeleniumWire die bevorzugte Option bei der Nutzung von Proxys mit Selenium. Die Integration war unglaublich einfach. Leider wurde SeleniumWire vor über einem Jahr als veraltet eingestuft und seit über zwei Jahren nicht mehr aktualisiert.

Erste Schritte
Um loszulegen, müssen wir SeleniumBase installieren und einen Testfall schreiben. Der Testfall steuert tatsächlich Selenium und führt unsere Webdriver-Instanz für uns aus.
Installation
pip install seleniumbase
Einen Testfall schreiben
Hier ist ein einfacher Testfall. Der folgende Code stellt eine Anfrage an die IPinfo API. Sobald wir unsere JSON-Antwort erhalten, parsen wir sie und geben ihren Inhalt in der Konsole aus.
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}")
Den Test ausführen
Um den Code tatsächlich auszuführen, müssen wir den Test starten. Anstatt python name_of_your_script.py zu verwenden, nutzen wir pytest.
Ohne Proxy
Wenn Sie Ihr Testskript ohne Proxy ausführen möchten, können Sie den folgenden Befehl verwenden.
pytest proxy_test.py -s
Sie erhalten eine ähnliche Antwort wie diese.
=================================================== 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 ====================================================
Proxy-Konfiguration
Um einen Proxy zu verwenden, müssen wir lediglich das Flag --proxy gefolgt von unserer Proxy-URL verwenden. Sehen Sie sich das folgende Format an.
--proxy=your_proxy_url:your_proxy_port
Kostenloser Proxy
Hier ist ein Beispiel mit einem kostenlosen Proxy. Die IP-Adresse ist 155.54.239.64 und wir kommunizieren über Port 80 damit.
--proxy=155.54.239.64:80
Authentifizierter Proxy
Authentifizierte Proxys werden auf die gleiche Weise behandelt. Bei einem authentifizierten Proxy müssen Sie lediglich Ihren Benutzernamen und Ihr Passwort in die URL einfügen.
proxy=<YOUR_USERNAME>:<YOUR_PASSWORD>@<PROXY_URL>:<PROXY_PORT>
Die besten authentifizierten Proxy-Typen und Anbieter
Bei der Verwendung authentifizierter Proxys mit Selenium sind die besten Optionen Residential-Proxys, Datacenter-Proxys und ISP-Proxys, die jeweils unterschiedliche Grade an Anonymität und Zuverlässigkeit bieten. Residential-Proxys bieten die höchsten Erfolgsraten, da sie echte Benutzer-IPs verwenden, was sie ideal zur Umgehung der Bot-Erkennung macht. Datacenter-Proxys sind schneller und kostengünstiger, aber leichter zu erkennen. ISP-Proxys vereinen die Vorteile beider Varianten und bieten Geschwindigkeit bei hohem Vertrauensniveau.
Empfohlene Anbieter:
- Geo-Targeting
- Rotierende Proxys
Für SeleniumBase-Scraping sind die Residential-Proxys von Bright Data die zuverlässigste Option, die hohe Erfolgsraten und minimale Blockierungen gewährleistet.
Ausführen mit einem Proxy
Das folgende Beispiel ist so konfiguriert, dass es mit einem unserer Proxys bei Bright Data ausgeführt wird. Achten Sie darauf, Benutzername, Zonenname und Passwort durch Ihre eigenen zu ersetzen.
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>@brd.superproxy.io:33335 -s
Wenn wir es ausführen, erhalten wir die folgende Ausgabe. Wenn Sie genau hinsehen, werden Sie feststellen, dass sich unser Standort geändert hat.
=================================================== 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 ====================================================
Ihren Standort steuern
Mit unseren Proxys können Sie sogar Ihren Standort wählen. Dies können Sie mit dem Flag country tun. Jedes Land verfügt über einen zweistelligen Ländercode, den Sie an den Proxy übergeben können.
pytest proxy_test.py --proxy=brd-customer-<YOUR-USERNAME>-zone-<YOUR-ZONE-NAME>:<YOUR-PASSWORD>[email protected]:33335 -s
Wenn Sie es (Spanien) als Ländercode verwenden, werden Sie über einen Proxy in Spanien geleitet. Dies können Sie in der folgenden Ausgabe überprüfen.
=================================================== 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 ====================================================
Unsere Geolokalisierungs-Dokumentation finden Sie hier.
Rotierende Proxys
Mit nur den Grundlagen von Python können Sie ein recht gutes Proxy-System erstellen. Im folgenden Code verwenden wir einen Satz von Ländercodes, diese können jedoch leicht durch tatsächliche Proxy-IPs ersetzt werden. countries enthält unsere Liste von Ländercodes. Anschließend durchlaufen wir diese und führen unseren Proxy-Test mit allen vier Ländercodes aus.
us: Vereinigte Staatenes: Spanienil: Israelgb: Großbritannien
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)
Sie können dies als normale Python-Datei ausführen.
python rotate_proxies.py
Wenn Sie den Code ausführen, sollten Sie eine ähnliche Ausgabe wie diese erhalten.
(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 ====================================================
Wie Sie sehen können, steuern wir mit nur sehr wenig Code Proxys in den USA, Spanien, Israel und Großbritannien.
Fazit
Beim Web-Scraping eröffnet SeleniumBase Möglichkeiten in Selenium, die viele Menschen für unmöglich halten. Im Laufe dieses Leitfadens haben Sie gelernt, wie Sie Proxys konfigurieren, Ihre Geolokalisierung steuern und sogar Proxys rotieren. Diese Werkzeuge helfen Ihnen, die meisten Blockierungsmechanismen zu umgehen, auf die Sie stoßen.
Schöpfen Sie das volle Potenzial von Selenium-basiertem Scraping mit den branchenführenden Proxy-Diensten von Bright Data aus. Starten Sie noch heute und erleben Sie nahtlose, zuverlässige Datenerfassung in großem Maßstab!