Verwendung von Proxys mit SeleniumBase

Richten Sie SeleniumBase mit authentifizierten Proxys ein, um Einschränkungen zu umgehen und den Erfolg Ihres Web-Scrapings zu verbessern.
8 min lesen
How to Use Proxies With SeleniumBase blog image

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.

SeleniumWire Deprecation

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 Staaten
  • es: Spanien
  • il: Israel
  • gb: 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!