SeleniumBase wurde als Wrapper für die Ausführung von Selenium-Instanzen in einer Testumgebung entwickelt. Allerdings ist es weit mehr als nur ein Wrapper. SeleniumBase ermöglicht es uns, Selenium über einen authentifizierten Proxy auszuführen.
Inhärente Proxy-Probleme mit Selenium
Selenium bietet keine besonders gute Proxy-Unterstützung. Sie können zwar ein --proxy-server-Argument an Selenium übergeben, aber authentifizierte Proxys werden nicht unterstützt. Es kommt jedoch noch schlimmer. Jahrelang war SeleniumWire die erste Wahl, wenn es um die Verwendung von Proxys mit Selenium ging. Die Integration war unglaublich einfach. Leider wurde SeleniumWire vor über einem Jahr eingestellt und seit über zwei Jahren nicht mehr aktualisiert.

Erste Schritte
Um loszulegen, müssen wir SeleniumBase installieren und einen Testfall schreiben. Der Testfall steuert 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 sendet eine Anfrage an die IPinfo-API. Sobald wir unsere JSON-Antwort erhalten haben, führen wir das Parsing durch und geben ihren Inhalt auf 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")
#json-Antwort laden
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
#Dict durchlaufen und Inhalt ausgeben
for k,v in location_info.items():
print(f"{k}: {v}")
Aufruf des Tests
Um den Code tatsächlich auszuführen, müssen wir den Test ausführen. Anstelle von python name_of_your_script.py verwenden 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 Antwort, die in etwa so aussieht.
=================================================== Test-Sitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py IP: 23.28.108.255
Hostname: d28-23-255-108.dim.wideopenwest.com
Stadt: Westland
Region: Michigan
Land: USA
Standort: 42.3242, -83.4002
org: AS12083 WideOpenWest Finance LLC
postal: 48185
timezone: America/Detroit
readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 1,01 s ====================================================
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=Ihre_Proxy-URL:Ihr_Proxy-Port
Kostenloser Proxy
Hier ist ein Beispiel für die Verwendung eines kostenlosen Proxys. Die IP-Adresse lautet 155.54.239.64 und wir kommunizieren über Port 80.
--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=<IHR_BENUTZERNAME>:<IHR_PASSWORT>@<PROXY_URL>:<PROXY_PORT>
Beste authentifizierte Proxy-Typen und -Anbieter
Wenn Sie authentifizierte Proxys mit Selenium verwenden, sind Residential-Proxys, Datacenter-Proxys und ISP-Proxys die besten Optionen, die jeweils unterschiedliche Grade an Anonymität und Zuverlässigkeit bieten. Residential-Proxys bieten die höchsten Erfolgsraten, da sie echte Benutzer-IPs verwenden, wodurch sie sich ideal zum Umgehen der Bot-Erkennung eignen. Datacenter-Proxys sind schneller und kostengünstiger, aber leichter zu erkennen. ISP-Proxys kombinieren die Vorteile beider Arten und bieten Geschwindigkeit bei hohem Vertrauensniveau.
Empfohlene Anbieter:
- Geo-Targeting
- Rotierende Proxys
Für das Scraping mit SeleniumBase sind die Residential-Proxys von Bright Data die zuverlässigste Option, da sie hohe Erfolgsraten und minimale Blockierungen gewährleisten.
Ausführung mit einem Proxy
Das folgende Beispiel ist für die Ausführung mit einem unserer Proxys hier bei Bright Data konfiguriert. Ersetzen Sie den Benutzernamen, den Zonennamen und das Passwort durch Ihre eigenen Daten.
pytest proxy_test.py --proxy=brd-customer-<IHR-BENUTZERNAME>-zone-<IHR-ZONENNAME>:<IHR-PASSWORT>@brd.superproxy.io:33335 -s
Wenn wir es ausführen, erhalten wir die folgende Ausgabe. Wenn Sie genau hinschauen, werden Sie feststellen, dass sich unser Standort geändert hat.
=================================================== Test-Sitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py IP: 144.202.4.246
Hostname: 144-202-4-246.lum-int.io
Stadt: Piscataway
Region: New Jersey
Land: USA
Standort: 40.4993, -74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
timezone: America/New_York
readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 3,25 s ====================================================
Kontrolle Ihres Standorts
Mit unseren Proxys können Sie sogar Ihren Standort auswählen. Dazu verwenden Sie die Länderkennzeichnung. Jedes Land hat einen zweistelligen Ländercode, den Sie an den Proxy übergeben können.
pytest proxy_test.py --proxy=brd-customer-<IHR-BENUTZERNAME>-zone-<IHR-ZONENNAME>:<IHR-PASSWORT>[email protected]:33335 -s
Wenn Sie es (Spanien) als Ländercode verwenden, werden Sie über einen Proxy in Spanien geleitet. Sie können dies in der folgenden Ausgabe überprüfen.
=================================================== Test-Sitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py ip: 176.119.14.158
Stadt: Paracuellos de Jarama
Region: Madrid
Land: ES
Standort: 40.5035,-3.5278
org: AS203020 HostRoyale Technologies Pvt Ltd
postal: 28860
timezone: Europe/Madrid
readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 3,98 s ====================================================
Unsere Geolokalisierungsdokumente können Sie hier einsehen.
Rotierender Proxy
Mit nur grundlegenden Python-Kenntnissen können Sie ein ziemlich gutes Proxy-System erstellen. Im folgenden Code verwenden wir eine Reihe von Ländercodes, die jedoch leicht durch tatsächliche Proxy-IPs ersetzt werden können. countries enthält unsere Liste mit Ländercodes. Wir durchlaufen diese dann und führen unseren Proxy-Test mit allen vier Ländercodes durch.
us: Vereinigte Staatenes: Spanienil: Israelgb: Großbritannien
import subprocess
#Liste der Ländercodes
countries = [
"us",
"es",
"il",
"gb",
]
#Durchlaufen Sie die Länder und erstellen Sie für jedes Land einen Shell-Befehl.
for country in countries:
command = f"pytest proxy_test.py --proxy=brd-customer-<IHR-BENUTZERNAME>-<IHR-ZONE-NAME>-country-{country}:[email protected]:33335 -s"
#Shell-Befehl ausführen
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 Ausgabe ähnlich der folgenden erhalten.
(Linux verwendet standardmäßig --headless. Um dies zu überschreiben, verwenden Sie --headed / --gui. Für den Xvfb-Modus verwenden Sie stattdessen --xvfb. Oder Sie können diese Informationen mit --headless / --headless2 / --uc ausblenden.)
=================================================== Test-Sitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py ip: 164.90.142.33
Stadt: Clifton
Region: New Jersey
Land: USA
Standort: 40.8344, -74.1377
Organisation: AS14061 DigitalOcean, LLC
Postleitzahl: 07014
Zeitzone: America/New_York
Readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 3,84 s ====================================================
(Linux verwendet standardmäßig --headless. Um dies zu überschreiben, verwenden Sie --headed / --gui. Für den Xvfb-Modus verwenden Sie stattdessen --xvfb. Oder Sie können diese Informationen mit --headless / --headless2 / --uc ausblenden.
=================================================== Testsitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py IP: 5.180.9.15
Stadt: Madrid
Region: Madrid
Land: ES
Standort: 40.4066, -3.6724
Organisation: AS203020 HostRoyale Technologies Pvt Ltd
Postleitzahl: 28007
Zeitzone: Europe/Madrid
Readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 3,60 s ====================================================
(Linux verwendet standardmäßig --headless. Um dies zu überschreiben, verwenden Sie --headed / --gui. Für den Xvfb-Modus verwenden Sie stattdessen --xvfb. Oder Sie können diese Informationen mit --headless / --headless2 / --uc ausblenden.
=================================================== Testsitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py IP: 64.79.233.151
Stadt: Tel Aviv
Region: Tel Aviv
Land: IL
Standort: 32.0809,34.7806
Organisation: AS9009 M247 Europe SRL
Zeitzone: Asia/Jerusalem
Readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 3,36 s ====================================================
(Linux verwendet standardmäßig --headless. Um dies zu überschreiben, verwenden Sie --headed / --gui. Für den Xvfb-Modus verwenden Sie stattdessen --xvfb. Oder Sie können diese Informationen mit --headless / --headless2 / --uc ausblenden.)
=================================================== Testsitzung beginnt ===================================================
Plattform 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
1 Element gesammelt
proxy_test.py IP: 185.37.3.107
Stadt: London
Region: England
Land: GB
Standort: 51.5085, -0.1257
org: AS9009 M247 Europe SRL
postal: E1W
timezone: Europe/London
readme: https://ipinfo.io/missingauth.
==================================================== 1 bestanden in 2,90 s ====================================================
Wie Sie sehen können, steuern wir mit 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. In diesem Leitfaden haben Sie gelernt, wie Sie Proxys konfigurieren, Ihre Geolokalisierung steuern und sogar rotierende Proxys verwenden können. Diese Tools helfen Ihnen, die meisten Blockierungsmechanismen zu umgehen, die Ihnen im Weg stehen.
Schöpfen Sie das volle Potenzial des Selenium-basierten Scrapings mit den branchenführenden Proxy-Diensten von Bright Data aus. Testen Sie noch heute gratis die Testversion und erleben Sie nahtlose, zuverlässige Datenerfassung in großem Maßstab!